private void Start() { CreateCommandBuffer(); if (m_renderersCache == null) { m_renderersCache = gameObject.GetComponent <IRenderersCache>(); } if (m_meshesCache == null) { m_meshesCache = gameObject.GetComponent <IMeshesCache>(); } RefreshCommandBuffer(); if (m_renderersCache != null) { m_renderersCache.Refreshed += OnRefresh; } if (m_meshesCache != null) { m_meshesCache.Refreshing += OnRefresh; } }
public void Setup(RenderTargetIdentifier camerColorRT, IMeshesCache meshesCache, IRenderersCache renderersCache, ICustomOutlineRenderersCache customRenderersCache) { m_meshesCache = meshesCache; m_renderersCache = renderersCache; m_customRenderersCache = customRenderersCache; m_cameraColorRT = camerColorRT; }
private void DestroyMeshesCache() { if (m_destroyMeshesCache && m_meshesCache != null) { m_meshesCache.Destroy(); m_meshesCache = null; } }
private void Start() { m_graphics = IOC.Resolve <IRTEGraphics>(); m_meshesCache = m_graphics.CreateMeshesCache(CameraEvent.BeforeImageEffects); m_meshesCache.RefreshMode = CacheRefreshMode.OnTransformChange; Refresh(); StartOverride(); }
public void Destroy(IMeshesCache cache) { Data tuple; if (m_meshesCache.TryGetValue(cache, out tuple)) { Destroy(tuple.MonoBehaviour); for (int i = 0; i < tuple.RTECameras.Count; ++i) { Destroy(tuple.RTECameras[i]); } m_meshesCache.Remove(cache); } }
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { if ((renderingData.cameraData.camera.cullingMask & m_settings.LayerMask) != 0) { IMeshesCache meshesCache = IOC.Resolve <IMeshesCache>(m_settings.MeshesCacheName); IRenderersCache renderersCache = IOC.Resolve <IRenderersCache>(m_settings.RenderersCacheName); if ((meshesCache == null || meshesCache.IsEmpty) && (renderersCache == null || renderersCache.IsEmpty)) { return; } var src = renderer.cameraColorTarget; m_scriptablePass.Setup(src, meshesCache, renderersCache); renderer.EnqueuePass(m_scriptablePass); } }
public void RegisterCamera(Camera camera) { m_cameras.Add(camera.gameObject); foreach (KeyValuePair <IMeshesCache, Data> kvp in m_meshesCache) { IMeshesCache cache = kvp.Key; Data data = kvp.Value; CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras); } foreach (KeyValuePair <IRenderersCache, Data> kvp in m_renderersCache) { IRenderersCache cache = kvp.Key; Data data = kvp.Value; CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras); } }
public void RegisterCamera(Camera camera) { foreach (KeyValuePair <IMeshesCache, Data> kvp in m_meshesCache) { IMeshesCache cache = kvp.Key; Data data = kvp.Value; CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras); } foreach (KeyValuePair <IRenderersCache, Data> kvp in m_renderersCache) { IRenderersCache cache = kvp.Key; Data data = kvp.Value; CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras); } if (!m_cameras.ContainsKey(camera)) { m_cameras.Add(camera, new Dictionary <CameraEvent, RTECamera>()); } }
private static void CreateRTECamera(GameObject camera, CameraEvent cameraEvent, IMeshesCache cache, List <RTECamera> rteCameras) { RTECamera rteCamera = camera.AddComponent <RTECamera>(); rteCamera.Event = cameraEvent; rteCamera.MeshesCache = cache; rteCameras.Add(rteCamera); }
private static void CreateRTECamera(GameObject camera, CameraEvent cameraEvent, IMeshesCache cache, List <RTECamera> rteCameras) { bool wasActive = camera.gameObject.activeSelf; camera.SetActive(false); RTECamera rteCamera = camera.AddComponent <RTECamera>(); rteCamera.Event = cameraEvent; rteCamera.MeshesCache = cache; rteCameras.Add(rteCamera); camera.SetActive(wasActive); }
public void CreateMeshesCache() { DestroyMeshesCache(); m_meshesCache = gameObject.AddComponent <MeshesCache>(); m_destroyMeshesCache = true; }