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());
     }
 }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
 /// <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);
 }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
 /// <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);
 }
Exemplo n.º 10
0
 /// <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));
 }
Exemplo n.º 11
0
 /// <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));
 }
Exemplo n.º 12
0
 /// <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));
 }
Exemplo n.º 13
0
 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);
 }