package hide.comp; class TextureSelect extends FileSelect { public var value(default, set) : h3d.mat.Texture; public var area(default, set) : { x : Int, y : Int, width : Int, height : Int }; var preview : Element; public function new(?parent,?root) { preview = new Element("
"); super(hide.Ide.IMG_EXTS, parent, root); preview.insertAfter(root); } override function remove() { super.remove(); preview.remove(); } function set_area(v) { area = v; this.path = path; return v; } override function set_path(p:String) { super.set_path(p); if( p == null ) value = null; else if( value == null || value.name != p ) { var scene = Scene.getNearest(element); if( scene != null ) { scene.setCurrent(); value = scene.loadTexture("", p); } } if( p == null ) preview.hide(); else { preview.show(); preview.css("background-image", "url('file://" + ide.getPath(p) + "')"); preview.css("background-size", area == null ? "15px 15px" : area.width + "px " + area.height + "px"); preview.css("background-position", area == null ? "" : area.x + "px " + area.y + "px"); } return p; } function set_value(t:h3d.mat.Texture) { value = t; var p = value == null ? null : value.name; if( p != path ) this.path = p; return t; } }