소스 검색

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;
 		shader = cl._SHADER;
 		constModified = true;
 		constModified = true;
 		if( shader == null ) {
 		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;
+			}
 		}
 		}
 	}
 	}