示例#1
0
 static void RenderSettings_fogMode(JSVCall vc)
 {
     if (vc.bGet)
     {
         var result = UnityEngine.RenderSettings.fogMode;
         JSApi.setEnum((int)JSApi.SetType.Rval, (int)result);
     }
     else
     {
         UnityEngine.FogMode arg0 = (UnityEngine.FogMode)JSApi.getEnum((int)JSApi.GetType.Arg);
         UnityEngine.RenderSettings.fogMode = arg0;
     }
 }
示例#2
0
    void Awake()
    {
        _defaultEnabled          = RenderSettings.fog;
        _defaultFogColor         = RenderSettings.fogColor;
        _defaultFogDensity       = RenderSettings.fogDensity;
        _defaultFogStartDistance = RenderSettings.fogStartDistance;
        _defaultFogEndDistance   = RenderSettings.fogEndDistance;
        _defaultFogMode          = RenderSettings.fogMode;
        _defaultAmbientLight     = RenderSettings.ambientLight;

        _fogColor         = _defaultFogColor;
        _fogDensity       = _defaultFogDensity;
        _fogStartDistance = _defaultFogStartDistance;
        _fogEndDistance   = _defaultFogEndDistance;
        _ambientLight     = _defaultAmbientLight;

        StartCoroutine(AdjustFogCoroutine());
    }
示例#3
0
    public void SetTargetFogSettings(bool enabled, UnityEngine.FogMode fogMode, Color fogColor, float fogDensity, float fogStartDistance, float fogEndDistance, Color ambientColor, bool smoothTransition)
    {
        RenderSettings.fog     = enabled;
        RenderSettings.fogMode = fogMode;

        if (!smoothTransition)
        {
            RenderSettings.fogColor         = fogColor;
            RenderSettings.fogDensity       = fogDensity;
            RenderSettings.fogEndDistance   = fogEndDistance;
            RenderSettings.fogStartDistance = fogStartDistance;
            RenderSettings.ambientLight     = ambientColor;
        }

        _fogColor         = fogColor;
        _fogDensity       = fogDensity;
        _fogStartDistance = fogStartDistance;
        _fogEndDistance   = fogEndDistance;
        _ambientLight     = ambientColor;
    }
示例#4
0
        public static Unity.Tiny.Rendering.Fog.Mode ToTiny(this UnityEngine.FogMode fogMode, bool useFog)
        {
            if (!useFog)
            {
                return(Unity.Tiny.Rendering.Fog.Mode.None);
            }

            switch (fogMode)
            {
            case UnityEngine.FogMode.Linear:
                return(Unity.Tiny.Rendering.Fog.Mode.Linear);

            case UnityEngine.FogMode.Exponential:
                return(Unity.Tiny.Rendering.Fog.Mode.Exponential);

            case UnityEngine.FogMode.ExponentialSquared:
                return(Unity.Tiny.Rendering.Fog.Mode.ExponentialSquared);

            default:
                throw new System.ArgumentOutOfRangeException(nameof(fogMode), fogMode, null);
            }
        }
    private void ApplyFog(Vector3 cloudPos)
    {
        Vector3 camPos = Camera.main.transform.position;
        if (camPos.y >= (cloudPos.y - scudThickness) &&
            camPos.y <= (cloudPos.y + cloudThickness + scudThickness))
        {
            insideCloud = true;
            if (!fogStateCaptured)
            {
                savedFog = RenderSettings.fog;
                savedFogColor = RenderSettings.fogColor;
                savedFogDensity = RenderSettings.fogDensity;
                savedFogMode = RenderSettings.fogMode;
                fogStateCaptured = true;
            }

            float blend = 1.0f;
            if (camPos.y < cloudPos.y) {
                blend = 1.0f - (cloudPos.y - camPos.y) / scudThickness;
            } else if (camPos.y > cloudPos.y + cloudThickness) {
                blend = 1.0f - (camPos.y - (cloudPos.y + cloudThickness)) / scudThickness;
            }
            blend = blend * blend * blend * blend;
            RenderSettings.fog = true;
            Color fogColor = new Color(0.5f, 0.5f, 0.5f);
            RenderSettings.fogColor = (fogColor * blend) + (savedFogColor * (1.0f - blend));
            float fogDensity = 0.05f;
            float srcDensity = savedFog ? savedFogDensity : 1E-20f;
            RenderSettings.fogDensity = (fogDensity * blend) + (srcDensity * (1.0f - blend));
            RenderSettings.fogMode = UnityEngine.FogMode.ExponentialSquared;

            if (blend > 0.5f) {
                cloudBottom.GetComponent<Renderer>().enabled = false;
                cloudTop.GetComponent<Renderer>().enabled = false;
            } else {
                cloudBottom.GetComponent<Renderer>().enabled = true;
                cloudTop.GetComponent<Renderer>().enabled = true;
            }
        }
        else
        {
            insideCloud = false;
            cloudBottom.GetComponent<Renderer>().enabled = true;
            cloudTop.GetComponent<Renderer>().enabled = true;
            if (fogStateCaptured)
            {
                RenderSettings.fog = savedFog;
                RenderSettings.fogColor = savedFogColor;
                RenderSettings.fogDensity = savedFogDensity;
                RenderSettings.fogMode = savedFogMode;
                fogStateCaptured = false;
            }
        }
    }