Example #1
0
        private static unsafe void WriteComposite(this IUIPropertyWriter targetWriter, Type type, string s, IntPtr ptr, TypeDecomposer.FieldData fieldData, MemoryBinaryWriter extraBytesStream, long extraByteStreamOffset, UIPropertyWriterContext context)
        {
            var elements = s.Split(' ').Where(x => targetWriter.CanParse(x)).Take(4).ToArray();

            switch (elements.Length)
            {
            case 0:
                return;

            case 1:
                targetWriter.DoCompositeWrite(type, ptr, fieldData, elements[0], elements[0], elements[0], elements[0], extraBytesStream, extraByteStreamOffset, context);
                return;

            case 2:
                targetWriter.DoCompositeWrite(type, ptr, fieldData, elements[0], elements[1], elements[0], elements[1], extraBytesStream, extraByteStreamOffset, context);
                return;

            case 3:
                targetWriter.DoCompositeWrite(type, ptr, fieldData, elements[0], elements[1], elements[1], elements[2], extraBytesStream, extraByteStreamOffset, context);
                return;

            default:
                targetWriter.DoCompositeWrite(type, ptr, fieldData, elements[0], elements[1], elements[2], elements[3], extraBytesStream, extraByteStreamOffset, context);
                return;
            }
        }
Example #2
0
        private static void DoCompositeWrite(this IUIPropertyWriter targetWriter, Type type, IntPtr ptr, TypeDecomposer.FieldData fieldData, string sx, string sy, string sz, string sw, MemoryBinaryWriter extraBytesStream, long extraByteStreamOffset, UIPropertyWriterContext context)
        {
            var size = UnsafeUtility.SizeOf(type);

            targetWriter.Write(sx, ptr, new TypeDecomposer.FieldData
            {
                offset           = fieldData.offset,
                length           = size,
                type             = type,
                isAssetReference = false
            }, extraBytesStream, extraByteStreamOffset, context);
            targetWriter.Write(sy, ptr, new TypeDecomposer.FieldData
            {
                offset           = fieldData.offset + size,
                length           = size,
                type             = type,
                isAssetReference = false
            }, extraBytesStream, extraByteStreamOffset, context);
            targetWriter.Write(sz, ptr, new TypeDecomposer.FieldData
            {
                offset           = fieldData.offset + (size * 2),
                length           = size,
                type             = type,
                isAssetReference = false
            }, extraBytesStream, extraByteStreamOffset, context);
            targetWriter.Write(sw, ptr, new TypeDecomposer.FieldData
            {
                offset           = fieldData.offset + (size * 3),
                length           = size,
                type             = type,
                isAssetReference = false
            }, extraBytesStream, extraByteStreamOffset, context);
        }