@ -395,7 +395,10 @@ 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)
fKinematicActor - > moveGlobalPosition ( kinPos ) ;
else
fKinematicActor - > setGlobalPosition ( kinPos ) ;
}
}
void plPXPhysicalControllerCore : : UpdateControllerAndPhysicalRep ( )
@ -406,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 & & fKinematicActor - > readBodyFlag ( NX_BF_KINEMATIC ) )
if ( fEnabled | | fKinematic )
{
if ( plSimulationMgr : : fExtraProfile )
SimLog ( " Moving kinematic to %f,%f,%f " , NewKinPos . x , NewKinPos . y , NewKinPos . z ) ;
@ -414,7 +417,7 @@ void plPXPhysicalControllerCore::UpdateControllerAndPhysicalRep()
fKinematicActor - > moveGlobalPosition ( NewKinPos ) ;
}
else if ( fEnabled )
else
{
if ( plSimulationMgr : : fExtraProfile )
SimLog ( " Setting kinematic to %f,%f,%f " , NewKinPos . x , NewKinPos . y , NewKinPos . z ) ;
@ -446,14 +449,14 @@ void plPXPhysicalControllerCore::MoveKinematicToController(hsPoint3& pos)
newPos . x = ( NxReal ) pos . fX ;
newPos . y = ( NxReal ) pos . fY ;
newPos . z = ( NxReal ) pos . fZ + kPhysZOffset ;
if ( fEnabled & & fKinematicActor - > readBodyFlag ( NX_BF_KINEMATIC ) )
if ( ( fEnabled | | fKinematic ) & & fBehavingLikeAnimatedPhys )
{
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 ) ;
// use the position
fKinematicActor - > moveGlobalPosition ( newPos ) ;
}
else if ( fEnabled )
else
{
if ( plSimulationMgr : : fExtraProfile )
SimLog ( " Setting kinematic from %f,%f,%f to %f,%f,%f " , pos . fX , pos . fY , pos . fZ + kPhysZOffset , kinPos . x , kinPos . y , kinPos . z ) ;
@ -488,9 +491,9 @@ void plPXPhysicalControllerCore::ISetKinematicLoc(const hsMatrix44& l2w)
// add z offset
kPos . fZ + = kPhysZOffset ;
// Update the physical position of kinematic
if ( fEnabled & & fKinematicActor - > readBodyFlag ( NX_BF_KINEMATIC ) )
if ( fEnabled | | fBehavingLikeAnimatedPhys )
fKinematicActor - > moveGlobalPosition ( plPXConvert : : Point ( kPos ) ) ;
else if ( fEnabled )
else
fKinematicActor - > setGlobalPosition ( plPXConvert : : Point ( kPos ) ) ;
}
void plPXPhysicalControllerCore : : IGetPositionSim ( hsPoint3 & pos ) const