/// <summary> /// Custom Serialization /// </summary> /// <param name="writer"></param> /// <param name="initialState"></param> /// <returns></returns> public override bool OnSerialize(NetworkWriter writer, bool initialState) { bool changed = base.OnSerialize(writer, initialState); if (initialState) { for (int i = 0; i < animator.layerCount; i++) { if (animator.IsInTransition(i)) { AnimatorStateInfo st = animator.GetNextAnimatorStateInfo(i); writer.WriteInt(st.fullPathHash); writer.WriteFloat(st.normalizedTime); } else { AnimatorStateInfo st = animator.GetCurrentAnimatorStateInfo(i); writer.WriteInt(st.fullPathHash); writer.WriteFloat(st.normalizedTime); } writer.WriteFloat(animator.GetLayerWeight(i)); } WriteParameters(writer, initialState); return(true); } return(changed); }
public static void WriteRect(this NetworkWriter writer, Rect value) { writer.WriteFloat(value.xMin); writer.WriteFloat(value.yMin); writer.WriteFloat(value.width); writer.WriteFloat(value.height); }
public static void WriteQuaternion(this NetworkWriter writer, Quaternion value) { writer.WriteFloat(value.x); writer.WriteFloat(value.y); writer.WriteFloat(value.z); writer.WriteFloat(value.w); }
public static void WriteColor(this NetworkWriter writer, Color value) { writer.WriteFloat(value.r); writer.WriteFloat(value.g); writer.WriteFloat(value.b); writer.WriteFloat(value.a); }
public static void WriteVector4(this NetworkWriter writer, Vector4 value) { writer.WriteFloat(value.x); writer.WriteFloat(value.y); writer.WriteFloat(value.z); writer.WriteFloat(value.w); }
bool WriteParameters(NetworkWriter writer, bool forceAll = false) { ulong dirtyBits = forceAll ? (~0ul) : NextDirtyBits(); writer.WriteULong(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.WriteInt(newIntValue); } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = animator.GetFloat(par.nameHash); writer.WriteFloat(newFloatValue); } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = animator.GetBool(par.nameHash); writer.WriteBool(newBoolValue); } } return(dirtyBits != 0); }
public static void WriteFloatNullable(this NetworkWriter writer, float?value) { writer.WriteBool(value.HasValue); if (value.HasValue) { writer.WriteFloat(value.Value); } }
public static void WriteMatrix4x4(this NetworkWriter writer, Matrix4x4 value) { writer.WriteFloat(value.m00); writer.WriteFloat(value.m01); writer.WriteFloat(value.m02); writer.WriteFloat(value.m03); writer.WriteFloat(value.m10); writer.WriteFloat(value.m11); writer.WriteFloat(value.m12); writer.WriteFloat(value.m13); writer.WriteFloat(value.m20); writer.WriteFloat(value.m21); writer.WriteFloat(value.m22); writer.WriteFloat(value.m23); writer.WriteFloat(value.m30); writer.WriteFloat(value.m31); writer.WriteFloat(value.m32); writer.WriteFloat(value.m33); }
public static void WritePlane(this NetworkWriter writer, Plane value) { writer.WriteVector3(value.normal); writer.WriteFloat(value.distance); }
public static void WriteSingle(this NetworkWriter writer, float value) => writer.WriteFloat(value);