bool WriteParameters(NetworkWriter writer, bool forceAll = false)
        {
            ulong dirtyBits = forceAll ? (~0ul) : NextDirtyBits();

            writer.WriteUInt64(dirtyBits);
            for (int i = 0; i < parameters.Length; i++)
            {
                if ((dirtyBits & (1ul << i)) == 0)
                {
                    continue;
                }

                AnimatorControllerParameter par = parameters[i];
                if (par.type == AnimatorControllerParameterType.Int)
                {
                    int newIntValue = animator.GetInteger(par.nameHash);
                    writer.WriteInt32(newIntValue);
                }
                else if (par.type == AnimatorControllerParameterType.Float)
                {
                    float newFloatValue = animator.GetFloat(par.nameHash);
                    writer.WriteSingle(newFloatValue);
                }
                else if (par.type == AnimatorControllerParameterType.Bool)
                {
                    bool newBoolValue = animator.GetBool(par.nameHash);
                    writer.WriteBoolean(newBoolValue);
                }
            }
            return(dirtyBits != 0);
        }
Exemple #2
0
 public void Serialize(NetworkWriter writer)
 {
     writer.WritePackedUInt32(netId);
     writer.WriteBoolean(owner);
     writer.WriteUInt64(sceneId);
     writer.WriteVector3(position);
     writer.WriteQuaternion(rotation);
     writer.WriteVector3(scale);
     writer.WriteBytesAndSizeSegment(payload);
 }
Exemple #3
0
 public void Serialize(NetworkWriter writer)
 {
     writer.WritePackedUInt32(netId);
     writer.WriteBoolean(isLocalPlayer);
     writer.WritePackedUInt64(sceneId);
     if (sceneId == 0)
     {
         writer.WriteGuid(assetId);
     }
     writer.WriteVector3(position);
     writer.WriteQuaternion(rotation);
     writer.WriteVector3(scale);
     writer.WriteBytesAndSizeSegment(payload);
 }
        bool WriteParameters(NetworkWriter writer, bool forceAll = false)
        {
            ulong dirtyBits = forceAll ? (~0ul) : NextDirtyBits();

            writer.WritePackedUInt64(dirtyBits);
            for (int i = 0; i < namesParameters.Length; i++)
            {
                if ((dirtyBits & (1ul << i)) == 0)
                {
                    continue;
                }

                if (i < lastFloatParameters.Length)
                {
                    float newFloatValue = m_Motion.motionGraph.GetFloat(Animator.StringToHash(namesParameters[i]));
                    writer.WriteSingle(newFloatValue);
                }
                else if (i >= lastFloatParameters.Length &&
                         i < (lastFloatParameters.Length + lastIntParameters.Length))
                {
                    int newIntValue = m_Motion.motionGraph.GetInt(Animator.StringToHash(namesParameters[i]));
                    writer.WritePackedInt32(newIntValue);
                }
                else if (i >= (lastFloatParameters.Length + lastIntParameters.Length) &&
                         i < (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length))
                {
                    bool newBoolValue = m_Motion.motionGraph.GetSwitch(Animator.StringToHash(namesParameters[i]));
                    writer.WriteBoolean(newBoolValue);
                }
                else if (i >= (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length) &&
                         i < (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length + lastVectorParameters.Length))
                {
                    Vector3 newVectorValue = m_Motion.motionGraph.GetVector(Animator.StringToHash(namesParameters[i]));
                    writer.WriteVector3(newVectorValue);
                }
                else if (i >= (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length + lastVectorParameters.Length) &&
                         i < (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length + lastVectorParameters.Length + lastTransformParameters.Length))
                {
                    Transform newTransformValue = m_Motion.motionGraph.GetTransform(Animator.StringToHash(namesParameters[i]));
                    writer.WriteTransform(newTransformValue);
                }
            }
            return(dirtyBits != 0);
        }
Exemple #5
0
 protected override void SerializeItem(NetworkWriter writer, bool item) => writer.WriteBoolean(item);
Exemple #6
0
 public void Serialize(NetworkWriter writer)
 {
     writer.WriteString(sceneName);
     writer.WriteByte((byte)sceneOperation);
     writer.WriteBoolean(customHandling);
 }
Exemple #7
0
 public void Serialize(NetworkWriter writer)
 {
     writer.WritePackedUInt32(netId);
     writer.WriteBoolean(authority);
 }
Exemple #8
0
        public override bool OnSerialize(NetworkWriter writer, bool initialState)
        {
            if (initialState)
            {
                // Write number of dirty variables, in this case all of them are considered dirty.
                writer.WriteByte((byte)hashToType.Count);

                // Write all.
                foreach (var pair in hashToType)
                {
                    int hash = pair.Key;
                    var type = pair.Value;

                    writer.WriteInt32(hash);

                    switch (type)
                    {
                    case AnimatorControllerParameterType.Float:
                        writer.WriteSingle(floats[hash]);
                        break;

                    case AnimatorControllerParameterType.Int:
                        writer.WriteInt32(ints[hash]);
                        break;

                    case AnimatorControllerParameterType.Bool:
                        writer.WriteBoolean(bools[hash]);
                        break;
                    }
                }
            }
            else
            {
                ulong dirtyMask = this.syncVarDirtyBits;

                // Count the number of dirty variables and write that number to stream.
                byte dirtyCount = 0;
                for (int i = 0; i < 64; i++)
                {
                    ulong mask  = 1UL << i;
                    bool  isOne = (dirtyMask & mask) == mask;

                    if (isOne)
                    {
                        dirtyCount++;
                    }
                }
                writer.WriteByte(dirtyCount);

                // Write only changed variables.
                for (int i = 0; i < hashToType.Count; i++)
                {
                    ulong mask = 1UL << i;

                    bool changed = (dirtyMask & mask) == mask;

                    if (changed)
                    {
                        int hash = maskToHash[mask];
                        var type = hashToType[hash];

                        writer.WriteInt32(hash);
                        switch (type)
                        {
                        case AnimatorControllerParameterType.Float:
                            writer.WriteSingle(floats[hash]);
                            break;

                        case AnimatorControllerParameterType.Int:
                            writer.WriteInt32(ints[hash]);
                            break;

                        case AnimatorControllerParameterType.Bool:
                            writer.WriteBoolean(bools[hash]);
                            break;
                        }
                    }
                }
            }

            return(true);
        }