void AddToGMND(SimPe.Events.ResourceContainer rc) { SimPe.Plugin.GenericRcol rcol = new GenericRcol(); rcol.ProcessData(rc.Resource); RemoveFromGMND(rcol); GeometryNode gn = (GeometryNode)rcol.Blocks[0]; DataListExtension dle = new DataListExtension(rcol); dle.Extension.VarName = "copyright"; dle.Extension.Items = new ExtensionItem[4]; dle.Extension.Items[0] = new ExtensionItem(); dle.Extension.Items[0].Typecode = ExtensionItem.ItemTypes.String; dle.Extension.Items[0].Name = "created by"; dle.Extension.Items[0].String = form.tbCreator.Text; dle.Extension.Items[1] = new ExtensionItem(); dle.Extension.Items[1].Typecode = ExtensionItem.ItemTypes.String; dle.Extension.Items[1].Name = "license"; dle.Extension.Items[1].String = form.tbLicense.Text; dle.Extension.Items[2] = new ExtensionItem(); dle.Extension.Items[2].Typecode = ExtensionItem.ItemTypes.String; dle.Extension.Items[2].Name = "release date"; dle.Extension.Items[2].String = form.tbDate.Text; dle.Extension.Items[3] = new ExtensionItem(); dle.Extension.Items[3].Typecode = ExtensionItem.ItemTypes.String; dle.Extension.Items[3].Name = "version"; dle.Extension.Items[3].String = form.tbVersion.Text; rcol.Blocks = (SimPe.Interfaces.Scenegraph.IRcolBlock[])Helper.Add(rcol.Blocks, dle, typeof(SimPe.Interfaces.Scenegraph.IRcolBlock)); ObjectGraphNodeItem ogni = new ObjectGraphNodeItem(); ogni.Index = (uint)(rcol.Blocks.Length - 1); ogni.Enabled = 0x01; ogni.Dependant = 0x00; gn.ObjectGraphNode.Items = (ObjectGraphNodeItem[])Helper.Add(gn.ObjectGraphNode.Items, ogni); rcol.SynchronizeUserData(true, true); }
void RemoveFromGMND(SimPe.Plugin.GenericRcol rcol) { uint ct = 0; GeometryNode gn = (GeometryNode)rcol.Blocks[0]; ArrayList delete = new ArrayList(); foreach (SimPe.Interfaces.Scenegraph.IRcolBlock irb in rcol.Blocks) { if (irb is DataListExtension) { DataListExtension dle = (DataListExtension)irb; if (dle.Extension.VarName == "copyright") { ArrayList list = new ArrayList(); foreach (ObjectGraphNodeItem ogni in gn.ObjectGraphNode.Items) { if (ogni.Index != ct) { list.Add(ogni); } } gn.ObjectGraphNode.Items = new ObjectGraphNodeItem[list.Count]; list.CopyTo(gn.ObjectGraphNode.Items); delete.Add(dle); } } ct++; } foreach (DataListExtension dle in delete) { rcol.Blocks = (SimPe.Interfaces.Scenegraph.IRcolBlock[])Helper.Delete(rcol.Blocks, dle, typeof(SimPe.Interfaces.Scenegraph.IRcolBlock)); } if (delete.Count > 0) { rcol.SynchronizeUserData(); } }