コード例 #1
0
        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;
            }
        }