// If a hover motor has not been created, create one and start the hovering. private void ActivateMoveToTarget() { if (m_targetMotor == null) { // We're taking over after this. m_controllingPrim.ZeroMotion(true); /* Someday use the PID controller * m_targetMotor = new BSPIDVMotor("BSActorMoveToTarget-" + m_controllingPrim.LocalID.ToString()); * m_targetMotor.TimeScale = m_controllingPrim.MoveToTargetTau; * m_targetMotor.Efficiency = 1f; */ m_targetMotor = new BSVMotor("BSActorMoveToTarget-" + m_controllingPrim.LocalID.ToString(), m_controllingPrim.MoveToTargetTau, // timeScale BSMotor.Infinite, // decay time scale 1f // efficiency ); m_targetMotor.PhysicsScene = m_physicsScene; // DEBUG DEBUG so motor will output detail log messages. m_targetMotor.SetTarget(m_controllingPrim.MoveToTargetTarget); m_targetMotor.SetCurrent(m_controllingPrim.RawPosition); // m_physicsScene.BeforeStep += Mover; m_physicsScene.BeforeStep += Mover2; } else { // If already allocated, make sure the target and other paramters are current m_targetMotor.SetTarget(m_controllingPrim.MoveToTargetTarget); m_targetMotor.SetCurrent(m_controllingPrim.RawPosition); } }
// Usually called when target velocity changes to set the current velocity and the target // into the movement motor. public void SetVelocityAndTarget(OMV.Vector3 vel, OMV.Vector3 targ, bool inTaintTime) { m_physicsScene.TaintedObject(inTaintTime, m_controllingPrim.LocalID, "BSActorAvatarMove.setVelocityAndTarget", delegate() { if (m_velocityMotor != null) { m_velocityMotor.Reset(); m_velocityMotor.SetTarget(targ); m_velocityMotor.SetCurrent(vel); m_velocityMotor.Enabled = true; m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,SetVelocityAndTarget,vel={1}, targ={2}", m_controllingPrim.LocalID, vel, targ); m_waitingForLowVelocityForStationary = 0; } }); }
// Usually called when target velocity changes to set the current velocity and the target // into the movement motor. public void SetVelocityAndTarget(OMV.Vector3 vel, OMV.Vector3 targ, bool inTaintTime) { m_physicsScene.TaintedObject(inTaintTime, m_controllingPrim.LocalID, "BSActorAvatarMove.setVelocityAndTarget", delegate() { if (m_velocityMotor != null) { // if (targ == OMV.Vector3.Zero) // Util.PrintCallStack(); // // Console.WriteLine("SetVelocityAndTarget, {0} {1}", vel, targ); m_velocityMotor.Reset(); m_velocityMotor.SetTarget(targ); m_velocityMotor.SetCurrent(vel); m_velocityMotor.Enabled = true; } }); }
// If a hover motor has not been created, create one and start the hovering. private void ActivateMoveToTarget() { if (m_targetMotor == null) { // We're taking over after this. m_controllingPrim.ZeroMotion(true); /* Someday use the PID controller m_targetMotor = new BSPIDVMotor("BSActorMoveToTarget-" + m_controllingPrim.LocalID.ToString()); m_targetMotor.TimeScale = m_controllingPrim.MoveToTargetTau; m_targetMotor.Efficiency = 1f; */ m_targetMotor = new BSVMotor("BSActorMoveToTarget-" + m_controllingPrim.LocalID.ToString(), m_controllingPrim.MoveToTargetTau, // timeScale BSMotor.Infinite, // decay time scale 1f // efficiency ); m_targetMotor.PhysicsScene = m_physicsScene; // DEBUG DEBUG so motor will output detail log messages. m_targetMotor.SetTarget(m_controllingPrim.MoveToTargetTarget); m_targetMotor.SetCurrent(m_controllingPrim.RawPosition); // m_physicsScene.BeforeStep += Mover; m_physicsScene.BeforeStep += Mover2; } else { // If already allocated, make sure the target and other paramters are current m_targetMotor.SetTarget(m_controllingPrim.MoveToTargetTarget); m_targetMotor.SetCurrent(m_controllingPrim.RawPosition); } }