InspectorFrame.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import EditorEvents = require("../../editor/EditorEvents");
  2. import ScriptWidget = require("../ScriptWidget");
  3. import DataBinding = require("./DataBinding");
  4. // inspectors
  5. import MaterialInspector = require("./MaterialInspector");
  6. import ModelInspector = require("./ModelInspector");
  7. import NodeInspector = require("./NodeInspector");
  8. class InspectorFrame extends ScriptWidget {
  9. inspectingNode: Atomic.Node;
  10. constructor() {
  11. super();
  12. this.gravity = Atomic.UI_GRAVITY_TOP_BOTTOM;
  13. this.load("AtomicEditor/editor/ui/inspectorframe.tb.txt");
  14. var container = this.getWidget("inspectorcontainer");
  15. this.subscribeToEvent(EditorEvents.EditResource, (data) => this.handleEditResource(data));
  16. this.subscribeToEvent(EditorEvents.ActiveNodeChange, (data) => this.handleActiveNodeChange(data));
  17. this.subscribeToEvent("ProjectUnloaded", (data) => this.handleProjectUnloaded(data));
  18. }
  19. handleProjectUnloaded(data) {
  20. this.inspectingNode = null;
  21. var container = this.getWidget("inspectorcontainer");
  22. container.deleteAllChildren();
  23. }
  24. handleEditResource(ev: EditorEvents.EditResourceEvent) {
  25. var path = ev.path;
  26. var db = ToolCore.getAssetDatabase();
  27. var asset = db.getAssetByPath(path);
  28. if (asset) {
  29. this.inspectAsset(asset);
  30. }
  31. }
  32. handleActiveNodeChange(data) {
  33. var node = <Atomic.Node> data.node;
  34. if (!node) {
  35. if (this.inspectingNode) {
  36. this.inspectingNode = null;
  37. var container = this.getWidget("inspectorcontainer");
  38. container.deleteAllChildren();
  39. }
  40. return;
  41. }
  42. this.inspectNode(node);
  43. }
  44. inspectAsset(asset: ToolCore.Asset) {
  45. this.inspectingNode = null;
  46. var container = this.getWidget("inspectorcontainer");
  47. container.deleteAllChildren();
  48. if (asset.importerTypeName == "ModelImporter") {
  49. var inspector = new ModelInspector();
  50. container.addChild(inspector);
  51. inspector.inspect(asset);
  52. }
  53. if (asset.importerTypeName == "MaterialImporter") {
  54. var cache = Atomic.getResourceCache();
  55. var material = <Atomic.Material> cache.getResource("Material", asset.path);
  56. if (!material) {
  57. return;
  58. }
  59. var materialInspector = new MaterialInspector();
  60. container.addChild(materialInspector);
  61. materialInspector.inspect(asset, material);
  62. }
  63. }
  64. inspectNode(node: Atomic.Node) {
  65. if (!node) return;
  66. var container = this.getWidget("inspectorcontainer");
  67. container.deleteAllChildren();
  68. var inspector = new NodeInspector();
  69. container.addChild(inspector);
  70. inspector.inspect(node);
  71. this.inspectingNode = node;
  72. }
  73. }
  74. export = InspectorFrame;