|
@@ -542,12 +542,6 @@ class FX extends Object3D implements BaseFX {
|
|
static var identRegex = ~/^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
static var identRegex = ~/^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
#end
|
|
#end
|
|
|
|
|
|
- /*override function save(data : Dynamic) {
|
|
|
|
- super.save(data);
|
|
|
|
- data.cullingRadius = cullingRadius;
|
|
|
|
- if( scriptCode != "" ) data.scriptCode = scriptCode;
|
|
|
|
- }*/
|
|
|
|
-
|
|
|
|
public function new(parent:Prefab, contextShared: ContextShared) {
|
|
public function new(parent:Prefab, contextShared: ContextShared) {
|
|
super(parent, contextShared);
|
|
super(parent, contextShared);
|
|
duration = 5.0;
|
|
duration = 5.0;
|
|
@@ -561,9 +555,10 @@ class FX extends Object3D implements BaseFX {
|
|
if ( shadersRoot == null )
|
|
if ( shadersRoot == null )
|
|
continue;
|
|
continue;
|
|
var newRoot = new hrt.prefab.Object3D(null, sh);
|
|
var newRoot = new hrt.prefab.Object3D(null, sh);
|
|
- for ( c in shadersRoot.children )
|
|
|
|
- if ( Std.isOfType(c, Shader) )
|
|
|
|
|
|
+ for ( c in shadersRoot.children ) {
|
|
|
|
+ if ( Std.isOfType(c, Shader) || Std.isOfType(c, Material) || Std.isOfType(c, MaterialSelector) )
|
|
c.parent = newRoot;
|
|
c.parent = newRoot;
|
|
|
|
+ }
|
|
newRoot.name = shadersRoot.name;
|
|
newRoot.name = shadersRoot.name;
|
|
newRoot.parent = shadersRoot.parent;
|
|
newRoot.parent = shadersRoot.parent;
|
|
shadersRoot.parent = null;
|
|
shadersRoot.parent = null;
|
|
@@ -650,7 +645,12 @@ class FX extends Object3D implements BaseFX {
|
|
var shadersRoot = find(Prefab, p -> target.name == p.name);
|
|
var shadersRoot = find(Prefab, p -> target.name == p.name);
|
|
if ( shadersRoot == null )
|
|
if ( shadersRoot == null )
|
|
continue;
|
|
continue;
|
|
- applyShadersToTarget(shadersRoot, target.object);
|
|
|
|
|
|
+ var obj3d = Std.downcast(shadersRoot, Object3D);
|
|
|
|
+ if ( obj3d == null )
|
|
|
|
+ continue;
|
|
|
|
+ obj3d.local3d = target.object;
|
|
|
|
+ for ( s in obj3d.findAll(Shader) )
|
|
|
|
+ s.apply();
|
|
}
|
|
}
|
|
|
|
|
|
var fxAnim : FXAnimation = cast local3d;
|
|
var fxAnim : FXAnimation = cast local3d;
|
|
@@ -661,27 +661,12 @@ class FX extends Object3D implements BaseFX {
|
|
var shadersRoot = find(Prefab, p -> target.name == p.name);
|
|
var shadersRoot = find(Prefab, p -> target.name == p.name);
|
|
if ( shadersRoot == null )
|
|
if ( shadersRoot == null )
|
|
continue;
|
|
continue;
|
|
- removeShadersFromTarget(shadersRoot, target.object);
|
|
|
|
|
|
+ for ( s in shadersRoot.findAll(Shader) )
|
|
|
|
+ s.dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- function applyShadersToTarget( source : Prefab, target : h3d.scene.Object ) {
|
|
|
|
- var shaders = source.findAll(Shader);
|
|
|
|
- var mats = target.getMaterials();
|
|
|
|
- for ( m in mats )
|
|
|
|
- for ( s in shaders)
|
|
|
|
- m.mainPass.addShader(s.shader);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- function removeShadersFromTarget( source : Prefab, target : h3d.scene.Object ) {
|
|
|
|
- var shaders = source.findAll(Shader);
|
|
|
|
- var mats = target.getMaterials();
|
|
|
|
- for ( m in mats )
|
|
|
|
- for ( s in shaders)
|
|
|
|
- m.mainPass.removeShader(s.shader);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
#if editor
|
|
#if editor
|
|
|
|
|
|
override function onEditorTreeChanged(child: Prefab) : hrt.prefab.Prefab.TreeChangedResult {
|
|
override function onEditorTreeChanged(child: Prefab) : hrt.prefab.Prefab.TreeChangedResult {
|