Ejemplo n.º 1
0
        void FixedUpdate()
        {
            if (!sendMessagesAllowed)
            {
                return;
            }

            CheckSendRate();

            int   stateHash;
            float normalizedTime;

            if (!CheckAnimStateChanged(out stateHash, out normalizedTime))
            {
                return;
            }

            var animMsg = new AnimationMessage();

            animMsg.netId          = netId;
            animMsg.stateHash      = stateHash;
            animMsg.normalizedTime = normalizedTime;

            NetworkWriter writer = new NetworkWriter();

            WriteParameters(writer, false);
            animMsg.parameters = writer.ToArray();

            SendMessage((short)MsgType.Animation, animMsg);
        }
Ejemplo n.º 2
0
        // ------------------ server message handlers -------------------

        internal static void OnAnimationServerMessage(NetworkMessage netMsg)
        {
            AnimationMessage msg = new AnimationMessage();

            netMsg.ReadMessage(msg);
            if (LogFilter.logDev)
            {
                Debug.Log("OnAnimationMessage for netId=" + msg.netId + " conn=" + netMsg.conn);
            }

            GameObject go = NetworkServer.FindLocalObject(msg.netId);

            if (go == null)
            {
                return;
            }
            NetworkAnimator animSync = go.GetComponent <NetworkAnimator>();

            if (animSync != null)
            {
                NetworkReader reader = new NetworkReader(msg.parameters);
                animSync.HandleAnimMsg(msg, reader);

                NetworkServer.SendToReady(go, (short)MsgType.Animation, msg);
            }
        }
Ejemplo n.º 3
0
        internal void HandleAnimMsg(AnimationMessage msg, NetworkReader reader)
        {
            if (hasAuthority)
            {
                return;
            }

            // usually transitions will be triggered by parameters, if not, play anims directly.
            // NOTE: this plays "animations", not transitions, so any transitions will be skipped.
            // NOTE: there is no API to play a transition(?)
            if (msg.stateHash != 0)
            {
                m_Animator.Play(msg.stateHash, 0, msg.normalizedTime);
            }

            ReadParameters(reader, false);
        }
Ejemplo n.º 4
0
        // ------------------ client message handlers -------------------

        internal static void OnAnimationClientMessage(NetworkMessage netMsg)
        {
            AnimationMessage msg = netMsg.ReadMessage <AnimationMessage>();

            GameObject go = ClientScene.FindLocalObject(msg.netId);

            if (go == null)
            {
                return;
            }
            var animSync = go.GetComponent <NetworkAnimator>();

            if (animSync != null)
            {
                var reader = new NetworkReader(msg.parameters);
                animSync.HandleAnimMsg(msg, reader);
            }
        }