Exemple #1
0
    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;
    }
Exemple #2
0
    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();
     }
 }