void InternalSendMessage() { if (_lastMessage.CheckChangeGameObjectBox(transform, .01f, 0.01f, 0.01f)) { _lastMessage = transform.SetGameObjectFromTrasform(); // print("moved"); //_client.SetGameObjectDirect(_localId, transform.SetGameObjectFromTrasform()); _updater.AddUpdate(transform.SetGameObjectFromTrasform()); } }
/// <summary> /// Check all change box object state /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="dtTranslate"></param> /// <param name="dtAngel"></param> /// <param name="dtScale"></param> /// <returns></returns> public static bool CheckChangeGameObjectBox(this JediumTransformMessage a, Transform b, float dtTranslate, float dtAngel, float dtScale) { if ( CheckChangeBoxPosition(a, b, dtTranslate) || CheckChangeBoxScale(a, b, dtScale) || CheckChangeBoxRotation(a, b, dtAngel) ) { return(true); } return(false); }
public override void Init(JediumBehaviourSnapshot snapshot) { base.Init(snapshot); if (snapshot.BehaviourType != "Transform") { return; } JediumTransformSnapshot t = (JediumTransformSnapshot)snapshot; _lastMessage = new JediumTransformMessage(t.X, t.Y, t.Z, t.RotX, t.RotY, t.RotZ, t.RotW, t.ScaleX, t.ScaleY, t.ScaleZ); transform.position = new Vector3(t.X, t.Y, t.Z); transform.rotation = new Quaternion(t.RotX, t.RotY, t.RotZ, t.RotW); transform.localScale = new Vector3(t.ScaleX, t.ScaleY, t.ScaleZ); }
void InternalProcessMessage(JediumTransformMessage msg) { //вариант для owned - обьектов - только отправляем или посылаем, не вместе if (JediumCore.Test.Instance._clientId != _parent.OwnerId) { //только получить значения transform.SetTransformFromGameObjectBox(msg); return; } //send InternalSendMessage(); }
public override void ProcessMessagePack(Guid clientId, JediumBehaviourMessage[] messages) { if (messages[0].GetBehaviourType() != GetBehaviourIndex()) { return; } //we don't need to process all messages JediumTransformMessage amsg = (JediumTransformMessage)messages[messages.Length - 1]; _posX = amsg.X; _posY = amsg.Y; _posZ = amsg.Z; _quatX = amsg.RotX; _quatY = amsg.RotY; _quatZ = amsg.RotZ; _quatW = amsg.RotW; _scaleX = amsg.ScaleX; _scaleY = amsg.ScaleY; _scaleZ = amsg.ScaleZ; _parent.Actor.SendMessagePackToRegisteredClients(Guid.Empty, messages); }
public override bool ProcessUpdate(JediumBehaviourMessage message) { if (Initialized) { //empty update //TODO - animator //don't process it for animator if (message == null) { if (!AnimatorBased) { InternalSendMessage(); } return(false); } //receive if (!(message is JediumTransformMessage)) { return(false); } JediumTransformMessage tmsg = (JediumTransformMessage)message; InternalProcessMessage(tmsg); return(true); } return(false); }
/// <summary> /// Check change scale box object /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="dtScale"></param> /// <returns></returns> public static bool CheckChangeBoxScale(this JediumTransformMessage a, Transform b, float dtScale) { return((Mathf.Abs(Vector3.Distance(a.GetScaleFromBox(), b.localScale)) > dtScale) ? true : false); }
/// <summary> /// Check change rotation box object /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="dtAngel"></param> /// <returns></returns> public static bool CheckChangeBoxRotation(this JediumTransformMessage a, Transform b, float dtAngel) { Vector4 quaternion = new Vector4(b.rotation.x, b.rotation.y, b.rotation.z, b.rotation.w); return((Mathf.Abs(Vector3.Distance(a.GetRotationFromBox(), quaternion)) > dtAngel) ? true : false); }
/// <summary> /// Check change position box object /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="dtTranslate"></param> /// <returns></returns> public static bool CheckChangeBoxPosition(this JediumTransformMessage a, Transform b, float dtTranslate) { return((Mathf.Abs(Vector3.Distance(a.GetPostionFromBox(), b.position)) > dtTranslate) ? true : false); }
/// <summary> /// Get Scale Vector 3 from GameObject Box /// </summary> /// <param name="g"></param> /// <returns></returns> public static Vector3 GetScaleFromBox(this JediumTransformMessage g) { return(new Vector3(g.ScaleX, g.ScaleY, g.ScaleZ)); }
/// <summary> /// Get Rotation Vector 4 from GameObject Box /// </summary> /// <param name="g"></param> /// <returns></returns> public static Vector4 GetRotationFromBox(this JediumTransformMessage g) { return(new Vector4(g.RotX, g.RotY, g.RotZ, g.RotW)); }
/// <summary> /// Get Position Vector 3 from GameObject Box /// </summary> /// <param name="g"></param> /// <returns></returns> public static Vector3 GetPostionFromBox(this JediumTransformMessage g) { return(new Vector3(g.X, g.Y, g.Z)); }
public static void SetTransformFromGameObjectBox(this Transform t, JediumTransformMessage box) { t.position = new Vector3(box.X, box.Y, box.Z); t.rotation = new Quaternion(box.RotX, box.RotY, box.RotZ, box.RotW); t.localScale = new Vector3(box.ScaleX, box.ScaleY, box.ScaleZ); }