public static void SetMistPerspect(Camera cam) { if (PostMist.Instance != null) { return; } GameObject gameObject = GameObject.CreatePrimitive(PrimitiveType.Quad); gameObject.layer = Layer.UnitLayer; MeshCollider component = gameObject.GetComponent <MeshCollider>(); UnityEngine.Object.Destroy(component); Shader shader = Shader.Find("MyShader/PostEffects/MistPanelBg"); Renderer component2 = gameObject.GetComponent <MeshRenderer>(); component2.material = new Material(shader); component2.material.hideFlags = HideFlags.DontSave; component2.castShadows = false; component2.receiveShadows = false; Transform transform = gameObject.transform; transform.parent = cam.transform; transform.localRotation = Quaternion.identity; transform.localPosition = new Vector3(0f, 0f, cam.nearClipPlane + 0.01f); float num = 0.0174532924f * cam.fieldOfView; float num2 = Mathf.Tan(num / 2f) * (cam.nearClipPlane + 0.01f) * 2f; transform.localScale = new Vector3(num2 * cam.aspect, num2, 1f); PostMist postMist = gameObject.AddComponent <PostMist>(); postMist.mat = component2.sharedMaterial; postMist.bg = PostMist.CreateCompanyCam(cam, postMist); PostMist.Instance = postMist; }
private static RenderTexture CreateCompanyCam(Camera camBat, PostMist p3) { GameObject gameObject = new GameObject("CompanyCamera"); gameObject.transform.parent = camBat.transform; gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localRotation = Quaternion.identity; gameObject.transform.localScale = Vector3.one; Camera camera = gameObject.AddComponent <Camera>(); camera.CopyFrom(camBat); RenderTexture renderTexture = new RenderTexture((int)camera.pixelWidth / 4, (int)camera.pixelHeight / 4, 16); camera.targetTexture = renderTexture; int mask = LayerMask.GetMask(new string[] { "Map", "Ground" }); camera.cullingMask = mask; camera.nearClipPlane = camBat.nearClipPlane + 0.5f; camera.clearFlags = CameraClearFlags.Color; camera.depth = 12f; p3.bgCam = gameObject; p3.cam = camBat; return(renderTexture); }
public void CheckMistSettings() { if (Mist3Adapter.CheckMistSetting()) { if (PostMist.Instance == null) { PostMist.SetMistPerspect(base.camera); } else { PostMist.Instance.EnableMist(); } } else if (PostMist.Instance != null) { PostMist.Instance.DisableMist(); } }