Esempio n. 1
0
        private IEnumerator BroadcastTransformPosition()
        {
            while (true)
            {
                if (Vector3.Magnitude(lastPosition - transform.position) > Vector3.kEpsilon)
                {
                    lastPosition     = transform.position;
                    isFinishedMoving = false;
                    SendService.SendMessage(new Sub60MovingFastPositionSetCommand(Identity.EntityId,
                                                                                  UnitScaler.UnScaleYtoZ(transform.position)).ToPayload());
                }
                else if (!isFinishedMoving)
                {
                    lastPosition     = transform.position;
                    isFinishedMoving = true;

                    //TODO: Handle rotation
                    //Send a stop if we stopped moving
                    SendService.SendMessage(new Sub60FinishedMovingCommand(Identity.EntityId,
                                                                           UnitScaler.ScaleYRotation(transform.rotation.eulerAngles.y),
                                                                           UnitScaler.UnScale(transform.position).ToNetworkVector3(), RoomQueryService.RoomIdForPlayerById(Identity.EntityId), ZoneData.ZoneId).ToPayload());
                }

                yield return(new WaitForSeconds(1.0f / BroadcastsPerSecond));
            }
        }
 /// <inheritdoc />
 public Task UpdatedMovementLocation(Vector3 position, Quaternion rotation)
 {
     return(SendService.SendMessage(new Sub60MovingFastPositionSetCommand(PlayerSlotModel.SlotSelected,
                                                                          UnitScaler.UnScaleYtoZ(position)).ToPayload()));
 }