4.09 <-> 4.10.1 Comparison
Produced by SAS~Storebror
   
Left file: com\maddox\il2\engine\Sun.java (4.09) 
Right file: com\maddox\il2\engine\Sun.java (4.10.1) 
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. = // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html   // Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) deadcode    // Decompiler options: packimports(3) deadcode 
// Source File Name:   Sun.java   // Source File Name:   Sun.java
     
package com.maddox.il2.engine;   package com.maddox.il2.engine;
     
import com.maddox.JGP.Vector3f;   import com.maddox.JGP.Vector3f;
import com.maddox.il2.game.Main3D;   import com.maddox.il2.game.Main3D;
  -+ import com.maddox.il2.game.Mission;
import com.maddox.rts.CfgInt; = import com.maddox.rts.CfgInt;
  -+ import java.util.GregorianCalendar;
  =  
// Referenced classes of package com.maddox.il2.engine:   // Referenced classes of package com.maddox.il2.engine:
//            Config, EffClouds, Engine, Landscape,  <> //            Config, MoonPhase, EffClouds, Engine, 
//            LandConf, RenderContext   //            Landscape, LandConf, RenderContext
  =  
public class Sun   public class Sun
{   {
     
    public Sun()       public Sun()
    {       {
        ToLight = new Vector3f();           ToLight = new Vector3f();
        SunV = new Vector3f();           SunV = new Vector3f();
        ToSun = new Vector3f();           ToSun = new Vector3f();
        ToMoon = new Vector3f();           ToMoon = new Vector3f();
        MoonPhase = 0.5F; <>         moonPhase = 0.5F;
            tod = 0.0F;
            darkness = 1.0F;
            sunMultiplier = 1.0F;
        SunV.set(0.0F, 0.0F, -1F); =         SunV.set(0.0F, 0.0F, -1F);
        ToSun.set(SunV);           ToSun.set(SunV);
        ToSun.negate();           ToSun.negate();
        ToMoon.set(ToSun);           ToMoon.set(ToSun);
        ToMoon.negate();           ToMoon.negate();
        ToLight.set(ToSun);           ToLight.set(ToSun);
        Ambient = 0.5F;           Ambient = 0.5F;
        Diffuze = 0.5F;           Diffuze = 0.5F;
        Specular = 1.0F;           Specular = 1.0F;
        Red = 1.0F;           Red = 1.0F;
        Green = 1.0F;           Green = 1.0F;
        Blue = 1.0F;           Blue = 1.0F;
    }       }
     
    public void activate()       public void activate()
    {       {
        if(Config.isUSE_RENDER())           if(Config.isUSE_RENDER())
            setNative(ToLight.x, ToLight.y, ToLight.z, Ambient, Diffuze, Specular, Red, Green, Blue);               setNative(ToLight.x, ToLight.y, ToLight.z, Ambient, Diffuze, Specular, Red, Green, Blue);
    }       }
     
    public void set(Vector3f vector3f)       public void set(Vector3f vector3f)
    {       {
        SunV.set(vector3f);           SunV.set(vector3f);
        ToSun.set(SunV);           ToSun.set(SunV);
        ToSun.negate();           ToSun.negate();
        ToLight.set(ToSun);           ToLight.set(ToSun);
    }       }
     
    public void setLight(float f, float f1, float f2, float f3, float f4, float f5)       public void setLight(float f, float f1, float f2, float f3, float f4, float f5)
    {       {
        Ambient = f;           Ambient = f;
        Diffuze = f1;           Diffuze = f1;
        Specular = f2;           Specular = f2;
        Red = f3;           Red = f3;
        Green = f4;           Green = f4;
        Blue = f5;           Blue = f5;
    }       }
     
    public void setAstronomic(int i, int j, int k, int l, int i1, int j1)       public void setAstronomic(int i, int j, int k, int l, int i1, int j1)
    {       {
        setAstronomic(i, j, k, (float)l + (float)i1 / 60F + (float)j1 / 3600F);           setAstronomic(i, j, k, (float)l + (float)i1 / 60F + (float)j1 / 3600F);
    }       }
     
    public void setAstronomic(int i, int j, int k, float f)       public void setAstronomic(int i, int j, int k, float f)
    {       {
  <>         setAstronomic(i, j, k, f, 1.0F, 1.0F, 1.0F);
        }
     
        public void resetCalendar()
        {
            missionDate = null;
        }
     
        public void setAstronomic(int i, int j, int k, float f, float f1, float f2, float f3)
        {
        float f2 = (float)(90 - i) * DEG2RAD;           float f5 = (float)(90 - i) * DEG2RAD;
        float f3 = (float)Math.cos(f2);           float f6 = (float)Math.cos(f5);
        float f4 = (float)Math.sin(f2);           float f7 = (float)Math.sin(f5);
        float f1 = (float)((j * 30 + k) - 80) * DEG2RAD;           float f4 = (float)((j * 30 + k) - 80) * DEG2RAD;
        float f5 = (6.283185F * f) / 24F;           float f8 = (6.283185F * f) / 24F;
        float f6 = (float)Math.sin(f5);           float f9 = (float)Math.sin(f8);
        float f7 = (float)Math.cos(f5);           float f10 = (float)Math.cos(f8);
        float f8 = (float)Math.sin(22.5F * DEG2RAD * (float)Math.sin(f1));           float f11 = (float)Math.sin(22.5F * DEG2RAD * (float)Math.sin(f4));
        ToSun.x = f6;           ToSun.x = f9;
        ToSun.y = f7 * f3 + f8 * f4;           ToSun.y = f10 * f6 + f11 * f7;
        ToSun.z = f8 * f3 - f7 * f4;           ToSun.z = f11 * f6 - f10 * f7;
        ToSun.normalize(); =         ToSun.normalize();
        SunV.x = -ToSun.x;           SunV.x = -ToSun.x;
        SunV.y = -ToSun.y;           SunV.y = -ToSun.y;
        SunV.z = -ToSun.z;           SunV.z = -ToSun.z;
        MoonPhase = ((float)(j * 30 + k) % 29.53F) / 29.53F; <>         int l = Mission.curYear();
            int i1 = (int)Math.floor(f);
            int j1 = (int)((f - (float)i1) * 60F);
            int k1 = 0;
            if(missionDate == null)
                missionDate = new GregorianCalendar(l, j - 1, k, i1, j1, k1);
            else
            if(f != tod)
                missionDate.roll(13, true);
            tod = f;
            double ad[] = new double[10];
            ad = MoonPhase.phase(missionDate);
            moonPhase = (float)ad[0];
        f1 = (float)((j * 30 + k) - 80) * DEG2RAD;           f4 = (float)((j * 30 + k) - 80) * DEG2RAD;
        f5 = 6.283185F * (-MoonPhase + f / 24F);           f8 = 6.283185F * (-moonPhase + f / 24F);
        f6 = (float)Math.sin(f5);           f9 = (float)Math.sin(f8);
        f7 = (float)Math.cos(f5);           f10 = (float)Math.cos(f8);
        f8 = (float)Math.sin(22.5F * DEG2RAD * (float)Math.sin(f1));           f11 = (float)Math.sin(22.5F * DEG2RAD * (float)Math.sin(f4));
        ToMoon.x = f6;           ToMoon.x = f9;
        ToMoon.y = f7 * f3 + f8 * f4;           ToMoon.y = f10 * f6 + f11 * f7;
        ToMoon.z = f8 * f3 - f7 * f4;           ToMoon.z = f11 * f6 - f10 * f7;
        ToMoon.normalize(); =         ToMoon.normalize();
        boolean flag = true;           boolean flag = true;
        float f10 = 1.0F - 2.0F * Math.abs(MoonPhase - 0.5F); <>         float f13 = 1.0F - 2.0F * Math.abs(moonPhase - 0.5F);
        float f11 = (ToMoon.z - 0.1F) * 7F;           float f14 = (ToMoon.z - 0.1F) * 7F;
        if(f11 < 0.0F)           if(f14 < 0.0F)
            f11 = 0.0F;               f14 = 0.0F;
        if(f11 > 1.0F)           if(f14 > 1.0F)
            f11 = 1.0F;               f14 = 1.0F;
        float f12 = -1F + 0.15F * (f10 - 0.2F) * f11;           float f15 = -1F + 0.15F * (f13 - 0.2F) * f14;
        float f9 = (ToSun.z + 0.11F) * 4F;           float f12 = (ToSun.z + 0.11F) * 4F;
        if(f9 >= 1.0F)           if(f12 >= 1.0F)
            f9 = 1.0F;               f12 = 1.0F;
        else =         else
        if(f9 <= f12) <>         if(f12 <= f15)
        { =         {
            if(ToMoon.z > 0.1F && f10 > 0.2F) <>             if(ToMoon.z > 0.1F && f13 > 0.2F)
                flag = false; =                 flag = false;
            f9 = f12; <>             f12 = f15;
        } =         }
        f9 = f9 * 0.5F + 0.5F; <>         f12 = f12 * 0.5F + 0.5F;
        float f13 = 0.2F + f9 * 1.25F;           float f16 = 0.2F + f12 * 1.25F;
        Diffuze = 0.05F + f9 * 0.95F;           Diffuze = 0.05F + f12 * 0.95F;
        Specular = 0.4F + f9 * 0.6F;           Specular = 0.4F + f12 * 0.6F;
        Ambient = f13 - Diffuze;           Ambient = f16 - Diffuze;
        if(Config.isUSE_RENDER()) =         if(Config.isUSE_RENDER())
        {           {
            if(Main3D.cur3D().clouds != null && Main3D.cur3D().clouds.type() > 4)               if(Main3D.cur3D().clouds != null && Main3D.cur3D().clouds.type() > 4)
            {               {
                float f14 = 0.2F + f9 * 0.7F; <>                 float f17 = 0.2F + f12 * 0.7F;
                Diffuze = 0.05F + f9 * 0.95F * 0.4F;                   Diffuze = 0.05F + f12 * 0.95F * 0.4F;
                Specular = 0.4F + f9 * 0.6F * 0.5F;                   Specular = 0.4F + f12 * 0.6F * 0.5F;
                Ambient = f14 - Diffuze;                   Ambient = f17 - Diffuze;
            } =             }
            if(Engine.land().config.camouflage.equalsIgnoreCase("WINTER") && RenderContext.cfgHardwareShaders.get() > 0)               if(Engine.land().config.camouflage.equalsIgnoreCase("WINTER") && RenderContext.cfgHardwareShaders.get() > 0)
            {               {
                float f15 = (ToSun.z - 0.1F) * 7F; <>                 float f18 = (ToSun.z - 0.1F) * 7F;
                if(f15 < 0.0F)                   if(f18 < 0.0F)
                    f15 = 0.0F;                       f18 = 0.0F;
                if(f15 > 1.0F)                   if(f18 > 1.0F)
                    f15 = 1.0F;                       f18 = 1.0F;
                Ambient *= 1.0F * (1.0F - f15) + 1.7F * f15;                   Ambient *= 1.0F * (1.0F - f18) + 1.7F * f18;
                Diffuze *= 1.0F * (1.0F - f15) + 0.6F * f15;                   Diffuze *= 1.0F * (1.0F - f18) + 0.6F * f18;
            } =             }
  -+             float f19 = 1.0F;
                darkness = 0.095F + f13 * 0.666F;
                sunMultiplier = cvt(ToSun.z, -0.6F, 0.0F, darkness, 1.0F);
                f19 = cvt(sunMultiplier, darkness, 1.0F, 0.5F, 1.0F);
                Ambient *= f1 * sunMultiplier;
                Specular *= f2 * f19;
                Diffuze *= f3 * sunMultiplier;
        } =         }
        if(flag)           if(flag)
        {           {
            Red = Green = Blue = 1.0F;               Red = Green = Blue = 1.0F;
            float f16 = 1.0F - Math.abs(ToSun.z) * 4F; <>             float f20 = 1.0F - Math.abs(ToSun.z) * 4F;
            if(f16 > 0.0F)               if(f20 > 0.0F)
            { =             {
                Green = 1.0F - 0.6F * f16; <>                 Green = 1.0F - 0.6F * f20;
                Blue = 1.0F - 0.7F * f16;                   Blue = 1.0F - 0.7F * f20;
            } =             }
            ToLight.set(ToSun);               ToLight.set(ToSun);
            if(ToSun.z < 0.0F)               if(ToSun.z < 0.0F)
            {               {
                ToLight.z = 0.0F;                   ToLight.z = 0.0F;
                ToLight.normalize();                   ToLight.normalize();
            }               }
        } else           } else
        {           {
            Red = 0.7F * f10; <>             Red = 0.7F * f13;
            Green = Blue = f10;               Green = Blue = f13;
            ToLight.set(ToMoon); =             ToLight.set(ToMoon);
        }           }
        activate();           activate();
  -+     }
     
        private static float cvt(float f, float f1, float f2, float f3, float f4)
        {
            f = Math.min(Math.max(f, f1), f2);
            return f3 + ((f4 - f3) * (f - f1)) / (f2 - f1);
    } =     }
     
    private static native void setNative(float f, float f1, float f2, float f3, float f4, float f5, float f6, float f7,        private static native void setNative(float f, float f1, float f2, float f3, float f4, float f5, float f6, float f7, 
            float f8);               float f8);
     
    public Vector3f ToLight;       public Vector3f ToLight;
    public Vector3f SunV;       public Vector3f SunV;
    public Vector3f ToSun;       public Vector3f ToSun;
    public Vector3f ToMoon;       public Vector3f ToMoon;
    public float Ambient;       public float Ambient;
    public float Diffuze;       public float Diffuze;
    public float Specular;       public float Specular;
    public float Red;       public float Red;
    public float Green;       public float Green;
    public float Blue;       public float Blue;
    public float MoonPhase; <>     public float moonPhase;
        private static GregorianCalendar missionDate = null;
        private float tod;
        private static final float MAX_DARKNESS = 0.095F;
        public float darkness;
        public float sunMultiplier;
    private static float DEG2RAD = 0.01745329F; =     private static float DEG2RAD = 0.01745329F;
     
}   }