Esempio n. 1
0
        public PO_Group(object group)
        {
            tPO      = PO_Logic.POAssembly.GetType("ProceduralObjects.Classes.ProceduralObject");
            tPOGroup = PO_Logic.POAssembly.GetType("ProceduralObjects.Classes.POGroup");

            var objList = tPOGroup.GetField("objects").GetValue(group);

            count = (int)objList.GetType().GetProperty("Count").GetValue(objList, null);

            for (int i = 0; i < count; i++)
            {
                var       v   = objList.GetType().GetMethod("get_Item").Invoke(objList, new object[] { i });
                PO_Object obj = MoveItTool.PO.GetProcObj(Convert.ToUInt32(tPO.GetField("id").GetValue(v)) + 1);
                obj.Group = this;
                objects.Add(obj);

                if (obj.isGroupRoot())
                {
                    root = obj;
                }
            }

            //string msg = $"AAG07 - Count:{count}\n";
            //foreach (PO_Object o in objects)
            //{
            //    msg += $"{o.Id}, ";
            //}
            //Log.Debug(msg);
        }
Esempio n. 2
0
        public void Delete(PO_Object obj)
        {
            var poList    = tPOLogic.GetField("proceduralObjects", flags).GetValue(POLogic);
            var poSelList = tPOLogic.GetField("pObjSelection", flags).GetValue(POLogic);

            if (obj.isGroupRoot())
            {
                DeleteGroup(obj.Group);
            }

            poList.GetType().GetMethod("Remove", flags, null, new Type[] { tPO }, null).Invoke(poList, new object[] { obj.GetProceduralObject() });
            poSelList.GetType().GetMethod("Remove", flags, null, new Type[] { tPO }, null).Invoke(poSelList, new object[] { obj.GetProceduralObject() });
            if (tPOLogic.GetField("activeIds", flags) != null)
            {
                var activeIds = tPOLogic.GetField("activeIds", flags).GetValue(POLogic);
                activeIds.GetType().GetMethod("Remove", flags, null, new Type[] { typeof(int) }, null).Invoke(activeIds, new object[] { obj.ProcId });
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Load an existing group
        /// </summary>
        /// <param name="group">The PO Group data</param>
        public PO_Group(object group)
        {
            tPO      = PO_Logic.POAssembly.GetType("ProceduralObjects.Classes.ProceduralObject");
            tPOGroup = PO_Logic.POAssembly.GetType("ProceduralObjects.Classes.POGroup");
            tPOLogic = PO_Logic.POAssembly.GetType("ProceduralObjects.ProceduralObjectsLogic");
            POGroup  = group;

            var objList = tPOGroup.GetField("objects").GetValue(group);
            int count   = (int)objList.GetType().GetProperty("Count").GetValue(objList, null);

            for (int i = 0; i < count; i++)
            {
                var       v   = objList.GetType().GetMethod("get_Item").Invoke(objList, new object[] { i });
                PO_Object obj = MoveItTool.PO.GetProcObj(Convert.ToUInt32(tPO.GetField("id").GetValue(v)) + 1);
                obj.Group = this;
                objects.Add(obj);

                if (obj.isGroupRoot())
                {
                    root = obj;
                }
            }
        }