Example #1
0
 /// <summary>
 /// Initialize single prefab prototype for preparing runtime data and buffers for instanced rendering
 /// </summary>
 /// <param name="prefabManager">The GPUI Prefab Manager that the prefab prototype is defined on</param>
 /// <param name="prefabPrototype">GPUI Prefab Prototype</param>
 /// <returns></returns>
 public static GPUInstancerRuntimeData InitializeGPUInstancer(GPUInstancerPrefabManager prefabManager, GPUInstancerPrefabPrototype prototype)
 {
     // initialize PrefabManager if it is not already initialized
     prefabManager.InitializeRuntimeDataAndBuffers(false);
     // generate and return prototype runtime data
     return(prefabManager.InitializeRuntimeDataForPrefabPrototype(prototype));
 }
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();
                    }
                }
            }
        }
Example #3
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);
            }
        }
 private void OnEnable()
 {
     if (gpuiPrefab.state == PrefabInstancingState.None)
     {
         if (_prefabManager == null)
         {
             _prefabManager = GetPrefabManager();
         }
         if (_prefabManager != null)
         {
             if (!_prefabManager.isInitialized)
             {
                 _prefabManager.InitializeRuntimeDataAndBuffers();
             }
             _prefabManager.AddPrefabInstance(gpuiPrefab, true);
         }
     }
 }