Example #1
0
        private void MapMagicTerrainAddPrefabManagerSingleton(Terrain terrain)
        {
            if (prefabPrototypes != null && prefabPrototypes.Count > 0)
            {
                if (prefabManagerInstance == null)
                {
                    GameObject prefabManagerInstanceGO = new GameObject("GPUI Prefab Manager");
                    prefabManagerInstance = prefabManagerInstanceGO.AddComponent <GPUInstancerPrefabManager>();
                    prefabManagerInstance.isFrustumCulling   = isFrustumCulling;
                    prefabManagerInstance.isOcclusionCulling = isOcclusionCulling;
                    prefabManagerInstance.minCullingDistance = minCullingDistance;
                    prefabManagerInstance.autoSelectCamera   = autoSelectCamera;
                    prefabManagerInstance.cameraData.SetCamera(cameraData.mainCamera);
                    prefabManagerInstance.cameraData.renderOnlySelectedCamera = cameraData.renderOnlySelectedCamera;
                    prefabManagerInstance.cameraData.hiZOcclusionGenerator    = null;
                    prefabManagerInstance.InitializeCameraData();
                    prefabManagerInstance.enableMROnRemoveInstance = false;
                    prefabManagerInstance.enableMROnManagerDisable = false;

                    prefabManagerInstance.prototypeList = prefabPrototypes;
                    prefabManagerInstance.InitializeRuntimeDataAndBuffers();
                }

                GPUInstancerPrefabListRuntimeHandler plrh = terrain.gameObject.GetComponent <GPUInstancerPrefabListRuntimeHandler>();
                if (plrh == null)
                {
                    plrh = terrain.gameObject.AddComponent <GPUInstancerPrefabListRuntimeHandler>();
                }
                plrh.runInThreads = prefabRunInThreads;
                plrh.SetManager(prefabManagerInstance);
            }
        }
Example #2
0
        private void MapMagicTerrainAddPrefabManager(Terrain terrain)
        {
            if (terrain.GetComponent <GPUInstancerPrefabManager>() == null && prefabPrototypes != null && prefabPrototypes.Count > 0)
            {
                GPUInstancerPrefab[] prefabList = terrain.gameObject.GetComponentsInChildren <GPUInstancerPrefab>(true);
                if (prefabList.Length > 0)
                {
                    GPUInstancerPrefabManager newPrefabManager = terrain.gameObject.AddComponent <GPUInstancerPrefabManager>();
                    newPrefabManager.isFrustumCulling   = isFrustumCulling;
                    newPrefabManager.isOcclusionCulling = isOcclusionCulling;
                    newPrefabManager.minCullingDistance = minCullingDistance;
                    newPrefabManager.autoSelectCamera   = autoSelectCamera;
                    newPrefabManager.cameraData.SetCamera(cameraData.mainCamera);
                    newPrefabManager.cameraData.renderOnlySelectedCamera = cameraData.renderOnlySelectedCamera;
                    newPrefabManager.cameraData.hiZOcclusionGenerator    = null;
                    newPrefabManager.InitializeCameraData();
                    newPrefabManager.enableMROnManagerDisable = false;

                    newPrefabManager.prototypeList = prefabPrototypes;
                    newPrefabManager.RegisterPrefabInstanceList(prefabList);
                    if (terrain.gameObject.activeSelf)
                    {
                        newPrefabManager.InitializeRuntimeDataAndBuffers();
                    }
                }
            }
        }