internal override void WriteObjectValue(RSBinaryWriter _binaryWriter, object _object) { if (_object == null || _object.Equals(null)) { WriteUnsupportedTypeValue(_binaryWriter, eTypeTag.NULL); return; } // Handle serialization based on object type tag Type _objectType = _object.GetType(); eTypeTag _typeTag = TypeMetadata.GetTypeTag(_objectType); switch (_typeTag) { case eTypeTag.UNSUPPORTED: Debug.LogWarning(string.Format("[RS] Serialization isnt supported for type={0}.", _objectType)); WriteUnsupportedTypeValue(_binaryWriter, _typeTag); break; case eTypeTag.PRIMITIVE: WritePrimitiveTypeValue(_binaryWriter, _object, _objectType); break; case eTypeTag.STRUCT: WriteStructTypeValue(_binaryWriter, _object, _objectType); break; case eTypeTag.STRING: WriteStringTypeValue(_binaryWriter, _object, _objectType); break; case eTypeTag.CLASS: WriteObjectReferenceTypeValue(_binaryWriter, _object, _objectType, _typeTag); break; default: Debug.LogWarning(string.Format("[RS] Unknown type={0}.", _typeTag)); break; } }