creator.tscript 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. function AssetBrowser::loadCreatorClasses(%this)
  2. {
  3. // Just so we can recall this method for testing changes
  4. // without restarting.
  5. if ( isObject( %this.creatorClassArray ) )
  6. %this.creatorClassArray.delete();
  7. AssetBrowserCreatorGroupsList.empty();
  8. %this.creatorClassArray = new ArrayObject();
  9. %this.creatorClassArray.caseSensitive = true;
  10. //%this.setListView( true );
  11. //World Editor Creator Groups
  12. %this.beginCreatorGroup( "Environment" );
  13. %this.addCreatorClass( "BasicClouds", "Basic Clouds" );
  14. %this.addCreatorClass( "PxCloth", "Cloth" );
  15. %this.addCreatorClass( "CloudLayer", "Cloud Layer" );
  16. %this.addCreatorClass( "GroundCover", "Ground Cover" );
  17. %this.addCreatorClass( "Lightning" );
  18. %this.addCreatorClass( "ParticleEmitterNode","Particle Emitter" );
  19. %this.addCreatorClass( "Precipitation" );
  20. // Legacy features. Users should use Ground Cover and the Forest Editor.
  21. //%this.addCreatorClass( "fxShapeReplicator", "Shape Replicator" );
  22. //%this.addCreatorClass( "fxFoliageReplicator", "Foliage Replicator" );
  23. %this.addCreatorClass( "RibbonNode", "Ribbon Emitter" );
  24. %this.addCreatorClass( "ScatterSky", "Scatter Sky" );
  25. %this.addCreatorClass( "SkyBox", "Sky Box" );
  26. %this.addCreatorClass( "SkySphere", "Sky Sphere" );
  27. %this.addCreatorClass( "SFXEmitter", "Sound Emitter" );
  28. %this.addCreatorClass( "TerrainBlock", "Terrain Block" );
  29. %this.addCreatorClass( "VolumetricFog", "Volumetric Fog" );
  30. %this.addCreatorClass( "TimeOfDay", "Time of Day" );
  31. %this.addCreatorClass( "WaterBlock", "Water Block" );
  32. %this.addCreatorClass( "WaterPlane", "Water Plane" );
  33. %this.addCreatorClass( "ForestWindEmitter", "Wind Emitter" );
  34. %this.endCreatorGroup();
  35. %this.beginCreatorGroup( "ExampleObjects" );
  36. %this.addCreatorClass( "RenderMeshExample" );
  37. %this.addCreatorClass( "RenderObjectExample" );
  38. %this.addCreatorClass( "RenderShapeExample" );
  39. %this.endCreatorGroup();
  40. %this.beginCreatorGroup( "Level" );
  41. %this.addCreatorClass("Camera" );
  42. %this.addCreatorClass("GroundPlane", "Ground Plane" );
  43. %this.addCreatorClass("LevelInfo", "Level Info" );
  44. %this.addCreatorClass("Marker", "Path Node" );
  45. %this.addCreatorClass("MissionArea", "Mission Area" );
  46. %this.addCreatorClass("NotesObject", "Note" );
  47. %this.addCreatorClass("Path" );
  48. %this.addCreatorClass("SpawnSphere", "General Spawn Sphere", "GeneralDropPoint" );
  49. %this.addCreatorClass("SpawnSphere", "Player Spawn Sphere", "PlayerDropPoint" );
  50. %this.addCreatorClass("SpawnSphere", "Observer Spawn Sphere", "ObserverDropPoint" );
  51. %this.addCreatorClass("VPath", "Verve Path" );
  52. %this.endCreatorGroup();
  53. %this.beginCreatorGroup( "Lighting" );
  54. %this.addCreatorClass( "BoxEnvironmentProbe", "Box Env. Probe" );
  55. %this.addCreatorClass( "PointLight", "Point Light" );
  56. %this.addCreatorClass( "Skylight", "Skylight" );
  57. %this.addCreatorClass( "SphereEnvironmentProbe", "Sphere Env. Probe" );
  58. %this.addCreatorClass( "SpotLight", "Spot Light" );
  59. %this.addCreatorClass( "Sun", "Basic Sun" );
  60. %this.endCreatorGroup();
  61. %this.beginCreatorGroup( "Navigation" );
  62. %this.addCreatorClass( "AIPathGroup" );
  63. %this.addCreatorClass( "CoverPoint", "Cover Point" );
  64. %this.addCreatorClass( "NavMesh", "Navigation Mesh" );
  65. %this.addCreatorClass( "NavPath", "Navigation Path" );
  66. %this.endCreatorGroup();
  67. %this.beginCreatorGroup( "System" );
  68. %this.addCreatorClass( "SimGroup" );
  69. %this.endCreatorGroup();
  70. %this.beginCreatorGroup( "Volumes" );
  71. %this.addCreatorClass("AccumulationVolume", "Accumulation Volume" );
  72. %this.addCreatorClass("OcclusionVolume", "Occlusion Volume" );
  73. %this.addCreatorClass("PhysicalZone", "Physical Zone" );
  74. %this.addCreatorClass("Portal", "Zone Portal" );
  75. %this.addCreatorClass("SFXSpace", "Sound Space" );
  76. %this.addCreatorClass("Trigger" );
  77. %this.addCreatorClass("Zone", "Zone" );
  78. %this.endCreatorGroup();
  79. //Gui Editor Creator Groups
  80. %controls = enumerateConsoleClassesByCategory( "Gui" );
  81. %guiClasses = new ArrayObject();
  82. foreach$( %className in %controls )
  83. {
  84. if( GuiEditor.isFilteredClass( %className )
  85. || !isMemberOfClass( %className, "GuiControl" ) )
  86. continue;
  87. %category = getWord( getCategoryOfClass( %className ), 1 );
  88. if( %category $= "" )
  89. continue;
  90. %guiClasses.add(%category, %className);
  91. }
  92. %guiClasses.sortk(true);
  93. %currentCat = "";
  94. for(%i=0; %i < %guiClasses.count(); %i++)
  95. {
  96. %guiCat = %guiClasses.getKey(%i);
  97. if(%currentCat !$= %guiCat)
  98. {
  99. if(%currentCat !$= "")
  100. %this.endCreatorGroup();
  101. %this.beginCreatorGroup( %guiCat, "GuiEditor" );
  102. %currentCat = %guiCat;
  103. }
  104. %guiClass = %guiClasses.getValue(%i);
  105. %this.addCreatorClass( %guiClass );
  106. }
  107. %this.endCreatorGroup();
  108. %this.creatorClassArray.sortk(true);
  109. %this.creatorClassArray.sort(true);
  110. %guiClasses.delete();
  111. }
  112. function AssetBrowser::beginCreatorGroup(%this, %group, %editor)
  113. {
  114. if(%editor $= "")
  115. %editor = "WorldEditor";
  116. if((GuiEditorIsActive() && %editor $= "GuiEditor") || (EditorIsActive() && %editor $= "WorldEditor"))
  117. {
  118. AssetBrowser-->filterTree.insertItem(AssetBrowser-->filterTree.creatorIdx, %group);
  119. }
  120. %this.currentCreatorGroup = %group;
  121. AssetBrowserCreatorGroupsList.add(%editor, %group);
  122. }
  123. function AssetBrowser::endCreatorGroup(%this, %group)
  124. {
  125. %this.currentCreatorGroup = "";
  126. }
  127. function AssetBrowser::addCreatorClass(%this, %class, %name, %buildfunc)
  128. {
  129. if( !isClass(%class) )
  130. return;
  131. if ( %name $= "" )
  132. %name = %class;
  133. %group = %this.currentCreatorGroup;
  134. if ( %class $= "" || %group $= "" )
  135. {
  136. warn( "AssetBrowser::addCreatorClass, invalid parameters!" );
  137. return;
  138. }
  139. %cmd = "";
  140. if(%buildfunc $= "")
  141. {
  142. %method = "build" @ %buildfunc;
  143. if( !ObjectBuilderGui.isMethod( %method ) )
  144. %method = "build" @ %class;
  145. if( !ObjectBuilderGui.isMethod( %method ) )
  146. %cmd = "new " @ %class @ "();";
  147. else
  148. %cmd = "ObjectBuilderGui." @ %method @ "();";
  149. }
  150. else
  151. {
  152. %cmd = "ObjectBuilderGui.build" @ %buildfunc @ "();";
  153. }
  154. %buildfunc = "ObjectBuilderGui.newObjectCallback = \"AssetBrowser.onFinishCreateObject\"; ObjectCreator.createObject( \"" @ %cmd @ "\" );";
  155. %args = new ScriptObject();
  156. %args.val[0] = %class;
  157. %args.val[1] = %name;
  158. %args.val[2] = %buildfunc;
  159. %this.creatorClassArray.push_back( %group, %args );
  160. }