1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package hrt.prefab;
- @:final class Context {
- public var local2d : h2d.Object;
- public var local3d : h3d.scene.Object;
- public var shared : ContextShared;
- public var cleanup : Void -> Void;
- public var custom : Dynamic;
- public var isRef : Bool = false;
- public function new() {
- }
- public function init() {
- if( shared == null )
- shared = new ContextShared();
- local2d = shared.root2d;
- local3d = shared.root3d;
- }
- public function clone( p : Prefab ) {
- var c = new Context();
- c.shared = shared;
- c.local2d = local2d;
- c.local3d = local3d;
- c.custom = custom;
- c.isRef = isRef;
- if( p != null ) {
- if(!isRef)
- shared.contexts.set(p, c);
- else {
- if(!shared.references.exists(p))
- shared.references.set(p, [c])
- else
- shared.references[p].push(c);
- }
- }
- return c;
- }
- public function loadModel( path : String ) {
- return shared.loadModel(path);
- }
- public function loadAnimation( path : String ) {
- return shared.loadAnimation(path);
- }
- public function loadTexture( path : String ) {
- return shared.loadTexture(path);
- }
- public function loadShader( name : String ) {
- return shared.loadShader(name);
- }
- public function locateObject( path : String ) {
- if( path == null )
- return null;
- var parts = path.split(".");
- var root = shared.root3d;
- while( parts.length > 0 ) {
- var v = null;
- var pname = parts.shift();
- for( o in root )
- if( o.name == pname ) {
- v = o;
- break;
- }
- if( v == null ) {
- v = root.getObjectByName(pname);
- //if( v != null && v.parent != root ) v = null; ??
- }
- if( v == null ) {
- var parts2 = path.split(".");
- for( i in 0...parts.length ) parts2.pop();
- shared.onError("Object not found " + parts2.join("."));
- return null;
- }
- root = v;
- }
- return root;
- }
- }
|