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); }
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 }); } }
/// <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; } } }