using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HaloObjects;

namespace HaloPlugins.Xbox
{
    public class MGS2
    {
       public List<MetaNode> Fields = new List<MetaNode>();

       public MGS2()
       {
           Fields.AddRange(new MetaNode[] {
           new Value("Falloff Distance From Camera", typeof(float)),
           new Value("Cutoff Distance From Camera", typeof(float)),
           new Reflexive("Volumes", 152, new MetaNode[] { 
               new Bitmask("Flags", new string[] { "Force_Linear_Radius_Function", "Force_Linear_Offset", "Force_Differential_Evaluation", "Fuzzy", "Not_Scaled_By_Event_Duration", "Scaled_By_Marker" }, 32),
               new TagReference("Bitmap"),
               new Value("Sprite Count", typeof(int)),
               new Reflexive("Offset", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Radius", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Brightness", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Color", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Facing", 1, new MetaNode[] { 
                   new Value("Data", typeof(byte)),
               }),
               new Reflexive("Aspect", 28, new MetaNode[] { 
                   new Reflexive("Along-Axis Scale", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Reflexive("Away-From-Axis Scale", 1, new MetaNode[] { 
                       new Value("Data", typeof(byte)),
                   }),
                   new Value("Parallel Scale", typeof(float)),
                   new Value("Parallel Threshold Angle", typeof(float)),
                   new Value("Parallel Exponent", typeof(float)),
               }),
               new Value("Radius Frac Min", typeof(float)),
               new Value("DEPRECATED X-Step Exponent", typeof(float)),
               new Value("DEPRECATED X-Buffer Length", typeof(int)),
               new Value("X-Buffer Spacing", typeof(int)),
               new Value("X-Buffer Min Iterations", typeof(int)),
               new Value("X-Buffer Max Iterations", typeof(int)),
               new Value("X-Delta Max Error", typeof(float)),
               new Unused(4),
               new Reflexive("", 8, new MetaNode[] { 
                   new Unused(8),
               }),
               new Unused(48),
           }),
           });
       }
    }
}
