@@ -0,0 +1,1531 @@
+package engine.util;%0A%0Apublic class Color %7B%0A%0A    private float r;%0A    private float g;%0A    private float b;%0A    private float a;%0A%0A    private Color(Color c) %7B%0A        this(c.r, c.g, c.b, c.a);%0A    %7D%0A%0A    public Color(float r, float g, float b) %7B%0A        this(r, g, b, 1);%0A    %7D%0A%0A    public Color(float r, float g, float b, float a) %7B%0A        setR(r);%0A        setG(g);%0A        setB(b);%0A        setA(a);%0A    %7D%0A%0A    public Color add(Color c) %7B%0A        setR(this.r + c.r);%0A        setG(this.g + c.g);%0A        setB(this.b + c.b);%0A        setA(this.a + c.a);%0A        return this;%0A    %7D%0A%0A    public Color mul(Color c) %7B%0A        this.r *= c.r;%0A        this.g *= c.g;%0A        this.b *= c.b;%0A        this.a *= c.a;%0A        return this;%0A    %7D%0A%0A    public Color negate() %7B%0A        this.r = 1 - this.r;%0A        this.g = 1 - this.g;%0A        this.b = 1 - this.b;%0A        return this;%0A    %7D%0A%0A    public Color clone() %7B%0A        return new Color(this);%0A    %7D%0A%0A    public float getR() %7B%0A        return r;%0A    %7D%0A%0A    public void setR(float r) %7B%0A        this.r = clampToRange(r);%0A    %7D%0A%0A    public float getG() %7B%0A        return g;%0A    %7D%0A%0A    public void setG(float g) %7B%0A        this.g = clampToRange(g);%0A    %7D%0A%0A    public float getB() %7B%0A        return b;%0A    %7D%0A%0A    public void setB(float b) %7B%0A        this.b = clampToRange(b);%0A    %7D%0A%0A    public float getA() %7B%0A        return a;%0A    %7D%0A%0A    public void setA(float a) %7B%0A        this.a = clampToRange(a);%0A    %7D%0A%0A    private float clampToRange(float f) %7B%0A        return Math.min(1, Math.max(0, f));%0A    %7D%0A%7D%0A

add Color class.