public void UpdatePosition(PosUpdateType type, Vector3 newPos, Quaternion newRot, bool teleport) { if (type == PosUpdateType.Pos) { newRot = _lastRot; } else if (type == PosUpdateType.Rot) { newPos = _lastPos; } _prevRot = _lastRot; _lastRot = newRot; if (Vector3.Distance(newPos, _lastPos) > TeleportThreshold || teleport) { _prevPos = _lastPos; _lastPos = newPos; _interpProgress = 1.1f; transform.position = newPos; return; } _prevPos = _lastPos; _lastPos = newPos; _interpProgress = 0f; }
public byte[] GetPosUpdateMessage(out PosUpdateType type) { var p = NeedSyncPosition; var r = NeedSyncRotation; type = PosUpdateType.None; if (p && r) { type = PosUpdateType.PosRot; var c = new S_UpdateEntityPosRotMessage { CommandID = (byte)PosUpdateType.PosRot, Position = Position, Rotation = PackedRotation, UID = _owner.UID }; return(ZeroFormatterSerializer.Serialize(c)); } if (p) { type = PosUpdateType.Pos; var c = new S_UpdateEntityPosMessage { CommandID = (byte)PosUpdateType.Pos, Position = Position, UID = _owner.UID }; return(ZeroFormatterSerializer.Serialize(c)); } if (r) { type = PosUpdateType.Rot; var c = new S_UpdateEntityRotMessage { CommandID = (byte)PosUpdateType.Rot, Rotation = PackedRotation, UID = _owner.UID }; return(ZeroFormatterSerializer.Serialize(c)); } return(null); }
public void UpdatePosition(uint uid, PosUpdateType type, Vector3 pos, Quaternion rot) { var e = GetEntity(uid); if (e) { e.UpdatePosition(type, pos, rot); } }
public void UpdatePosition(PosUpdateType type, Vector3 pos, Quaternion rot) { _mover.UpdatePosition(type, pos, rot, false); }