|
@@ -23,11 +23,12 @@ class SceneTree extends IconTree<String> {
|
|
|
}
|
|
|
if( path.length == 0 )
|
|
|
return root;
|
|
|
- var prop = path.shift();
|
|
|
+ var prop = path[0];
|
|
|
switch( prop.split(":").shift() ) {
|
|
|
case "mat":
|
|
|
return root.toMesh().getMaterials()[Std.parseInt(prop.substr(4))];
|
|
|
- default:
|
|
|
+ case "joint":
|
|
|
+ return root.getObjectByName(path.pop().substr(6));
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
@@ -50,17 +51,16 @@ class SceneTree extends IconTree<String> {
|
|
|
var v : Dynamic = resolvePath(id);
|
|
|
|
|
|
var obj = Std.downcast(v, h3d.scene.Object);
|
|
|
+ if( obj == null || Std.is(obj,h3d.scene.Skin.Joint) ) return;
|
|
|
|
|
|
- if (obj != null) {
|
|
|
- if (el.find(".fa-eye").length == 0) {
|
|
|
- var visibilityToggle = new Element('<i class="fa fa-eye visibility-large-toggle"/>').appendTo(el.find(".jstree-anchor").first());
|
|
|
- visibilityToggle.click(function (e) {
|
|
|
- obj.visible = !obj.visible;
|
|
|
- el.toggleClass("hidden", !obj.visible);
|
|
|
- });
|
|
|
- }
|
|
|
- el.toggleClass("hidden", !obj.visible);
|
|
|
+ if (el.find(".fa-eye").length == 0) {
|
|
|
+ var visibilityToggle = new Element('<i class="fa fa-eye visibility-large-toggle"/>').appendTo(el.find(".jstree-anchor").first());
|
|
|
+ visibilityToggle.click(function (e) {
|
|
|
+ obj.visible = !obj.visible;
|
|
|
+ el.toggleClass("hidden", !obj.visible);
|
|
|
+ });
|
|
|
}
|
|
|
+ el.toggleClass("hidden", !obj.visible);
|
|
|
}
|
|
|
|
|
|
function getIcon( c : h3d.scene.Object ) {
|
|
@@ -80,9 +80,15 @@ class SceneTree extends IconTree<String> {
|
|
|
var root = showRoot ? obj.parent : obj;
|
|
|
var path = id == null ? "" : id+"/";
|
|
|
if( id != null ) {
|
|
|
- var parts = [for(p in id.split("/")) Std.parseInt(p)];
|
|
|
- for( p in parts )
|
|
|
- root = root.getChildAt(p);
|
|
|
+ var parts = [for(p in id.split("/")) { id : p, index : Std.parseInt(p) }];
|
|
|
+ for( p in parts ) {
|
|
|
+ if( StringTools.startsWith(p.id,"joint:") ) {
|
|
|
+ root = root.getObjectByName(parts.pop().id.substr(6)); // last joint only
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ root = root.getChildAt(p.index);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
var elements : Array<IconTree.IconTreeItem<String>> = [
|
|
|
for( i in 0...root.numChildren ) {
|
|
@@ -106,6 +112,27 @@ class SceneTree extends IconTree<String> {
|
|
|
icon : "fa fa-photo",
|
|
|
});
|
|
|
}
|
|
|
+ var sk = Std.downcast(root,h3d.scene.Skin);
|
|
|
+ if( sk != null ) {
|
|
|
+ for( j in sk.getSkinData().rootJoints )
|
|
|
+ elements.push({
|
|
|
+ value: path+"joint:"+j.name,
|
|
|
+ text : j.name,
|
|
|
+ icon : "fa fa-gg",
|
|
|
+ children : j.subs.length > 0,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var joint = Std.downcast(root,h3d.scene.Skin.Joint);
|
|
|
+ if( joint != null ) {
|
|
|
+ var j = joint.skin.getSkinData().allJoints[joint.index];
|
|
|
+ for( j in j.subs )
|
|
|
+ elements.push({
|
|
|
+ value: path+"joint:"+j.name,
|
|
|
+ text : j.name,
|
|
|
+ icon : "fa fa-gg",
|
|
|
+ children : j.subs.length > 0,
|
|
|
+ });
|
|
|
}
|
|
|
return elements;
|
|
|
}
|