Browse Source

Merge pull request #302 from Hoikas/camera

Fix Teledahn and Kemo Camera Issues
Branan Purvine-Riley 12 years ago
parent
commit
70ea64eed2
  1. 12
      Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.cpp
  2. 14
      Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp
  3. 16
      Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.cpp
  4. 2
      Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.h

12
Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.cpp

@ -1666,20 +1666,10 @@ void plVirtualCam1::PushCamera(plCameraModifier1* pCam, bool bDefault)
void plVirtualCam1::PopCamera(plCameraModifier1* pCam)
{
// sanity / new default camera check
// sanity / new default camera check
if (fCameraStack.size() <= 1)
return;
// Crazy Special Casing Turd: [based on some Cyan crap]
// is it the current camera AND the same camera we would otherwise switch to?
// if so, pop off the dupe if we're going to the age default... otherwise, go crazy.
if (fCameraStack.size() > 2 && pCam == GetCurrentStackCamera())
{
int theDupe = fCameraStack.size() - 1;
if (pCam == fCameraStack[theDupe] && theDupe == 2)
fCameraStack.pop_back();
}
// are we mouse-looking?
bool mLook = false;
if (pCam->GetBrain() && pCam->GetBrain()->HasMovementFlag(S_SET_FREELOOK))

14
Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp

@ -1375,15 +1375,22 @@ bool plArmatureMod::MsgReceive(plMessage* msg)
if (ageLoadMsg)
{
if (ageLoadMsg->fLoaded)
{
// only the local player gets these
NetworkSynch(hsTimer::GetSysSeconds(), true);
EnablePhysics(true);
} else
else
fIsLinkedIn = false;
return true;
}
plAgeLoaded2Msg *agePreLoadMsg = plAgeLoaded2Msg::ConvertNoRef(msg);
if (agePreLoadMsg)
{
// all the age data is loaded -- add our physical controller to the age
ValidatePhysics();
EnablePhysics(true);
return true;
}
plAnimCmdMsg *cmdMsg = plAnimCmdMsg::ConvertNoRef(msg);
if (cmdMsg)
{
@ -1651,6 +1658,7 @@ void plArmatureMod::AddTarget(plSceneObject* so)
// non-players will unregister when they learn the truth.
if (IsLocallyOwned())
plgDispatch::Dispatch()->RegisterForExactType(plAgeLoadedMsg::Index(), GetKey());
plgDispatch::Dispatch()->RegisterForType(plAgeLoaded2Msg::Index(), GetKey());
// attach a clothingSDLModifier to handle clothing saveState
delete fClothingSDLMod;

16
Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.cpp

@ -248,10 +248,7 @@ void plSimulationMgr::Init()
hsAssert(!gTheInstance, "Initializing the sim when it's already been done");
gTheInstance = new plSimulationMgr();
if (gTheInstance->InitSimulation())
{
gTheInstance->RegisterAs(kSimulationMgr_KEY);
plgDispatch::Dispatch()->RegisterForExactType(plAgeLoadedMsg::Index(), gTheInstance->GetKey());
}
else
{
// There was an error when creating the PhysX simulation
@ -267,7 +264,6 @@ void plSimulationMgr::Shutdown()
hsAssert(gTheInstance, "Simulation manager missing during shutdown.");
if (gTheInstance)
{
plgDispatch::Dispatch()->UnRegisterForExactType(plAgeLoadedMsg::Index(), gTheInstance->GetKey());
gTheInstance->UnRegisterAs(kSimulationMgr_KEY); // this will destroy the instance
gTheInstance = nil;
}
@ -624,18 +620,6 @@ void plSimulationMgr::ISendUpdates()
}
}
bool plSimulationMgr::MsgReceive(plMessage *msg)
{
// Suspend/resume the simulation based on whether or not we're in an age...
if (plAgeLoadedMsg* aMsg = plAgeLoadedMsg::ConvertNoRef(msg))
{
fSuspended = !aMsg->fLoaded;
return true;
}
return hsKeyedObject::MsgReceive(msg);
}
/////////////////////////////////////////////////////////////////
//
// RESOLUTION & TIMEOUT PARAMETERS

2
Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.h

@ -75,8 +75,6 @@ public:
// Advance the simulation by the given number of seconds
void Advance(float delSecs);
bool MsgReceive(plMessage* msg);
// The simulation won't run at all if it is suspended
void Suspend() { fSuspended = true; }
void Resume() { fSuspended = false; }

Loading…
Cancel
Save