public BHAVContainer(BHAV target, EditorScope scope)
{
Scope = scope;
EditTarget = target;
Selected = new List<PrimitiveBox>();
Primitives = new List<PrimitiveBox>();
RealPrim = new List<PrimitiveBox>();
byte i = 0;
foreach (var inst in EditTarget.Instructions)
{
var ui = new PrimitiveBox(inst, i++, this);
Primitives.Add(ui);
RealPrim.Add(ui);
this.Add(ui);
}
var RealPrims = new List<PrimitiveBox>(Primitives);
foreach (var prim in RealPrims)
{
if (prim.Instruction.FalsePointer > 252 && prim.Returns != PrimitiveReturnTypes.Done)
{
var dest = new PrimitiveBox((prim.Instruction.FalsePointer == 254) ? PrimBoxType.True : PrimBoxType.False, this);
Primitives.Add(dest);
this.Add(dest);
prim.FalseUI = dest;
}
else if (prim.Instruction.FalsePointer < RealPrim.Count) prim.FalseUI = RealPrim[prim.Instruction.FalsePointer];
if (prim.Instruction.TruePointer > 252)
{
var dest = new PrimitiveBox((prim.Instruction.TruePointer == 254) ? PrimBoxType.True : PrimBoxType.False, this);
Primitives.Add(dest);
this.Add(dest);
prim.TrueUI = dest;
}
else if (prim.Instruction.TruePointer < RealPrim.Count) prim.TrueUI = RealPrim[prim.Instruction.TruePointer];
}
CleanPosition();
HitTest = ListenForMouse(new Rectangle(Int32.MinValue/2, Int32.MinValue / 2, Int32.MaxValue, Int32.MaxValue), new UIMouseEvent(DragMouseEvents));
}