ncannasse преди 7 години
родител
ревизия
8e2b08b837
променени са 3 файла, в които са добавени 19 реда и са изтрити 3 реда
  1. 7 0
      hide/prefab/Constraint.hx
  2. 4 0
      hide/prefab/Prefab.hx
  3. 8 3
      hide/prefab/Trail.hx

+ 7 - 0
hide/prefab/Constraint.hx

@@ -14,6 +14,13 @@ class Constraint extends Prefab {
 		return { object : object, target : target };
 	}
 
+	public function apply( root : h3d.scene.Object ) {
+		var srcObj = root.getObjectByName(object.split(".").pop());
+		var targetObj = root.getObjectByName(target.split(".").pop());
+		if( srcObj != null && targetObj != null ) srcObj.follow = targetObj;
+		return srcObj;
+	}
+
 	override function makeInstance( ctx : Context ) {
 		var srcObj = ctx.locateObject(object);
 		var targetObj = ctx.locateObject(target);

+ 4 - 0
hide/prefab/Prefab.hx

@@ -151,4 +151,8 @@ class Prefab {
 		return v;
 	}
 
+	public function to<T:Prefab>( c : Class<T> ) : Null<T> {
+		return Std.instance(this, c);
+	}
+
 }

+ 8 - 3
hide/prefab/Trail.hx

@@ -20,12 +20,17 @@ class Trail extends Object3D {
 		return obj;
 	}
 
-	override function makeInstance(ctx:Context):Context {
-		ctx = ctx.clone(this);
-		var tr = new h3d.scene.Trail(ctx.local3d);
+	public function make( ?parent : h3d.scene.Object ) {
+		var tr = new h3d.scene.Trail(parent);
 		tr.load(data);
 		applyPos(tr);
 		tr.name = name;
+		return tr;
+	}
+
+	override function makeInstance(ctx:Context):Context {
+		ctx = ctx.clone(this);
+		var tr = make(ctx.local3d);
 		ctx.local3d = tr;
 		return ctx;
 	}