// Use this for initialization void Start() { _transform = transform; _effectAnimation = gameObject.transform.FindChild("CameraEffects").gameObject.GetComponent <Animation>(); string cameraPath = _forwardCameraPath; if (GameSettings.Instance.IsDeferredShadingActived()) { cameraPath = _deferredCameraPath; } GameObject camObj = InJoy.AssetBundles.AssetBundles.Load(cameraPath, typeof(GameObject)) as GameObject; camObj = GameObject.Instantiate(camObj) as GameObject; camObj.transform.parent = _cameraParent; camObj.transform.localPosition = Vector3.zero; camObj.transform.localRotation = Quaternion.identity; camObj.transform.localScale = Vector3.one; _coreCamera = camObj.gameObject.GetComponent <Camera>(); _timer = 0.0f; _duration = 1000.0f; _fovFactor = GameSettings.Instance.FovFactor; _shakeCamera = new ShakeCamera(); _shakeCamera.SetAnim(_effectAnimation, _effectAnimation.clip.name); if (_currentCamera == null) { Assertion.Check(_cameraModes.Length > 0); SetCurrentCamera(CameraMode.Standard); } _oldCamera = null; _coreCamera.backgroundColor = RenderSettings.fogColor; LevelLightInfo level = GameObject.FindObjectOfType(typeof(LevelLightInfo)) as LevelLightInfo; Renderer [] sceneRenderers = new Renderer[0]; if (level != null) { sceneRenderers = level.GetComponentsInChildren <Renderer>(); } if (!GameSettings.Instance.IsFullSceneDisplay()) { int layer = LayerMask.NameToLayer("NONE"); foreach (Renderer r in sceneRenderers) { string shaderName = r.sharedMaterial.shader.name; if (shaderName.Contains("(noshadow)")) { r.gameObject.layer = layer; } } } if (GameSettings.Instance.IsDirectionalShadowActived()) { _shadowRT = RenderTexture.GetTemporary(800, 800, 0, RenderTextureFormat.ARGB32); GameObject cameraObj = GameObject.Instantiate(_shadowCamera) as GameObject; _shadowCameraInstance = cameraObj.GetComponentInChildren <Camera>(); if (_shadowCameraInstance != null) { _shadowCameraInstance.targetTexture = _shadowRT; _shadowCameraInstance.enabled = false; _shadowCameraInstance.SetReplacementShader(_shadowShader, ""); _shadowCameraInstance.Render(); _shadowCameraInstance.aspect = 1.0f; foreach (Renderer r in sceneRenderers) { if (null != r && null != r.sharedMaterial) { r.sharedMaterial.SetTexture("_shadowTex", _shadowRT); } } } _shadowCameraTransform = cameraObj.GetComponent <Transform>(); _shadowRenderer = _shadowCameraInstance.GetComponentInChildren <ShadowRenderer>(); GameObject mainLight = GameObject.FindWithTag("MainLight"); if (mainLight != null && _shadowRenderer != null) { _shadowRenderer.SetDirectionalLight(mainLight.transform); } Shader.SetGlobalTexture("_shadowBorder", _shadowBorder); } }