mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 18:59:09 +00:00
@ -1507,8 +1507,13 @@ void plVirtualCam1::AddCameraToStack(plCameraModifier1* pCam)
|
||||
void plVirtualCam1::PushCamera(plCameraModifier1* pCam, hsBool bDefault)
|
||||
{
|
||||
// pushing the same camera, folks?
|
||||
// -- disallowed 2/13/2012 --
|
||||
if (pCam == GetCurrentStackCamera())
|
||||
{
|
||||
AddCameraToStack(pCam);
|
||||
return;
|
||||
}
|
||||
// make sure that we don't keep adding the default camera if we're already in it
|
||||
if (bDefault && pCam == GetCurrentStackCamera())
|
||||
return;
|
||||
|
||||
// look up whatever transition we might have specified
|
||||
@ -1680,13 +1685,14 @@ void plVirtualCam1::PopCamera(plCameraModifier1* pCam)
|
||||
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 (pCam==GetCurrentStackCamera() && pCam == fCameraStack[fCameraStack.size() - 2])
|
||||
// if so, pop off the dupe if we're going to the age default... otherwise, go crazy.
|
||||
if (fCameraStack.size() > 2 && pCam == GetCurrentStackCamera())
|
||||
{
|
||||
// pop but don't transition to a new camera
|
||||
// or do anything else:
|
||||
int theDupe = fCameraStack.size() - 1;
|
||||
if (pCam == fCameraStack[theDupe] && theDupe == 2)
|
||||
fCameraStack.pop_back();
|
||||
return;
|
||||
}
|
||||
|
||||
// are we mouse-looking?
|
||||
|
@ -483,7 +483,7 @@ NxScene* scene = plSimulationMgr::GetInstance()->GetScene(fWorldKey);
|
||||
NxCapsuleControllerDesc desc;
|
||||
desc.position.x = 0;
|
||||
desc.position.y = 0;
|
||||
desc.position.z = 0;
|
||||
desc.position.z = -10000; // No one should be building down there... (-2000 is kickable limit)
|
||||
desc.upDirection = NX_Z;
|
||||
desc.slopeLimit = kSLOPELIMIT;
|
||||
desc.skinWidth = kPhysxSkinWidth;
|
||||
@ -531,7 +531,9 @@ NxScene* scene = plSimulationMgr::GetInstance()->GetScene(fWorldKey);
|
||||
fKinematicActor->raiseActorFlag(NX_AF_DISABLE_COLLISION);
|
||||
#endif
|
||||
// set the matrix to be the same as the controller's actor... that should orient it to be the same
|
||||
fKinematicActor->moveGlobalPose(actor->getGlobalPose());
|
||||
// PhysX HACK TURD: Sometimes, using the ***wrong*** function is desirable...
|
||||
// Changing this to moveGlobalPose will cause camera regions to fire before linking in.
|
||||
fKinematicActor->setGlobalPose(actor->getGlobalPose());
|
||||
|
||||
// the proxy for the debug display
|
||||
//hsAssert(!fProxyGen, "Already have proxy gen, double read?");
|
||||
|
@ -73,9 +73,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
plArmatureMod* plCollisionDetector::IGetAvatarModifier(plKey key)
|
||||
{
|
||||
if (!key)
|
||||
return nil;
|
||||
|
||||
plSceneObject* avObj = plSceneObject::ConvertNoRef(key->ObjectIsLoaded());
|
||||
if (avObj)
|
||||
{
|
||||
@ -245,6 +242,8 @@ plCameraRegionDetector::~plCameraRegionDetector()
|
||||
|
||||
void plCameraRegionDetector::ITrigger(plKey hitter, bool entering, bool immediate)
|
||||
{
|
||||
if (fSavingSendMsg)
|
||||
DetectorLogRed("%s: Stale messages on ITrigger. This should never happen!", GetKeyName().c_str());
|
||||
if (fIsInside && entering)
|
||||
DetectorLogRed("%s: Duplicate enter! Did we miss an exit?", GetKeyName().c_str());
|
||||
else if (!fIsInside && !entering)
|
||||
@ -385,18 +384,11 @@ hsBool plObjectInVolumeDetector::MsgReceive(plMessage* msg)
|
||||
plCollideMsg* pCollMsg = plCollideMsg::ConvertNoRef(msg);
|
||||
if (pCollMsg)
|
||||
{
|
||||
fLastHitter = pCollMsg->fOtherKey;
|
||||
// If the avatar is disabled (flying around), don't trigger
|
||||
if (IIsDisabledAvatar(fLastHitter))
|
||||
if (IIsDisabledAvatar(pCollMsg->fOtherKey))
|
||||
return false;
|
||||
ITrigger(fLastHitter, (pCollMsg->fEntering != 0));
|
||||
|
||||
// If we never eval before the exit...
|
||||
if (fWaitingForEval)
|
||||
plgDispatch::Dispatch()->UnRegisterForExactType(plEvalMsg::Index(), GetKey());
|
||||
else
|
||||
ITrigger(pCollMsg->fOtherKey, (pCollMsg->fEntering != 0));
|
||||
plgDispatch::Dispatch()->RegisterForExactType(plEvalMsg::Index(), GetKey());
|
||||
fWaitingForEval = !fWaitingForEval;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -404,13 +396,8 @@ hsBool plObjectInVolumeDetector::MsgReceive(plMessage* msg)
|
||||
if (pEvalMsg)
|
||||
{
|
||||
fNumEvals++;
|
||||
// Don't dispatch if we're not in the age
|
||||
if (plArmatureMod* av = IGetAvatarModifier(fLastHitter))
|
||||
if (av->IsMidLink())
|
||||
return true;
|
||||
ISendSavedTriggerMsgs();
|
||||
plgDispatch::Dispatch()->UnRegisterForExactType(plEvalMsg::Index(), GetKey());
|
||||
fWaitingForEval = false;
|
||||
}
|
||||
|
||||
plPlayerPageMsg* pageMsg = plPlayerPageMsg::ConvertNoRef(msg);
|
||||
|
@ -99,19 +99,15 @@ protected:
|
||||
uint32_t fNumEvals;
|
||||
uint32_t fLastEnterEval;
|
||||
uint32_t fLastExitEval;
|
||||
bool fWaitingForEval;
|
||||
plKey fLastHitter;
|
||||
|
||||
public:
|
||||
|
||||
plObjectInVolumeDetector()
|
||||
: plCollisionDetector(), fSavedActivatorMsg(nil), fNumEvals(0), fLastEnterEval(0),
|
||||
fWaitingForEval(false), fLastHitter(nil)
|
||||
: plCollisionDetector(), fSavedActivatorMsg(nil), fNumEvals(0), fLastEnterEval(0), fLastExitEval(0)
|
||||
{ }
|
||||
|
||||
plObjectInVolumeDetector(int8_t type)
|
||||
: plCollisionDetector(type), fSavedActivatorMsg(nil), fNumEvals(0), fLastEnterEval(0),
|
||||
fWaitingForEval(false), fLastHitter(nil)
|
||||
: plCollisionDetector(type), fSavedActivatorMsg(nil), fNumEvals(0), fLastEnterEval(0), fLastExitEval(0)
|
||||
{ }
|
||||
|
||||
virtual ~plObjectInVolumeDetector() { }
|
||||
|
Reference in New Issue
Block a user