浏览代码

allow shader inheritance without SRC

ncannasse 8 年之前
父节点
当前提交
584f8d488a
共有 1 个文件被更改,包括 10 次插入2 次删除
  1. 10 2
      hxsl/Shader.hx

+ 10 - 2
hxsl/Shader.hx

@@ -15,8 +15,16 @@ class Shader {
 		shader = cl._SHADER;
 		constModified = true;
 		if( shader == null ) {
-			shader = new SharedShader(cl.SRC);
-			cl._SHADER = shader;
+			var curClass : Dynamic = cl;
+			while( curClass != null && curClass.SRC == null )
+				curClass = std.Type.getSuperClass(curClass);
+			if( curClass == null )
+				throw std.Type.getClassName(cl) + " has no shader source";
+			shader = curClass._SHADER;
+			if( shader == null ) {
+				shader = new SharedShader(curClass.SRC);
+				curClass._SHADER = shader;
+			}
 		}
 	}