private void SendMove(MoveState state, Point3d position, int targetId = 0) { m_lastMoveTS = DateTime.Now; SSpriteMove message = new SSpriteMove(); message.ID = entityId; message.pos = Entity.Point3dToV3(position); message.state = state; message.targetId = targetId; Broadcast(message); }
private void OnRecvSpriteMove(IChannel channel, Message message) { SSpriteMove msg = message as SSpriteMove; NetworkEntity sprite = networkEntities[msg.ID]; NetworkEntity target = null; if (msg.targetId != 0) { target = networkEntities[msg.targetId]; } ISpriteBehavior behavior = (ISpriteBehavior)(sprite.behavior); Vector3 position = new Vector3(msg.pos.x, msg.pos.y, msg.pos.z); switch (msg.state) { case MoveState.BEGIN: { if (msg.targetId != 0) { behavior.BeginChase(position, (ICreatureBehavior)target.behavior); } else { behavior.BeginBack(position); } break; } case MoveState.STEP: { behavior.MoveStep(position); break; } case MoveState.END: { if (msg.targetId != 0) { behavior.EndChase(position); } else { behavior.EndBack(position); } break; } default: break; } }