Esempio n. 1
0
 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();
        }