소스 검색

add Pass.removeShaders

trethaller 3 년 전
부모
커밋
77d0bed117
1개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      h3d/mat/Pass.hx

+ 15 - 0
h3d/mat/Pass.hx

@@ -231,6 +231,21 @@ class Pass {
 		return false;
 	}
 
+	public function removeShaders< T:hxsl.Shader >(t:Class<T>) {
+		var sl = shaders, prev = null;
+		while( sl != null ) {
+			if( hxd.impl.Api.isOfType(sl.s, t) ) {
+				if( prev == null )
+					shaders = sl.next;
+				else
+					prev.next = sl.next;
+			}
+			else
+				prev = sl;
+			sl = sl.next;
+		}
+	}
+
 	public function getShader< T:hxsl.Shader >(t:Class<T>) : T {
 		var s = shaders;
 		while( s != parentShaders ) {