Meta Editor I Started On
Posted: Sat Apr 19, 2008 8:09 pm
I've started working on a meta editor and plugin system similar to Anthony's, but it has its differences too. This is not read from a map yet, it just creates an example Bitmap plugin and displays it. It only has non halo things for my plugin system so far, I'll implement strings and idents and such later when I start with the maps.
Heres the plugin that it is displaying so you can get an idea of how my plugin system would work:
Heres the plugin that it is displaying so you can get an idea of how my plugin system would work:
Code: Select all
public class bitm : Meta
{
EnumType Bitmap_Type;
public class EnumType : Enum16
{
public override void AddOptions()
{
AddOption("2D Textures", 0);
AddOption("3D Textures", 1);
AddOption("CubeMap", 2);
AddOption("Sprite", 3);
AddOption("UI Bitmap", 4);
}
}
EnumFormat Bitmap_Format;
public class EnumFormat : Enum16
{
public override void AddOptions()
{
AddOption("DXT1 Encoded", 0);
AddOption("DXT2/3 Encoded", 1);
AddOption("DXT4/5 Encoded", 2);
AddOption("16-Bit Colour", 3);
AddOption("32-Bit Colour", 4);
AddOption("Monochrome", 5);
}
}
EnumUsage Bitmap_Usage;
public class EnumUsage : Enum16
{
public override void AddOptions()
{
AddOption("Alpha Blend", 0);
AddOption("Default", 1);
AddOption("Height Map", 2);
AddOption("Light Map", 3);
AddOption("Vector Map", 4);
AddOption("Height Map BLUE 255", 5);
AddOption("embm", 6);
AddOption("Height Map A8L8", 6);
AddOption("Height Map G8B8", 7);
AddOption("Height Map G8B8 /w Alpha", 8);
}
}
BitMaskFormat Bitmap_Format_Flags;
public class BitMaskFormat : BitMask16
{
protected override void AddBits()
{
AddBit("Enable Diffusion Dithering", 0);
AddBit("Disable Height map compression", 1);
AddBit("Uniform Sprite Sequnces", 2);
AddBit("Filthy Sprite Bugfix", 3);
AddBit("Use Sharp Bump Filter", 4);
AddBit("unused", 5);
AddBit("Use Clamped/Mirrored Bump Filter", 6);
AddBit("Invert Detail Fade", 7);
AddBit("Swap x-y Vector Components", 8);
AddBit("Convert From Signed", 9);
AddBit("Convert To Signed", 10);
AddBit("Import Mipmap Chains", 11);
AddBit("Internationally True Color", 12);
}
}
Float Detail_Fade_Factor;
Float Sharpen_Amount;
Float Bump_Height;
EnumSpriteBudgetSize Sprite_Budget_Size;
public class EnumSpriteBudgetSize : Enum16
{
public override void AddOptions()
{
AddOption("32x32", 0);
AddOption("64x64", 1);
AddOption("128x128", 2);
AddOption("256x256", 3);
AddOption("512x512", 4);
}
}
Int16 Sprite_Budget_Count_Int16;
Int16 Color_Plate_Width;
Int16 Color_Plate_Height;
Int32 Compressed_Color_Plate_Data;
[Size(12)]
Unused Unused_Offset32;
Float Blur_Filter_Size;
Float Alpha_Bias;
Float MipMap_Count;
EnumSpriteUsage Sprite_Usage;
public class EnumSpriteUsage : Enum16
{
public override void AddOptions()
{
AddOption("Blend/Add/Subtract/Max", 0);
AddOption("Multiply/Min", 1);
AddOption("Double Multiply", 2);
}
}
Int16 Sprite_Spacing;
EnumFaceFormat Face_Format;
public class EnumFaceFormat : Enum16
{
public override void AddOptions()
{
AddOption("Default", 0);
AddOption("Force G8B8", 1);
AddOption("Force DXT1", 2);
AddOption("Force DXT3", 3);
AddOption("Force DXT5", 4);
AddOption("Force Alpha-Luminance8", 5);
AddOption("Force A4R4G4B4", 6);
}
}
Reflexive<SequencesChunk> Sequences;
public class SequencesChunk : Chunk
{
// <string32 name="Name" offset="0" visible="True" />
Int16 First_Bitmap_Index;
Int16 Bitmap_Count;
[Size(16)]
Unused Unused_Offset36;
public Reflexive<SpritesChunk> Sprites;
public class SpritesChunk : Chunk
{
Int32 Bitmap_Index;
Unused Unused_Offset4;
Float Left;
Float Right;
Float Top;
Float Bottom;
Float Reg_Point_X;
Float Reg_Point_Y;
}
}
Reflexive<BitmapDataChunk> Bitmap_Data;
public class BitmapDataChunk : Chunk
{
//<tag name="Tag" offset="0" visible="False" />
Int16 Width;
Int16 Height;
Int16 Depth;
Int16 Type;
Int16 Format;
FlagsBitmask Flags;
public class FlagsBitmask : BitMask16
{
protected override void AddBits()
{
AddBit("^2 Dimensions", 0);
AddBit("Compressed", 1);
AddBit("Palettized", 2);
AddBit("Swizzled", 3);
AddBit("Linear", 4);
AddBit("v16u16", 5);
AddBit("HUD Bitmap?", 7);
AddBit("Always On?", 9);
AddBit("Interlaced?", 12);
}
}
Int16 Reg_X;
Int16 Reg_Y;
Int16 MipMap_Count;
Int16 Pixel_Offset;
[Visible(false)]
Int32 Zero;
Int32 LOD1_Offset;
Int32 LOD2_Offset;
Int32 LOD3_Offset;
[Size(12)]
Unused Unused_Offset40;
Int32 LOD1_Size;
Int32 LOD2_Size;
Int32 LOD3_Size;
[Size(12)]
Unused Unused_Offset64;
//<id name="ID" offset="76" visible="True" />
[Size(8)]
Unused Unused_Offset80;
[Visible(false),
Comments("CBZ")]
BitmaskFlagsCBZ Flags_CBZ;
public class BitmaskFlagsCBZ : BitMask32
{
}
Unused Unused_Offset4;
[Visible(false),
Comments("CBZ")]
Int32 Unknown0;
[Visible(false),
Comments("CBZ")]
Int32 Unknown1;
[Visible(false),
Comments("CBZ")]
Int32 Unknown2;
[Visible(false),
Comments("CBZ")]
Int32 Unknown3;
Unused Unused_Offset112;
}
}