Example #1
0
        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);
        }
Example #2
0
        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();
            }
        }