From 1ed0101823258681dd2049cf51a37dd3a739231e Mon Sep 17 00:00:00 2001 From: pataroose Date: Fri, 25 Apr 2014 21:16:29 -0500 Subject: [PATCH] opIndexAssign for shader parameters --- src/dsfml/graphics/shader.d | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/dsfml/graphics/shader.d b/src/dsfml/graphics/shader.d index f807fdd..d44b2a1 100644 --- a/src/dsfml/graphics/shader.d +++ b/src/dsfml/graphics/shader.d @@ -178,6 +178,55 @@ class Shader err.write(text(sfErrGraphics_getOutput())); return (sfPtr == null)?false:true; } + + void opIndexAssign(float x, string name) + { + sfShader_setFloatParameter(sfPtr, toStringz(name), x); + } + + void opIndexAssign(float[] val, string name) + { + if(val.length == 1) + sfShader_setFloatParameter(sfPtr, toStringz(key), val[0]); + else if(val.length == 2) + sfShader_setFloat2Parameter(sfPtr, toStringz(key), val[0], val[1]); + else if(val.length == 3) + sfShader_setFloat3Parameter(sfPtr, toStringz(key), val[0], val[1], val[2]); + else if(val.length >= 4) + sfShader_setFloat4Parameter(sfPtr, toStringz(key), val[0], val[1], val[2], val[3]); + } + + void opIndexAssign(Vector2f vector, string name) + { + sfShader_setFloat2Parameter(sfPtr, toStringz(name), vector.x, vector.y); + } + + void opIndexAssign(Vector3f vector, string name) + { + sfShader_setFloat3Parameter(sfPtr, toStringz(name), vector.x, vector.y, vector.z); + } + + void opIndexAssign(Color color, string name) + { + sfShader_setColorParameter(sfPtr, toStringz(name), color.r, color.g, color.b, color.a); + } + + void opIndexAssign(Transform transform, string name) + { + sfShader_setTransformParameter(sfPtr, toStringz(name), transform.m_matrix.ptr); + } + + void opIndexAssign(Texture texture, string name) + { + import std.conv; + sfShader_setTextureParameter(sfPtr, toStringz(name), texture.sfPtr); + err.write(text(sfErrGraphics_getOutput())); + } + + void opIndexAssign(CurrentTextureType, string name) + { + sfShader_setCurrentTextureParameter(sfPtr, toStringz(name)); + } void setParameter(string name, float x) {