NewParticleEmitterDialog.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. function NewParticleEmitterDialog::init(%this, %width, %height)
  2. {
  3. //Get the dialog contents
  4. %window = %this.getObject(0);
  5. %content = %window.getObject(0);
  6. //Create the file text box
  7. %form = new GuiGridCtrl()
  8. {
  9. class = "EditorForm";
  10. extent = %width SPC %height;
  11. cellSizeX = %width;
  12. cellSizeY = 50;
  13. };
  14. %form.addListener(%this);
  15. %item = %form.addFormItem("Image Asset", %width SPC 30);
  16. %this.imageDropDown = %form.createDropDownItem(%item);
  17. %this.populateImageDropDown();
  18. %item = %form.addFormItem("Animation Asset", %width SPC 30);
  19. %this.animationDropDown = %form.createDropDownItem(%item);
  20. %this.populateAnimationDropDown();
  21. %item = %form.addFormItem("Emitter Name", %width SPC 30);
  22. %this.emitterNameBox = %form.createTextEditItem(%item);
  23. %this.emitterNameBox.Command = %this.getId() @ ".Validate();";
  24. %content.add(%form);
  25. %this.cancelButton = new GuiButtonCtrl()
  26. {
  27. HorizSizing = "right";
  28. VertSizing = "bottom";
  29. Position = "478 160";
  30. Extent = "100 30";
  31. Text = "Cancel";
  32. Command = %this.getID() @ ".onClose();";
  33. };
  34. ThemeManager.setProfile(%this.cancelButton, "buttonProfile");
  35. %this.createButton = new GuiButtonCtrl()
  36. {
  37. HorizSizing = "right";
  38. VertSizing = "bottom";
  39. Position = "588 158";
  40. Extent = "100 34";
  41. Text = "Create";
  42. Command = %this.getID() @ ".onCreate();";
  43. Active = false;
  44. };
  45. ThemeManager.setProfile(%this.createButton, "primaryButtonProfile");
  46. %content.add(%this.cancelButton);
  47. %content.add(%this.createButton);
  48. }
  49. function NewParticleEmitterDialog::Validate(%this)
  50. {
  51. %this.createButton.active = false;
  52. %emitterName = %this.emitterNameBox.getText();
  53. %imageAssetID = %this.imageDropDown.getText();
  54. %animationAssetID = %this.animationDropDown.getText();
  55. if(%emitterName !$= "" && (%imageAssetID $= "" || %animationAssetID $= ""))
  56. {
  57. %this.createButton.active = true;
  58. return true;
  59. }
  60. return false;
  61. }
  62. function NewParticleEmitterDialog::onClose(%this)
  63. {
  64. Canvas.popDialog(%this);
  65. }
  66. function NewParticleEmitterDialog::onCreate(%this)
  67. {
  68. if(%this.validate())
  69. {
  70. %emitter = %this.parentAsset.createEmitter();
  71. if(%emitter != 0)
  72. {
  73. %emitter.setEmitterName(%this.emitterNameBox.getText());
  74. if(%this.imageDropDown.getText() !$= "")
  75. {
  76. %emitter.setImage(%this.imageDropDown.getText());
  77. }
  78. else
  79. {
  80. %emitter.setAnimation(%this.animationDropDown.getText());
  81. }
  82. %i = %this.parentAsset.getEmitterCount();
  83. AssetAdmin.Inspector.titleDropDown.addItem("Emitter:" SPC %emitter.EmitterName);
  84. AssetAdmin.Inspector.titleDropDown.setItemColor(%i, ThemeManager.activeTheme.color5);
  85. AssetAdmin.Inspector.titleDropDown.setSelected(%i);
  86. AssetAdmin.Inspector.onChooseParticleAsset(%this.parentAsset);
  87. }
  88. else
  89. {
  90. warn("NewParticleEmitterDialog::onCreate - No emitter created!");
  91. }
  92. %this.onClose();
  93. }
  94. }
  95. function NewParticleEmitterDialog::onDropDownClosed(%this, %dropDown)
  96. {
  97. if(%dropDown == %this.imageDropDown && %dropDown.getText() !$= "")
  98. {
  99. %this.animationDropDown.setSelected(0);
  100. }
  101. else if(%dropDown == %this.animationDropDown && %dropDown.getText() !$= "")
  102. {
  103. %this.imageDropDown.setSelected(0);
  104. }
  105. %this.validate();
  106. }
  107. function NewParticleEmitterDialog::populateImageDropDown(%this)
  108. {
  109. %this.imageDropDown.clearItems();
  110. %query = new AssetQuery();
  111. AssetDatabase.findAllAssets(%query);
  112. AssetDatabase.findAssetType(%query, "ImageAsset", true);
  113. for(%i = 0; %i < %query.getCount(); %i++)
  114. {
  115. %assetID = %query.getAsset(%i);
  116. if(!AssetDatabase.isAssetInternal(%assetID))
  117. {
  118. %this.imageDropDown.addItem(%assetID);
  119. }
  120. }
  121. %query.delete();
  122. %this.imageDropDown.sortByText();
  123. %this.imageDropDown.insertItem(0, "");
  124. %this.imageDropDown.setSelected(0);
  125. }
  126. function NewParticleEmitterDialog::populateAnimationDropDown(%this)
  127. {
  128. %this.animationDropDown.clearItems();
  129. %query = new AssetQuery();
  130. AssetDatabase.findAllAssets(%query);
  131. AssetDatabase.findAssetType(%query, "AnimationAsset", true);
  132. for(%i = 0; %i < %query.getCount(); %i++)
  133. {
  134. %assetID = %query.getAsset(%i);
  135. if(!AssetDatabase.isAssetInternal(%assetID))
  136. {
  137. %this.animationDropDown.addItem(%assetID);
  138. }
  139. }
  140. %query.delete();
  141. %this.animationDropDown.sortByText();
  142. %this.animationDropDown.insertItem(0, "");
  143. %this.animationDropDown.setSelected(0);
  144. }