diff --git a/Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp b/Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp index 0d5509e7..299b1bc1 100644 --- a/Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp +++ b/Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp @@ -230,7 +230,7 @@ public: { plKeyImp* imp = (plKey)key; - fStream.WriteString_TEMP(imp->GetName()); + fStream.WriteString(imp->GetName()); fStream.WriteString(","); fStream.WriteString(plFactory::GetNameOfClass(imp->GetUoid().GetClassType())); diff --git a/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp b/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp index 070a1c0e..5233b8d2 100644 --- a/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp +++ b/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp @@ -650,6 +650,7 @@ void plArmatureMod::IInitDefaults() fStealthLevel = 0; fMouseFrameTurnStrength = 0.f; fSuspendInputCount = 0; + fIsLinkedIn = false; fMidLink = false; fAlreadyPanicLinking = false; fReverseFBOnIdle = false; @@ -1368,16 +1369,21 @@ hsBool plArmatureMod::MsgReceive(plMessage* msg) plLinkInDoneMsg *doneMsg = plLinkInDoneMsg::ConvertNoRef(msg); if (doneMsg) { + fIsLinkedIn = true; IFireBehaviorNotify(plHBehavior::kBehaviorTypeLinkIn, false); return true; } plAgeLoadedMsg *ageLoadMsg = plAgeLoadedMsg::ConvertNoRef(msg); - if (ageLoadMsg && ageLoadMsg->fLoaded) + if (ageLoadMsg) { - // only the local player gets these - NetworkSynch(hsTimer::GetSysSeconds(), true); - EnablePhysics(true); + if (ageLoadMsg->fLoaded) + { + // only the local player gets these + NetworkSynch(hsTimer::GetSysSeconds(), true); + EnablePhysics(true); + } else + fIsLinkedIn = false; return true; } @@ -2503,6 +2509,11 @@ bool plArmatureMod::IsMidLink() return fMidLink; } +bool plArmatureMod::IsLinkedIn() +{ + return fIsLinkedIn; +} + hsBool plArmatureMod::ConsumeJump() { if (!GetInputFlag(B_CONTROL_CONSUMABLE_JUMP)) diff --git a/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h b/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h index a5e445d9..93455aa9 100644 --- a/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h +++ b/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h @@ -318,6 +318,7 @@ public: int GetStealthLevel() const { return fStealthLevel; } bool IsOpaque(); + bool IsLinkedIn(); bool IsMidLink(); hsBool ConsumeJump(); // returns true if the jump keypress was available to consume @@ -401,6 +402,7 @@ protected: plArmatureUpdateMsg *fUpdateMsg; // Trying to be a good lad here and align all our bools and bytes... + bool fIsLinkedIn; // We have finished playing the LinkEffects and are properly in the age bool fMidLink; // We're in between a LeaveAge and an EnterAge bool fAlreadyPanicLinking; // Cleared when you enter an age. Prevents spamming the server with panic link requests. bool fUnconsumedJump; // We've pressed the jump key, but haven't jumped yet diff --git a/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp b/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp index ae8d6757..d213fc18 100644 --- a/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp +++ b/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp @@ -395,7 +395,7 @@ void plPXPhysicalControllerCore::IMatchKinematicToController() kinPos.z = (NxReal)cPos.z; if (plSimulationMgr::fExtraProfile) SimLog("Match setting kinematic from %f,%f,%f to %f,%f,%f",prevKinPos.x,prevKinPos.y,prevKinPos.z,kinPos.x,kinPos.y,kinPos.z ); - if (fBehavingLikeAnimatedPhys && fKinematic) // if NX_BF_KINEMATIC && (avatar is on a ladder or something) + if (fKinematicActor->readBodyFlag(NX_BF_KINEMATIC)) fKinematicActor->moveGlobalPosition(kinPos); else fKinematicActor->setGlobalPosition(kinPos); @@ -409,7 +409,7 @@ void plPXPhysicalControllerCore::UpdateControllerAndPhysicalRep() {//this means we are moving the controller and then synchnig the kin NxExtendedVec3 ControllerPos= fController->getPosition(); NxVec3 NewKinPos((NxReal)ControllerPos.x, (NxReal)ControllerPos.y, (NxReal)ControllerPos.z); - if (fEnabled || fKinematic) + if (fKinematicActor->readBodyFlag(NX_BF_KINEMATIC)) { if (plSimulationMgr::fExtraProfile) SimLog("Moving kinematic to %f,%f,%f",NewKinPos.x, NewKinPos.y, NewKinPos.z ); @@ -449,7 +449,7 @@ void plPXPhysicalControllerCore::MoveKinematicToController(hsPoint3& pos) newPos.x = (NxReal)pos.fX; newPos.y = (NxReal)pos.fY; newPos.z = (NxReal)pos.fZ+kPhysZOffset; - if (fBehavingLikeAnimatedPhys) + if (fKinematicActor->readBodyFlag(NX_BF_KINEMATIC)) { if (plSimulationMgr::fExtraProfile) SimLog("Moving kinematic from %f,%f,%f to %f,%f,%f",pos.fX,pos.fY,pos.fZ+kPhysZOffset,kinPos.x,kinPos.y,kinPos.z ); @@ -491,7 +491,7 @@ void plPXPhysicalControllerCore::ISetKinematicLoc(const hsMatrix44& l2w) // add z offset kPos.fZ += kPhysZOffset; // Update the physical position of kinematic - if (fBehavingLikeAnimatedPhys) + if (fKinematicActor->readBodyFlag(NX_BF_KINEMATIC)) fKinematicActor->moveGlobalPosition(plPXConvert::Point(kPos)); else fKinematicActor->setGlobalPosition(plPXConvert::Point(kPos)); diff --git a/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp b/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp index 42cf7ed5..84ef6799 100644 --- a/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp +++ b/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp @@ -928,9 +928,7 @@ void plSubworldRegionDetector::Write(hsStream* stream, hsResMgr* mgr) /////////////////////////////////// hsBool plPanicLinkRegion::MsgReceive(plMessage* msg) { - plCollideMsg* pCollMsg = plCollideMsg::ConvertNoRef(msg); - - if (pCollMsg) + if (plCollideMsg* pCollMsg = plCollideMsg::ConvertNoRef(msg)) { if (plNetClientApp::GetInstance()->GetLocalPlayerKey() != pCollMsg->fOtherKey) return true; @@ -940,13 +938,17 @@ hsBool plPanicLinkRegion::MsgReceive(plMessage* msg) plArmatureMod* avMod = IGetAvatarModifier(pCollMsg->fOtherKey); if (avMod) { - hsPoint3 kinPos; - if (avMod->GetController()) + if (avMod->IsLinkedIn()) { - avMod->GetController()->GetKinematicPosition(kinPos); - DetectorLogSpecial("Avatar is panic linking. KinPos at %f,%f,%f and is %s",kinPos.fX,kinPos.fY,kinPos.fZ,avMod->GetController()->IsEnabled() ? "enabled" : "disabled"); - } - avMod->PanicLink(fPlayLinkOutAnim); + hsPoint3 kinPos; + if (avMod->GetController()) + { + avMod->GetController()->GetKinematicPosition(kinPos); + DetectorLogSpecial("Avatar is panic linking. KinPos at %f,%f,%f and is %s",kinPos.fX,kinPos.fY,kinPos.fZ,avMod->GetController()->IsEnabled() ? "enabled" : "disabled"); + } + avMod->PanicLink(fPlayLinkOutAnim); + } else + DetectorLogRed("PANIC LINK %s before we actually linked in!", GetKey()->GetName().c_str()); } } diff --git a/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h b/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h index 519215d3..8333b663 100644 --- a/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h +++ b/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h @@ -237,8 +237,7 @@ class plPanicLinkRegion : public plCollisionDetector public: hsBool fPlayLinkOutAnim; - plPanicLinkRegion() : fPlayLinkOutAnim(true) {;} - ~plPanicLinkRegion(){;} + plPanicLinkRegion() : fPlayLinkOutAnim(true) { } virtual hsBool MsgReceive(plMessage* msg);