public void MoveToHome() { if (DebugMove) { Console.WriteLine($"{Name}.MoveToHome()"); } MonsterState = State.Return; AttackTarget = null; var home = GetPosition(PositionType.Home); if (Location.Equals(home)) { Sleep(); return; } NextCancelTime = Timers.RunningTime + 5.0f; MoveTo(home, RunRate); var mvp = GetMovementParameters(); mvp.DistanceToObject = 0.6f; PhysicsObj.MoveToPosition(new Physics.Common.Position(home), mvp); IsMoving = true; }
public void MoveWeenie(Position to, float distanceToObject, bool finalHeading) { if (MoveSpeed == 0.0f) { GetMovementSpeed(); } var moveToPosition = new Motion(this, to); moveToPosition.MoveToParameters.DistanceToObject = distanceToObject; moveToPosition.MoveToParameters.MovementParameters |= MovementParams.StopCompletely; moveToPosition.MoveToParameters.MovementParameters &= ~MovementParams.UseSpheres; if (finalHeading) { moveToPosition.MoveToParameters.MovementParameters |= MovementParams.UseFinalHeading; } var physPos = new Physics.Common.Position(to); moveToPosition.MoveToParameters.DesiredHeading = physPos.Frame.get_heading(); SetWalkRunThreshold(moveToPosition, to); if (!InitSticky) { PhysicsObj.add_moveto_listener(OnMoveComplete); PhysicsObj.add_sticky_listener(OnSticky); PhysicsObj.add_unsticky_listener(OnUnsticky); InitSticky = true; } var mvp = GetMovementParameters(); mvp.CanWalk = true; mvp.StopCompletely = true; mvp.UseSpheres = false; mvp.DistanceToObject = distanceToObject; mvp.UseFinalHeading = finalHeading; mvp.DesiredHeading = physPos.Frame.get_heading(); PhysicsObj.MoveToPosition(physPos, mvp); IsMoving = true; MonsterState = State.Awake; IsAwake = true; EnqueueBroadcastMotion(moveToPosition); }
public void MoveToHome() { MonsterState = State.Return; AttackTarget = null; var home = GetPosition(PositionType.Home); if (Location.Equals(home)) { return; } MoveTo(home, RunRate); PhysicsObj.MoveToPosition(new Physics.Common.Position(home), GetMovementParameters()); IsMoving = true; }
/// <summary> /// Sends a network message for moving a creature to a new position /// </summary> public void MoveTo(Position position, float runRate = 1.0f, bool setLoc = true, float?walkRunThreshold = null, float?speed = null) { // build and send MoveToPosition message to client var motion = GetMoveToPosition(position, runRate, walkRunThreshold, speed); EnqueueBroadcastMotion(motion); if (!setLoc) { return; } // start executing MoveTo iterator on server if (!PhysicsObj.IsMovingOrAnimating) { PhysicsObj.UpdateTime = Physics.Common.PhysicsTimer.CurrentTime; } var mvp = new MovementParameters(motion.MoveToParameters); PhysicsObj.MoveToPosition(new Physics.Common.Position(position), mvp); AddMoveToTick(); }