From 890a69c1a93b718a5fd622b04f9fe0b57bbcfab0 Mon Sep 17 00:00:00 2001 From: Peter Tissen Date: Mon, 8 Jun 2015 22:07:24 +0200 Subject: [PATCH] recolor the slider border from the skin or beatmap settings --- src/itdelatrisu/opsu/render/CurveRenderState.java | 15 ++++++++++++++- src/itdelatrisu/opsu/skins/Skin.java | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/itdelatrisu/opsu/render/CurveRenderState.java b/src/itdelatrisu/opsu/render/CurveRenderState.java index a6f6e1a7..1af760b8 100644 --- a/src/itdelatrisu/opsu/render/CurveRenderState.java +++ b/src/itdelatrisu/opsu/render/CurveRenderState.java @@ -18,7 +18,9 @@ package itdelatrisu.opsu.render; import itdelatrisu.opsu.GameImage; +import itdelatrisu.opsu.Options; import itdelatrisu.opsu.Utils; +import itdelatrisu.opsu.audio.MusicController; import itdelatrisu.opsu.beatmap.HitObject; import itdelatrisu.opsu.objects.curves.Vec2f; @@ -260,6 +262,12 @@ public class CurveRenderState { GL20.glEnableVertexAttribArray(staticState.texCoordLoc); GL20.glUniform1i(staticState.texLoc, 0); GL20.glUniform3f(staticState.colLoc, color.r, color.g, color.b); + Color borderColor; + if(Options.isBeatmapSkinIgnored()) + borderColor = Options.getSkin().getSliderBorderColor(); + else + borderColor = MusicController.getBeatmap().getSliderBorderColor(); + GL20.glUniform4f(staticState.colBorderLoc,borderColor.r,borderColor.g,borderColor.b,borderColor.a); //stride is 6*4 for the floats (4 bytes) (u,v)(x,y,z,w) //2*4 is for skipping the first 2 floats (u,v) GL20.glVertexAttribPointer(staticState.attribLoc, 4, GL11.GL_FLOAT, false, 6 * 4, 2 * 4); @@ -348,6 +356,9 @@ public class CurveRenderState { /** OpenGL shader uniform location of the color attribute. */ protected int colLoc = 0; + /** OpenGL shader uniform location of the border color attribute */ + protected int colBorderLoc = 0; + /** OpenGL shader uniform location of the texture sampler attribute. */ protected int texLoc = 0; @@ -408,6 +419,7 @@ public class CurveRenderState { + "uniform sampler1D tex;\n" + "uniform vec2 tex_size;\n" + "uniform vec3 col_tint;\n" + + "uniform vec4 col_border;\n" + "\n" + "in vec2 tex_coord;\n" + "layout(location = 0) out vec4 out_colour;\n" @@ -416,7 +428,7 @@ public class CurveRenderState { + "{\n" + " vec4 in_color = texture(tex, tex_coord.x);\n" + " float blend_factor = in_color.r-in_color.b;\n" - + " vec4 new_color = vec4(mix(in_color.xyz,col_tint,blend_factor),in_color.w);\n" + + " vec4 new_color = vec4(mix(in_color.xyz*col_border.xyz,col_tint,blend_factor),in_color.w);\n" + " out_colour = new_color;\n" + "}"); GL20.glCompileShader(frgShdr); @@ -437,6 +449,7 @@ public class CurveRenderState { texCoordLoc = GL20.glGetAttribLocation(program, "in_tex_coord"); texLoc = GL20.glGetUniformLocation(program, "tex"); colLoc = GL20.glGetUniformLocation(program, "col_tint"); + colBorderLoc = GL20.glGetUniformLocation(program, "col_border"); } } } diff --git a/src/itdelatrisu/opsu/skins/Skin.java b/src/itdelatrisu/opsu/skins/Skin.java index affcb858..28c40b0b 100644 --- a/src/itdelatrisu/opsu/skins/Skin.java +++ b/src/itdelatrisu/opsu/skins/Skin.java @@ -54,7 +54,7 @@ public class Skin { private static final Color DEFAULT_MENU_GLOW = new Color(0, 78, 155); /** The default slider border color. */ - private static final Color DEFAULT_SLIDER_BORDER = new Color(38, 38, 38); + private static final Color DEFAULT_SLIDER_BORDER = new Color(255, 255, 255); /** The default slider ball color. */ private static final Color DEFAULT_SLIDER_BALL = new Color(2, 170, 255);