예제 #1
0
        private void ProcessObjectDataTag(FrontendObject frontendObject, ObjectDataTag objectDataTag)
        {
            frontendObject.Position = objectDataTag.Data.Position;
            frontendObject.Pivot    = objectDataTag.Data.Pivot;
            frontendObject.Color    = objectDataTag.Data.Color;
            frontendObject.Rotation = objectDataTag.Data.Rotation;
            frontendObject.Size     = objectDataTag.Data.Size;

            if (objectDataTag.Data is FEImageData imageData)
            {
                FrontendImage image = (FrontendImage)frontendObject;
                image.UpperLeft  = imageData.UpperLeft;
                image.LowerRight = imageData.LowerRight;
            }

            if (objectDataTag.Data is FEMultiImageData multiImageData)
            {
                FrontendMultiImage multiImage = (FrontendMultiImage)frontendObject;
                multiImage.PivotRotation = multiImageData.PivotRotation;
                multiImage.TopLeftUV     = multiImageData.TopLeftUV;
                multiImage.BottomRightUV = multiImageData.BottomRightUV;
            }

            if (objectDataTag.Data is FEColoredImageData coloredImageData)
            {
                FrontendColoredImage coloredImage = (FrontendColoredImage)frontendObject;
                coloredImage.VertexColors = coloredImageData.VertexColors;
            }
        }
예제 #2
0
        private FrontendObject ProcessObjectTypeTag(FrontendObject frontendObject, ObjectTypeTag objectTypeTag)
        {
            FrontendObject newInstance;

            switch (objectTypeTag.Type)
            {
            case FEObjType.FE_Image:
                newInstance = new FrontendImage(frontendObject);
                break;

            case FEObjType.FE_Group:
                newInstance = new FrontendGroup(frontendObject);
                break;

            case FEObjType.FE_String:
                newInstance = new FrontendString(frontendObject);
                break;

            case FEObjType.FE_MultiImage:
                newInstance = new FrontendMultiImage(frontendObject);
                break;

            case FEObjType.FE_ColoredImage:
                newInstance = new FrontendColoredImage(frontendObject);
                break;

            default:
                throw new IndexOutOfRangeException($"cannot handle object type: {objectTypeTag.Type}");
            }

            newInstance.Type = objectTypeTag.Type;

            return(newInstance);
        }
예제 #3
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id,
                                  ushort length)
        {
            FrontendMultiImage multiImage = (FrontendMultiImage)FrontendObject;
            int index = (id >> 8) - 0x61;

            multiImage.TextureFlags[index] = br.ReadUInt32();
        }