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; } }
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); }
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(); }