InspectorFrame.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. import EditorEvents = require("editor/EditorEvents");
  8. import ScriptWidget = require("ui/ScriptWidget");
  9. import DataBinding = require("./DataBinding");
  10. // inspectors
  11. import MaterialInspector = require("./MaterialInspector");
  12. import ModelInspector = require("./ModelInspector");
  13. import NodeInspector = require("./NodeInspector");
  14. import AssemblyInspector = require("./AssemblyInspector");
  15. import PrefabInspector = require("./PrefabInspector");
  16. class InspectorFrame extends ScriptWidget {
  17. inspectingNode: Atomic.Node;
  18. constructor() {
  19. super();
  20. this.gravity = Atomic.UI_GRAVITY_TOP_BOTTOM;
  21. this.load("AtomicEditor/editor/ui/inspectorframe.tb.txt");
  22. var container = this.getWidget("inspectorcontainer");
  23. this.subscribeToEvent(EditorEvents.EditResource, (data) => this.handleEditResource(data));
  24. this.subscribeToEvent(EditorEvents.ActiveNodeChange, (data) => this.handleActiveNodeChange(data));
  25. this.subscribeToEvent("ProjectUnloaded", (data) => this.handleProjectUnloaded(data));
  26. this.subscribeToEvent("NodeRemoved", (ev: Atomic.NodeRemovedEvent) => this.handleNodeRemoved(ev));
  27. }
  28. handleProjectUnloaded(data) {
  29. this.inspectingNode = null;
  30. var container = this.getWidget("inspectorcontainer");
  31. container.deleteAllChildren();
  32. }
  33. handleEditResource(ev: EditorEvents.EditResourceEvent) {
  34. var path = ev.path;
  35. var db = ToolCore.getAssetDatabase();
  36. var asset = db.getAssetByPath(path);
  37. if (asset) {
  38. this.inspectAsset(asset);
  39. }
  40. }
  41. handleActiveNodeChange(data) {
  42. var node = <Atomic.Node> data.node;
  43. if (!node) {
  44. if (this.inspectingNode) {
  45. this.inspectingNode = null;
  46. var container = this.getWidget("inspectorcontainer");
  47. container.deleteAllChildren();
  48. }
  49. return;
  50. }
  51. this.inspectNode(node);
  52. }
  53. inspectAsset(asset: ToolCore.Asset) {
  54. this.inspectingNode = null;
  55. var container = this.getWidget("inspectorcontainer");
  56. container.deleteAllChildren();
  57. if (asset.importerTypeName == "ModelImporter") {
  58. var inspector = new ModelInspector();
  59. container.addChild(inspector);
  60. inspector.inspect(asset);
  61. }
  62. if (asset.importerTypeName == "MaterialImporter") {
  63. var cache = Atomic.getResourceCache();
  64. var material = <Atomic.Material> cache.getResource("Material", asset.path);
  65. if (!material) {
  66. return;
  67. }
  68. var materialInspector = new MaterialInspector();
  69. container.addChild(materialInspector);
  70. materialInspector.inspect(asset, material);
  71. }
  72. if (asset.importerTypeName == "NETAssemblyImporter") {
  73. var assemblyInspector = new AssemblyInspector();
  74. container.addChild(assemblyInspector);
  75. assemblyInspector.inspect(asset);
  76. }
  77. if (asset.importerTypeName == "PrefabImporter") {
  78. var prefabInspector = new PrefabInspector();
  79. container.addChild(prefabInspector);
  80. prefabInspector.inspect(asset);
  81. }
  82. }
  83. handleNodeRemoved(ev: Atomic.NodeRemovedEvent) {
  84. if (this.inspectingNode != ev.node)
  85. return;
  86. this.inspectingNode = null;
  87. var container = this.getWidget("inspectorcontainer");
  88. container.deleteAllChildren();
  89. }
  90. inspectNode(node: Atomic.Node) {
  91. if (!node) return;
  92. var container = this.getWidget("inspectorcontainer");
  93. container.deleteAllChildren();
  94. var inspector = new NodeInspector();
  95. container.addChild(inspector);
  96. inspector.inspect(node);
  97. this.inspectingNode = node;
  98. }
  99. }
  100. export = InspectorFrame;