Ejemplo n.º 1
0
    private void LateUpdate()
    {
        AmbientLightSettings volume = AmbientLightSettings.FindVolume(((Component)this).get_transform().get_position());

        if (Object.op_Inequality((Object)volume, (Object)this.mNextAmbientVolume) && Object.op_Inequality((Object)volume, (Object)this.mCurrentAmbientVolume))
        {
            this.mNextAmbientVolume      = volume;
            this.mAmbientStateStart      = this.mCurrentAmbientState;
            this.mAmbientStateEnd        = (AmbientLightSettings.State) this.mNextAmbientVolume;
            this.mAmbientStateTransition = 0.0f;
        }
        if (!Object.op_Inequality((Object)this.mCurrentAmbientVolume, (Object)this.mNextAmbientVolume))
        {
            return;
        }
        this.mAmbientStateTransition = Mathf.Clamp01(this.mAmbientStateTransition + Time.get_deltaTime());
        this.mCurrentAmbientState    = AmbientLightSettings.State.Lerp(this.mAmbientStateStart, this.mAmbientStateEnd, this.mAmbientStateTransition);
        if ((double)this.mAmbientStateTransition < 1.0)
        {
            return;
        }
        this.mCurrentAmbientVolume = this.mNextAmbientVolume;
        this.mNextAmbientVolume    = (AmbientLightSettings)null;
    }
Ejemplo n.º 2
0
    public void Bake()
    {
        Light[] objectsOfType = (Light[])Object.FindObjectsOfType <Light>();
        Light[] all1          = Array.FindAll <Light>(objectsOfType, (Predicate <Light>)(lit => lit.get_type() == 1));
        Light[] all2          = Array.FindAll <Light>(objectsOfType, (Predicate <Light>)(lit => lit.get_type() == 2));
        Color   color1        = Color.get_black();

        foreach (Light light in all1)
        {
            color1 = Color.op_Addition(color1, Color.op_Multiply(light.get_color(), light.get_intensity()));
        }
        Color color2 = Color.op_Multiply(color1, this.DirectLightingScale);

        color2.a = (__Null)1.0;
        using (List <ColorBlendVolume> .Enumerator enumerator = ColorBlendVolume.Volumes.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                enumerator.Current.UpdateBounds();
            }
        }
        for (int x = 0; x < this.XSize; ++x)
        {
            for (int y = 0; y < this.YSize; ++y)
            {
                for (int z = 0; z < this.ZSize; ++z)
                {
                    Vector3 vector3_1 = this.CalcCenter(x, y, z);
                    Color   color3;
                    // ISSUE: explicit reference operation
                    ((Color)@color3).\u002Ector(0.0f, 0.0f, 0.0f);
                    Color color4;
                    // ISSUE: explicit reference operation
                    ((Color)@color4).\u002Ector(0.0f, 0.0f, 0.0f);
                    int index1 = x + y * this.XSize + z * this.XSize * this.YSize;
                    AmbientLightSettings volume1 = AmbientLightSettings.FindVolume(vector3_1);
                    color3 = Color.op_Addition(color2, Color.op_Multiply(volume1.AmbientLightColor, this.AmbientLitToDirectLit));
                    for (int index2 = 0; index2 < all2.Length; ++index2)
                    {
                        Vector3 vector3_2 = Vector3.op_Subtraction(vector3_1, ((Component)all2[index2]).get_transform().get_position());
                        // ISSUE: explicit reference operation
                        float num = Mathf.Clamp01((float)(1.0 - (double)((Vector3)@vector3_2).get_magnitude() / (double)all2[index2].get_range())) * all2[index2].get_intensity();
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local1 = @color3;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local1).r = (__Null)((^ local1).r + all2[index2].get_color().r *(double)num * (double)this.PointLitToDirectLit);
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local2 = @color3;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local2).g = (__Null)((^ local2).g + all2[index2].get_color().g *(double)num * (double)this.PointLitToDirectLit);
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local3 = @color3;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local3).b = (__Null)((^ local3).b + all2[index2].get_color().b *(double)num * (double)this.PointLitToDirectLit);
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local4 = @color4;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local4).r = (__Null)((^ local4).r + all2[index2].get_color().r *(double)num * (double)this.PointLitToIndirectLit);
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local5 = @color4;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local5).g = (__Null)((^ local5).g + all2[index2].get_color().g *(double)num * (double)this.PointLitToIndirectLit);
                        // ISSUE: explicit reference operation
                        // ISSUE: variable of a reference type
                        Color& local6 = @color4;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        (^ local6).b = (__Null)((^ local6).b + all2[index2].get_color().b *(double)num * (double)this.PointLitToIndirectLit);
                    }
                    color4 = Color.op_Multiply(color4, this.IndirectLightingScale);
                    color4 = Color.op_Addition(color4, Color.op_Multiply(volume1.AmbientLightColor, this.AmbientLitToIndirectLit));
                    ColorBlendVolume volume2 = ColorBlendVolume.FindVolume(vector3_1);
                    if (Object.op_Inequality((Object)volume2, (Object)null))
                    {
                        color3 = Color.op_Multiply(color3, Color32.op_Implicit(volume2.Color));
                        color4 = Color.op_Multiply(color4, Color32.op_Implicit(volume2.Color));
                    }
                    color3.a = (__Null)1.0;
                    color4.a = (__Null)1.0;
                    this.mVoxel[index1].DirectLightColor   = Color32.op_Implicit(color3);
                    this.mVoxel[index1].IndirectLightColor = Color32.op_Implicit(color4);
                }
            }
        }
    }