InspectorFrame.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import EditorEvents = require("editor/EditorEvents");
  2. import ScriptWidget = require("ui/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. this.subscribeToEvent("NodeRemoved", (ev: Atomic.NodeRemovedEvent) => this.handleNodeRemoved(ev));
  19. }
  20. handleProjectUnloaded(data) {
  21. this.inspectingNode = null;
  22. var container = this.getWidget("inspectorcontainer");
  23. container.deleteAllChildren();
  24. }
  25. handleEditResource(ev: EditorEvents.EditResourceEvent) {
  26. var path = ev.path;
  27. var db = ToolCore.getAssetDatabase();
  28. var asset = db.getAssetByPath(path);
  29. if (asset) {
  30. this.inspectAsset(asset);
  31. }
  32. }
  33. handleActiveNodeChange(data) {
  34. var node = <Atomic.Node> data.node;
  35. if (!node) {
  36. if (this.inspectingNode) {
  37. this.inspectingNode = null;
  38. var container = this.getWidget("inspectorcontainer");
  39. container.deleteAllChildren();
  40. }
  41. return;
  42. }
  43. this.inspectNode(node);
  44. }
  45. inspectAsset(asset: ToolCore.Asset) {
  46. this.inspectingNode = null;
  47. var container = this.getWidget("inspectorcontainer");
  48. container.deleteAllChildren();
  49. if (asset.importerTypeName == "ModelImporter") {
  50. var inspector = new ModelInspector();
  51. container.addChild(inspector);
  52. inspector.inspect(asset);
  53. }
  54. if (asset.importerTypeName == "MaterialImporter") {
  55. var cache = Atomic.getResourceCache();
  56. var material = <Atomic.Material> cache.getResource("Material", asset.path);
  57. if (!material) {
  58. return;
  59. }
  60. var materialInspector = new MaterialInspector();
  61. container.addChild(materialInspector);
  62. materialInspector.inspect(asset, material);
  63. }
  64. }
  65. handleNodeRemoved(ev: Atomic.NodeRemovedEvent) {
  66. if (this.inspectingNode != ev.node)
  67. return;
  68. this.inspectNode = null;
  69. var container = this.getWidget("inspectorcontainer");
  70. container.deleteAllChildren();
  71. }
  72. inspectNode(node: Atomic.Node) {
  73. if (!node) return;
  74. var container = this.getWidget("inspectorcontainer");
  75. container.deleteAllChildren();
  76. var inspector = new NodeInspector();
  77. container.addChild(inspector);
  78. inspector.inspect(node);
  79. this.inspectingNode = node;
  80. }
  81. }
  82. export = InspectorFrame;