private static void WriteNetworkValue(ref NetOutgoingMessage outgoingMessage, object networkValue) { if (networkValue == null) throw new CoreException("NetworkValue is null"); else { if (networkValue is bool) outgoingMessage.Write((bool) networkValue); else if (networkValue is byte) outgoingMessage.Write((byte) networkValue); else if (networkValue is byte[]) { var tempByteArray = (byte[]) networkValue; outgoingMessage.Write(tempByteArray.Length); outgoingMessage.Write(tempByteArray); } else if (networkValue is char) outgoingMessage.Write(BitConverter.GetBytes((char) networkValue)); else if (networkValue is char[]) { var tempCharArray = (char[]) networkValue; outgoingMessage.Write(tempCharArray.Length); for (int i = 0; i < tempCharArray.Length; i++) { outgoingMessage.Write(BitConverter.GetBytes(tempCharArray[i])); } } else if (networkValue is Color) outgoingMessage.Write(((Color) networkValue).ToVector4()); else if (networkValue is double) outgoingMessage.Write((double) networkValue); else if (networkValue is float) outgoingMessage.Write((float) networkValue); else if (networkValue is int) outgoingMessage.Write((int) networkValue); else if (networkValue is long) outgoingMessage.Write((long) networkValue); else if (networkValue is Matrix) outgoingMessage.WriteMatrix((Matrix) networkValue); else if (networkValue is Quaternion) outgoingMessage.WriteRotation((Quaternion) networkValue, 24); else if (networkValue is sbyte) outgoingMessage.Write((sbyte) networkValue); else if (networkValue is short) outgoingMessage.Write((short) networkValue); else if (networkValue is string) outgoingMessage.Write((string) networkValue); else if (networkValue is uint) outgoingMessage.Write((uint) networkValue); else if (networkValue is ulong) outgoingMessage.Write((ulong) networkValue); else if (networkValue is ushort) outgoingMessage.Write((ushort) networkValue); else if (networkValue is Vector2) outgoingMessage.Write((Vector2) networkValue); else if (networkValue is Vector3) outgoingMessage.Write((Vector3) networkValue); else if (networkValue is Vector4) outgoingMessage.Write((Vector4) networkValue); else { throw new CoreException("NetworkValue type isn't supported"); } } }