Esempio n. 1
0
            public CameraRenderData(apOptMesh parentMesh, Camera camera, bool isDualRT
#if UNITY_2019_1_OR_NEWER
                                    , bool isEyeTextureSize
#endif
                                    )
            {
                _parentMesh = parentMesh;

                _camera             = camera;
                _multiCamController = null;
                _transform          = _camera.transform;

                _renderTexture   = null;
                _renderTexture_L = null;
                _renderTexture_R = null;
                _commandBuffer   = null;

                //_debugName = _parentMesh.name + " / " + _camera.name;

                _isDualRT = isDualRT;
#if UNITY_2019_1_OR_NEWER
                _isEyeTextureSize = isEyeTextureSize;
#endif

                _targetTexture = _camera.targetTexture;
                //Debug.LogWarning(">> Create : " + _debugName + " ( IsDual : " + _isDualRT + ")");
            }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            if (!Application.isPlaying)
            {
                return;
            }

            apOptMultiCameraController targetMCC = target as apOptMultiCameraController;

            if (targetMCC == null)
            {
                return;
            }

            GUILayout.Space(10);
            Dictionary <apOptMesh, apOptMultiCameraController.FUNC_MESH_PRE_RENDERED> preRenderedEvents = targetMCC.GetPreRenderedEvents();

            if (preRenderedEvents != null && preRenderedEvents.Count > 0)
            {
                int index = 0;
                foreach (KeyValuePair <apOptMesh, apOptMultiCameraController.FUNC_MESH_PRE_RENDERED> pair in preRenderedEvents)
                {
                    EditorGUILayout.LabelField("[" + index + "] : " + pair.Key.name);
                    index++;
                }
            }
        }
Esempio n. 3
0
            public void UnlinkMultiCameraController()
            {
                if (_multiCamController != null)
                {
                    _multiCamController.RemovePreRenderEvent(_parentMesh);
                    _multiCamController = null;

                    //Debug.LogError("-- MultiCam 컨트롤러에서 PreRendered 이벤트 제거 : " + _debugName);
                }
            }
Esempio n. 4
0
            //카메라가 복수개라면 멀티 카메라 컨트롤러를 이용해야한다.
            //단일이라면 필요 없음
            public void MakeAndLinkMultiCameraController(apOptMultiCameraController.FUNC_MESH_PRE_RENDERED funcMeshPreRendered)
            {
                _multiCamController = _camera.gameObject.GetComponent <apOptMultiCameraController>();
                if (_multiCamController == null)
                {
                    _multiCamController = _camera.gameObject.AddComponent <apOptMultiCameraController>();
                    _multiCamController.Init();
                }

                //함수 연결
                _multiCamController.AddPreRenderEvent(_parentMesh, funcMeshPreRendered);

                //Debug.Log("++ MultiCam 컨트롤러에 PreRendered 이벤트 등록 : " + _debugName);
            }
Esempio n. 5
0
            public void ReleaseAll()
            {
                //Debug.LogError(">> ReleaseAll : " + _debugName);
                //기존의 데이터를 날려야 한다.
                if (_camera != null)
                {
                    if (_commandBuffer != null)
                    {
                        _camera.RemoveCommandBuffer(CameraEvent.BeforeForwardOpaque, _commandBuffer);
                        _commandBuffer = null;

                        //Debug.LogError("-- 커맨드 버퍼를 카메라에서 제거 : " + _debugName);
                    }
                }

                if (_multiCamController != null)
                {
                    _multiCamController.RemovePreRenderEvent(_parentMesh);
                    _multiCamController = null;

                    //Debug.LogError("-- PreRendered 이벤트를 제거 : " + _debugName);
                }

                if (_renderTexture != null)
                {
                    RenderTexture.ReleaseTemporary(_renderTexture);
                    _renderTexture = null;

                    //Debug.LogError("-- 렌더 텍스쳐를 삭제(Single) : " + _debugName);
                }

                if (_renderTexture_L != null)
                {
                    RenderTexture.ReleaseTemporary(_renderTexture_L);
                    _renderTexture_L = null;

                    //Debug.LogError("-- 렌더 텍스쳐를 삭제(Dual - Left) : " + _debugName);
                }

                if (_renderTexture_R != null)
                {
                    RenderTexture.ReleaseTemporary(_renderTexture_R);
                    _renderTexture_R = null;

                    //Debug.LogError("-- 렌더 텍스쳐를 삭제(Dual - Right) : " + _debugName);
                }

                //_camera = null;
                //_transform = null;
            }
Esempio n. 6
0
            public void ReleaseEvent()
            {
                //Debug.LogError(">> ReleaseEvent : " + _debugName);
                //기존의 데이터를 날려야 한다.
                if (_camera != null)
                {
                    if (_commandBuffer != null)
                    {
                        _camera.RemoveCommandBuffer(CameraEvent.BeforeForwardOpaque, _commandBuffer);
                        _commandBuffer = null;

                        //Debug.LogError("-- 커맨드 버퍼를 카메라에서 제거 : " + _debugName);
                    }
                }

                if (_multiCamController != null)
                {
                    _multiCamController.RemovePreRenderEvent(_parentMesh);
                    _multiCamController = null;

                    //Debug.LogError("-- PreRendered 이벤트를 제거 : " + _debugName);
                }
            }