public virtual void OnDeserialize(NetworkReader reader, bool initialState) { if (!initialState) { reader.ReadPackedUInt64(); } }
void ReadParameters(NetworkReader reader) { ulong dirtyBits = reader.ReadPackedUInt64(); 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 = reader.ReadPackedInt32(); Animator.SetInteger(par.nameHash, newIntValue); } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = reader.ReadSingle(); Animator.SetFloat(par.nameHash, newFloatValue); } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = reader.ReadBoolean(); Animator.SetBool(par.nameHash, newBoolValue); } } }
internal void DeSerializeObjectsDelta(NetworkReader reader) { ulong dirty = reader.ReadPackedUInt64(); for (int i = 0; i < syncObjects.Count; i++) { SyncObject syncObject = syncObjects[i]; if ((dirty & (1UL << i)) != 0) { syncObject.OnDeserializeDelta(reader); } } }
private void DeSerializeObjectsDelta(NetworkReader reader) { var dirty = reader.ReadPackedUInt64(); for (var i = 0; i < syncObjects.Count; i++) { var syncObject = syncObjects[i]; if ((dirty & (1UL << i)) != 0) { syncObject.OnDeserializeDelta(reader); } } }
public void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); isLocalPlayer = reader.ReadBoolean(); sceneId = reader.ReadPackedUInt64(); if (sceneId == 0) { assetId = reader.ReadGuid(); } position = reader.ReadVector3(); rotation = reader.ReadQuaternion(); scale = reader.ReadVector3(); payload = reader.ReadBytesAndSizeSegment(); }
internal void OnDeserializeAllSafely(NetworkBehaviour[] components, NetworkReader reader, bool initialState) { // read component dirty mask ulong dirtyComponentsMask = reader.ReadPackedUInt64(); // loop through all components and deserialize the dirty ones for (int i = 0; i < components.Length; ++i) { // is the dirty bit at position 'i' set to 1? ulong dirtyBit = (ulong)(1L << i); if ((dirtyComponentsMask & dirtyBit) != 0L) { OnDeserializeSafely(components[i], reader, initialState); } } }
void ReadParameters(NetworkReader reader) { ulong dirtyBits = reader.ReadPackedUInt64(); for (int i = 0; i < namesParameters.Length; i++) { if ((dirtyBits & (1ul << i)) == 0) { continue; } if (i < lastFloatParameters.Length) { float newFloatValue = reader.ReadSingle(); m_Motion.motionGraph.SetFloat(Animator.StringToHash(namesParameters[i]), newFloatValue); } else if (i >= lastFloatParameters.Length && i < (lastFloatParameters.Length + lastIntParameters.Length)) { int newIntValue = reader.ReadPackedInt32(); m_Motion.motionGraph.SetInt(Animator.StringToHash(namesParameters[i]), newIntValue); } else if (i >= (lastFloatParameters.Length + lastIntParameters.Length) && i < (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length)) { bool newBoolValue = reader.ReadBoolean(); m_Motion.motionGraph.SetSwitch(Animator.StringToHash(namesParameters[i]), newBoolValue); } else if (i >= (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length) && i < (lastFloatParameters.Length + lastIntParameters.Length + lastSwitchParameters.Length + lastVectorParameters.Length)) { Vector3 newVectorValue = reader.ReadVector3(); m_Motion.motionGraph.SetVector(Animator.StringToHash(namesParameters[i]), 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 = reader.ReadTransform(); m_Motion.motionGraph.SetTransform(Animator.StringToHash(namesParameters[i]), newTransformValue); } } }
void ReadParameters(NetworkReader reader) { // need to read values from NetworkReader even if animator is disabled ulong dirtyBits = reader.ReadPackedUInt64(); for (int i = 0; i < parameters.Length; i++) { if ((dirtyBits & (1ul << i)) == 0) { continue; } AnimatorControllerParameter par = parameters[i]; switch (par.type) { case AnimatorControllerParameterType.Int: { int newIntValue = reader.ReadPackedInt32(); SetInteger(par, newIntValue); break; } case AnimatorControllerParameterType.Float: { float newFloatValue = reader.ReadSingle(); SetFloat(par, newFloatValue); break; } case AnimatorControllerParameterType.Bool: { bool newBoolValue = reader.ReadBoolean(); SetBool(par, newBoolValue); break; } } } }
void ReadParameters(NetworkReader reader) { ulong dirtyBits = reader.ReadPackedUInt64(); 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 = reader.ReadPackedInt32(); animator.SetInteger(par.nameHash, newIntValue); } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = reader.ReadSingle(); // If interpolating, set the target. Otherwise, set the value immediately. if (interpolateFloatParameters) { floatParametersTargets[i] = newFloatValue; } else { animator.SetFloat(par.nameHash, newFloatValue); } } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = reader.ReadBoolean(); animator.SetBool(par.nameHash, newBoolValue); } } }
// zigzag decoding https://gist.github.com/mfuerstenau/ba870a29e16536fdbaba public static long ReadPackedInt64(this NetworkReader reader) { ulong data = reader.ReadPackedUInt64(); return(((long)(data >> 1)) ^ -((long)data & 1)); }
// http://sqlite.org/src4/doc/trunk/www/varint.wiki // NOTE: big endian. // Use checked() to force it to throw OverflowException if data is invalid public static uint ReadPackedUInt32(this NetworkReader reader) => checked ((uint)reader.ReadPackedUInt64());