示例#1
0
        public bool NewCamera(string name, int depth)
        {
            if (_cameraList.ContainsKey(name))
            {
                return(false);
            }
            int layerFound = FindAccessLayer();

            if (layerFound < 0)
            {
                return(false);
            }


            GameObject newObject   = new GameObject(name);
            Camera     newCamera   = newObject.AddComponent <Camera>();
            UiCamera   newUiCamera = newObject.AddComponent <UiCamera>();

            newObject.AddComponent <PhysicsRaycaster>();
            newObject.AddComponent <PostProcessLayer>().volumeLayer = 1 << (_baseLayer + layerFound);
            newCamera.depth         = depth;
            newCamera.clearFlags    = CameraClearFlags.Depth;
            newCamera.cullingMask   = 1 << (_baseLayer + layerFound);
            _layerSlots[layerFound] = newUiCamera;
            _cameraList.Add(name, newUiCamera);
            newUiCamera.Volume = _volumes[2 + layerFound];
            return(true);
        }
示例#2
0
        private int FindCameraIndex(UiCamera cam)
        {
            for (int i = 0; i < 6; i++)
            {
                if (_layerSlots[i] == cam)
                {
                    return(i);
                }
            }

            return(-1);
        }
示例#3
0
        public bool DestroyCamera(string name)
        {
            if (!_cameraList.ContainsKey(name))
            {
                return(false);
            }
            UiCamera uiCamera = _cameraList[name];
            int      i        = FindCameraIndex(uiCamera);

            if (i < 0)
            {
                return(false);
            }

            _layerSlots[i] = null;
            _cameraList.Remove(name);
            Destroy(uiCamera.gameObject);
            return(true);
        }