public static void InitializeAsPO(InstanceID target, ProceduralObject po) { if (po.meshStatus != 1) { if (po.RequiresUVRecalculation && !po.disableRecalculation) { po.m_mesh.uv = Vertex.RecalculateUVMap(po, Vertex.CreateVertexList(po)); } } po.RecalculateBoundsNormalsExtras(po.meshStatus); AddPOToMIVisibleObj(po); t_MIPOLogic.GetMethod("Paste").Invoke(MIPOLogic, new object[] { null, target, po.id }); }
public static void LoadContainerData(this ProceduralObjectsLogic logic, ProceduralObjectContainer[] containerArray) { logic.proceduralObjects = new List <ProceduralObject>(); logic.activeIds = new HashSet <int>(); if (logic.availableProceduralInfos == null) { logic.availableProceduralInfos = CreateProceduralInfosList(); } if (logic.availableProceduralInfos.Count < 0) { logic.availableProceduralInfos = CreateProceduralInfosList(); } logic.failedToLoadObjects = 0; PropInfo[] props = Resources.FindObjectsOfTypeAll <PropInfo>(); BuildingInfo[] buildings = Resources.FindObjectsOfTypeAll <BuildingInfo>(); foreach (var c in containerArray) { try { var obj = new ProceduralObject(c, logic.layerManager, props, buildings); if (obj.meshStatus != 1) { if (obj.RequiresUVRecalculation && !obj.disableRecalculation) { obj.m_mesh.uv = Vertex.RecalculateUVMap(obj, Vertex.CreateVertexList(obj)); } } obj.RecalculateBoundsNormalsExtras(obj.meshStatus); logic.proceduralObjects.Add(obj); logic.activeIds.Add(obj.id); } catch (Exception e) { Debug.LogError("[ProceduralObjects] Failed to load a Procedural Object : \n" + e.GetType().ToString() + " : " + e.Message + "\n" + e.StackTrace); PopupStart.RegisterFailure(c, e, props, buildings); logic.failedToLoadObjects += 1; } } PopupStart.LoadingDoneShowPopup(); }