changed how the actor toolbox is created. Allows fo user to enter their own tabs and actors with an attribute
This commit is contained in:
@@ -100,6 +100,7 @@ namespace FlaxEditor.Windows
|
|||||||
|
|
||||||
private TextBox _searchBox;
|
private TextBox _searchBox;
|
||||||
private ContainerControl _groupSearch;
|
private ContainerControl _groupSearch;
|
||||||
|
private Tabs actorGroups;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The editor instance.
|
/// The editor instance.
|
||||||
@@ -117,8 +118,9 @@ namespace FlaxEditor.Windows
|
|||||||
Editor = editor;
|
Editor = editor;
|
||||||
Selected += tab => Editor.Windows.EditWin.Viewport.SetActiveMode<TransformGizmoMode>();
|
Selected += tab => Editor.Windows.EditWin.Viewport.SetActiveMode<TransformGizmoMode>();
|
||||||
ScriptsBuilder.ScriptsReload += OnScriptsReload;
|
ScriptsBuilder.ScriptsReload += OnScriptsReload;
|
||||||
|
ScriptsBuilder.ScriptsReloadEnd += OnScriptsReloadEnd;
|
||||||
|
|
||||||
var actorGroups = new Tabs
|
actorGroups = new Tabs
|
||||||
{
|
{
|
||||||
Orientation = Orientation.Vertical,
|
Orientation = Orientation.Vertical,
|
||||||
UseScroll = true,
|
UseScroll = true,
|
||||||
@@ -127,7 +129,19 @@ namespace FlaxEditor.Windows
|
|||||||
TabsSize = new Float2(120, 32),
|
TabsSize = new Float2(120, 32),
|
||||||
Parent = this,
|
Parent = this,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_groupSearch = CreateGroupWithList(actorGroups, "Search", 26);
|
||||||
|
_searchBox = new TextBox
|
||||||
|
{
|
||||||
|
AnchorPreset = AnchorPresets.HorizontalStretchTop,
|
||||||
|
WatermarkText = "Search...",
|
||||||
|
Parent = _groupSearch.Parent.Parent,
|
||||||
|
Bounds = new Rectangle(4, 4, actorGroups.Width - 8, 18),
|
||||||
|
};
|
||||||
|
_searchBox.TextChanged += OnSearchBoxTextChanged;
|
||||||
|
|
||||||
|
RefreshActorTabs();
|
||||||
|
/*
|
||||||
_groupSearch = CreateGroupWithList(actorGroups, "Search", 26);
|
_groupSearch = CreateGroupWithList(actorGroups, "Search", 26);
|
||||||
_searchBox = new TextBox
|
_searchBox = new TextBox
|
||||||
{
|
{
|
||||||
@@ -194,7 +208,7 @@ namespace FlaxEditor.Windows
|
|||||||
groupGui.AddChild(CreateActorItem("UI Canvas", typeof(UICanvas)));
|
groupGui.AddChild(CreateActorItem("UI Canvas", typeof(UICanvas)));
|
||||||
groupGui.AddChild(CreateActorItem("Text Render", typeof(TextRender)));
|
groupGui.AddChild(CreateActorItem("Text Render", typeof(TextRender)));
|
||||||
groupGui.AddChild(CreateActorItem("Sprite Render", typeof(SpriteRender)));
|
groupGui.AddChild(CreateActorItem("Sprite Render", typeof(SpriteRender)));
|
||||||
|
*/
|
||||||
actorGroups.SelectedTabIndex = 1;
|
actorGroups.SelectedTabIndex = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,6 +220,94 @@ namespace FlaxEditor.Windows
|
|||||||
_groupSearch.PerformLayout();
|
_groupSearch.PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnScriptsReloadEnd()
|
||||||
|
{
|
||||||
|
RefreshActorTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshActorTabs()
|
||||||
|
{
|
||||||
|
// Remove tabs
|
||||||
|
List<Tab> tabs = new List<Tab>();
|
||||||
|
foreach (var child in actorGroups.Children)
|
||||||
|
{
|
||||||
|
if (child is Tab tab)
|
||||||
|
{
|
||||||
|
if (tab.Text != "Search")
|
||||||
|
tabs.Add(tab);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var tab in tabs)
|
||||||
|
{
|
||||||
|
var group = actorGroups.Children.Find(T => T == tab);
|
||||||
|
group.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
var groupBasicModels = CreateGroupWithList(actorGroups, "Basic Models");
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Cube", "Primitives/Cube.flax"));
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Sphere", "Primitives/Sphere.flax"));
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Plane", "Primitives/Plane.flax"));
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Cylinder", "Primitives/Cylinder.flax"));
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Cone", "Primitives/Cone.flax"));
|
||||||
|
groupBasicModels.AddChild(CreateEditorAssetItem("Capsule", "Primitives/Capsule.flax"));
|
||||||
|
|
||||||
|
// Created first to order specific tabs
|
||||||
|
CreateGroupWithList(actorGroups, "Lights");
|
||||||
|
CreateGroupWithList(actorGroups, "Visuals");
|
||||||
|
CreateGroupWithList(actorGroups, "Physics");
|
||||||
|
CreateGroupWithList(actorGroups, "GUI");
|
||||||
|
CreateGroupWithList(actorGroups, "Other");
|
||||||
|
|
||||||
|
// Add other actor types to respective tab based on attribute
|
||||||
|
foreach (var actorType in Editor.CodeEditing.Actors.Get())
|
||||||
|
{
|
||||||
|
if (actorType.IsAbstract)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ActorToolboxAttribute attribute = null;
|
||||||
|
foreach (var e in actorType.GetAttributes(true))
|
||||||
|
{
|
||||||
|
if (e is ActorToolboxAttribute actorToolboxAttribute)
|
||||||
|
{
|
||||||
|
attribute = actorToolboxAttribute;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var groupName = attribute.Group;
|
||||||
|
|
||||||
|
// Check if tab already exists and add it to the tab
|
||||||
|
var actorTabExists = false;
|
||||||
|
foreach (var child in actorGroups.Children)
|
||||||
|
{
|
||||||
|
if (child is Tab tab)
|
||||||
|
{
|
||||||
|
if (tab.Text == groupName)
|
||||||
|
{
|
||||||
|
var tree = tab.GetChild<Panel>().GetChild<Tree>();
|
||||||
|
if (tree != null)
|
||||||
|
{
|
||||||
|
tree.AddChild(CreateActorItem(Utilities.Utils.GetPropertyNameUI(actorType.Name), actorType));
|
||||||
|
tree.SortChildren();
|
||||||
|
}
|
||||||
|
actorTabExists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (actorTabExists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var group = CreateGroupWithList(actorGroups, groupName);
|
||||||
|
group.AddChild(CreateActorItem(Utilities.Utils.GetPropertyNameUI(actorType.Name), actorType));
|
||||||
|
group.SortChildren();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnSearchBoxTextChanged()
|
private void OnSearchBoxTextChanged()
|
||||||
{
|
{
|
||||||
// Skip events during setup or init stuff
|
// Skip events during setup or init stuff
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The scene animation playback actor.
|
/// The scene animation playback actor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes = "ActorContextMenu(\"New/Other/Scene Animation\")") class FLAXENGINE_API SceneAnimationPlayer : public Actor, public IPostFxSettingsProvider
|
API_CLASS(Attributes = "ActorContextMenu(\"New/Other/Scene Animation\"), ActorToolbox(\"Other\")") class FLAXENGINE_API SceneAnimationPlayer : public Actor, public IPostFxSettingsProvider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SceneAnimationPlayer);
|
DECLARE_SCENE_OBJECT(SceneAnimationPlayer);
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a listener that hears audio sources. For spatial audio the volume and pitch of played audio is determined by the distance, orientation and velocity differences between the source and the listener.
|
/// Represents a listener that hears audio sources. For spatial audio the volume and pitch of played audio is determined by the distance, orientation and velocity differences between the source and the listener.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Audio/Audio Listener\")") class FLAXENGINE_API AudioListener : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Audio/Audio Listener\"), ActorToolbox(\"Other\")") class FLAXENGINE_API AudioListener : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(AudioListener);
|
DECLARE_SCENE_OBJECT(AudioListener);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Whether or not an audio source is spatial is controlled by the assigned AudioClip.The volume and the pitch of a spatial audio source is controlled by its position and the AudioListener's position/direction/velocity.
|
/// Whether or not an audio source is spatial is controlled by the assigned AudioClip.The volume and the pitch of a spatial audio source is controlled by its position and the AudioListener's position/direction/velocity.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Audio/Audio Source\")") class FLAXENGINE_API AudioSource : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Audio/Audio Source\"), ActorToolbox(\"Other\")") class FLAXENGINE_API AudioSource : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(AudioSource);
|
DECLARE_SCENE_OBJECT(AudioSource);
|
||||||
friend class AudioStreamingHandler;
|
friend class AudioStreamingHandler;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Performs an animation and renders a skinned model.
|
/// Performs an animation and renders a skinned model.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Animated Model\")") class FLAXENGINE_API AnimatedModel : public ModelInstanceActor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Animated Model\"), ActorToolbox(\"Other\")") class FLAXENGINE_API AnimatedModel : public ModelInstanceActor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(AnimatedModel);
|
DECLARE_SCENE_OBJECT(AnimatedModel);
|
||||||
friend class AnimationsSystem;
|
friend class AnimationsSystem;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Actor that links to the animated model skeleton node transformation.
|
/// Actor that links to the animated model skeleton node transformation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Bone Socket\")") class FLAXENGINE_API BoneSocket : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Bone Socket\"), ActorToolbox(\"Other\")") class FLAXENGINE_API BoneSocket : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(BoneSocket);
|
DECLARE_SCENE_OBJECT(BoneSocket);
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Performs CSG box brush operation that adds or removes geometry.
|
/// Performs CSG box brush operation that adds or removes geometry.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Box Brush\")") class FLAXENGINE_API BoxBrush : public Actor, public CSG::Brush
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Box Brush\"), ActorToolbox(\"Other\")") class FLAXENGINE_API BoxBrush : public Actor, public CSG::Brush
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(BoxBrush);
|
DECLARE_SCENE_OBJECT(BoxBrush);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes the camera projection and view. Provides information about how to render scene (viewport location and direction, etc.).
|
/// Describes the camera projection and view. Provides information about how to render scene (viewport location and direction, etc.).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Sealed, Attributes="ActorContextMenu(\"New/Camera\")") class FLAXENGINE_API Camera : public Actor
|
API_CLASS(Sealed, Attributes="ActorContextMenu(\"New/Camera\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API Camera : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(Camera);
|
DECLARE_SCENE_OBJECT(Camera);
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Actor that draws the can be used to draw a custom decals on top of the other objects.
|
/// Actor that draws the can be used to draw a custom decals on top of the other objects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Decal\")") class FLAXENGINE_API Decal : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Decal\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API Decal : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(Decal);
|
DECLARE_SCENE_OBJECT(Decal);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Directional light emits light from direction in space.
|
/// Directional light emits light from direction in space.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Directional Light\")") class FLAXENGINE_API DirectionalLight : public LightWithShadow
|
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Directional Light\"), ActorToolbox(\"Lights\")") class FLAXENGINE_API DirectionalLight : public LightWithShadow
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(DirectionalLight);
|
DECLARE_SCENE_OBJECT(DirectionalLight);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The empty actor that is useful to create hierarchy and/or hold scripts. See <see cref="Script"/>.
|
/// The empty actor that is useful to create hierarchy and/or hold scripts. See <see cref="Script"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Actor\")") class FLAXENGINE_API EmptyActor : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Actor\"), ActorToolbox(\"Other\")") class FLAXENGINE_API EmptyActor : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(EmptyActor);
|
DECLARE_SCENE_OBJECT(EmptyActor);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Environment Probe can capture space around the objects to provide reflections.
|
/// Environment Probe can capture space around the objects to provide reflections.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Environment Probe\")") class FLAXENGINE_API EnvironmentProbe : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Environment Probe\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API EnvironmentProbe : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(EnvironmentProbe);
|
DECLARE_SCENE_OBJECT(EnvironmentProbe);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to create fogging effects such as clouds but with a density that is related to the height of the fog.
|
/// Used to create fogging effects such as clouds but with a density that is related to the height of the fog.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Exponential Height Fog\")") class FLAXENGINE_API ExponentialHeightFog : public Actor, public IFogRenderer
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Exponential Height Fog\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API ExponentialHeightFog : public Actor, public IFogRenderer
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(ExponentialHeightFog);
|
DECLARE_SCENE_OBJECT(ExponentialHeightFog);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Point light emits light from point in all directions.
|
/// Point light emits light from point in all directions.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Point Light\")") class FLAXENGINE_API PointLight : public LightWithShadow
|
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Point Light\"), ActorToolbox(\"Lights\")") class FLAXENGINE_API PointLight : public LightWithShadow
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(PointLight);
|
DECLARE_SCENE_OBJECT(PointLight);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A special type of volume that blends custom set of post process settings into the rendering.
|
/// A special type of volume that blends custom set of post process settings into the rendering.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Post Fx Volume\")") class FLAXENGINE_API PostFxVolume : public BoxVolume, public IPostFxSettingsProvider
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Post Fx Volume\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API PostFxVolume : public BoxVolume, public IPostFxSettingsProvider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(PostFxVolume);
|
DECLARE_SCENE_OBJECT(PostFxVolume);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class GPUPipelineState;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sky actor renders atmosphere around the scene with fog and sky.
|
/// Sky actor renders atmosphere around the scene with fog and sky.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Sky\")") class FLAXENGINE_API Sky : public Actor, public IAtmosphericFogRenderer, public ISkyRenderer
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Sky\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API Sky : public Actor, public IAtmosphericFogRenderer, public ISkyRenderer
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(Sky);
|
DECLARE_SCENE_OBJECT(Sky);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sky light captures the distant parts of the scene and applies it as a light. Allows to add ambient light.
|
/// Sky light captures the distant parts of the scene and applies it as a light. Allows to add ambient light.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Sky Light\")") class FLAXENGINE_API SkyLight : public Light
|
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Sky Light\"), ActorToolbox(\"Lights\")") class FLAXENGINE_API SkyLight : public Light
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SkyLight);
|
DECLARE_SCENE_OBJECT(SkyLight);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Skybox actor renders sky using custom cube texture or material.
|
/// Skybox actor renders sky using custom cube texture or material.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Sky Box\")") class FLAXENGINE_API Skybox : public Actor, public ISkyRenderer
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Sky Box\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API Skybox : public Actor, public ISkyRenderer
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(Skybox);
|
DECLARE_SCENE_OBJECT(Skybox);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Spline shape actor that defines spatial curve with utility functions for general purpose usage.
|
/// Spline shape actor that defines spatial curve with utility functions for general purpose usage.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Spline\")") class FLAXENGINE_API Spline : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Spline\"), ActorToolbox(\"Other\")") class FLAXENGINE_API Spline : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(Spline);
|
DECLARE_SCENE_OBJECT(Spline);
|
||||||
typedef BezierCurveKeyframe<Transform> Keyframe;
|
typedef BezierCurveKeyframe<Transform> Keyframe;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Spot light emits light from the point in a given direction.
|
/// Spot light emits light from the point in a given direction.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Spot Light\")") class FLAXENGINE_API SpotLight : public LightWithShadow
|
API_CLASS(Attributes="ActorContextMenu(\"New/Lights/Spot Light\"), ActorToolbox(\"Lights\")") class FLAXENGINE_API SpotLight : public LightWithShadow
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SpotLight);
|
DECLARE_SCENE_OBJECT(SpotLight);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// The off-mesh link objects used to define a custom point-to-point edge within the navigation graph.
|
/// The off-mesh link objects used to define a custom point-to-point edge within the navigation graph.
|
||||||
/// An off-mesh connection is a user defined traversable connection made up to two vertices, at least one of which resides within a navigation mesh polygon allowing movement outside the navigation mesh.
|
/// An off-mesh connection is a user defined traversable connection made up to two vertices, at least one of which resides within a navigation mesh polygon allowing movement outside the navigation mesh.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Link\")") class FLAXENGINE_API NavLink : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Link\"), ActorToolbox(\"Other\")") class FLAXENGINE_API NavLink : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(NavLink);
|
DECLARE_SCENE_OBJECT(NavLink);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A special type of volume that defines the area of the scene in which navigation meshes are generated.
|
/// A special type of volume that defines the area of the scene in which navigation meshes are generated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Mesh Bounds Volume\")") class FLAXENGINE_API NavMeshBoundsVolume : public BoxVolume
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Mesh Bounds Volume\"), ActorToolbox(\"Other\")") class FLAXENGINE_API NavMeshBoundsVolume : public BoxVolume
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(NavMeshBoundsVolume);
|
DECLARE_SCENE_OBJECT(NavMeshBoundsVolume);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A special type of volume that defines the area of the scene in which navigation is restricted (eg. higher traversal cost or dynamic obstacle block).
|
/// A special type of volume that defines the area of the scene in which navigation is restricted (eg. higher traversal cost or dynamic obstacle block).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Modifier Volume\")") class FLAXENGINE_API NavModifierVolume : public BoxVolume
|
API_CLASS(Attributes="ActorContextMenu(\"New/Other/Nav Modifier Volume\"), ActorToolbox(\"Other\")") class FLAXENGINE_API NavModifierVolume : public BoxVolume
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(NavModifierVolume);
|
DECLARE_SCENE_OBJECT(NavModifierVolume);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ public:
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The particle system instance that plays the particles simulation in the game.
|
/// The particle system instance that plays the particles simulation in the game.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Particle Effects\")") class FLAXENGINE_API ParticleEffect : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Particle Effects\"), ActorToolbox(\"Visuals\")") class FLAXENGINE_API ParticleEffect : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(ParticleEffect);
|
DECLARE_SCENE_OBJECT(ParticleEffect);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class Collider;
|
|||||||
/// Physics simulation driven object.
|
/// Physics simulation driven object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Actor" />
|
/// <seealso cref="Actor" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Rigid Body\")") class FLAXENGINE_API RigidBody : public Actor, public IPhysicsActor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Rigid Body\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API RigidBody : public Actor, public IPhysicsActor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(RigidBody);
|
DECLARE_SCENE_OBJECT(RigidBody);
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// A box-shaped primitive collider.
|
/// A box-shaped primitive collider.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Collider" />
|
/// <seealso cref="Collider" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Box Collider\")") class FLAXENGINE_API BoxCollider : public Collider
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Box Collider\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API BoxCollider : public Collider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(BoxCollider);
|
DECLARE_SCENE_OBJECT(BoxCollider);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Capsules are cylinders with a half-sphere at each end centered at the origin and extending along the X axis, and two hemispherical ends.</remarks>
|
/// <remarks>Capsules are cylinders with a half-sphere at each end centered at the origin and extending along the X axis, and two hemispherical ends.</remarks>
|
||||||
/// <seealso cref="Collider" />
|
/// <seealso cref="Collider" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Capsule Collider\")") class FLAXENGINE_API CapsuleCollider : public Collider
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Capsule Collider\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API CapsuleCollider : public Collider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(CapsuleCollider);
|
DECLARE_SCENE_OBJECT(CapsuleCollider);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// Physical objects that allows to easily do player movement constrained by collisions without having to deal with a rigidbody.
|
/// Physical objects that allows to easily do player movement constrained by collisions without having to deal with a rigidbody.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Collider" />
|
/// <seealso cref="Collider" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Character Controller\")") class FLAXENGINE_API CharacterController : public Collider, public IPhysicsActor
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Character Controller\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API CharacterController : public Collider, public IPhysicsActor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(CharacterController);
|
DECLARE_SCENE_OBJECT(CharacterController);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
/// A collider represented by an arbitrary mesh.
|
/// A collider represented by an arbitrary mesh.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Collider" />
|
/// <seealso cref="Collider" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Mesh Collider\")") class FLAXENGINE_API MeshCollider : public Collider
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Mesh Collider\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API MeshCollider : public Collider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(MeshCollider);
|
DECLARE_SCENE_OBJECT(MeshCollider);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// A sphere-shaped primitive collider.
|
/// A sphere-shaped primitive collider.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Collider" />
|
/// <seealso cref="Collider" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Sphere Collider\")") class FLAXENGINE_API SphereCollider : public Collider
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Sphere Collider\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API SphereCollider : public Collider
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SphereCollider);
|
DECLARE_SCENE_OBJECT(SphereCollider);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public:
|
|||||||
/// It also allows you to constrain limits to only specific axes or completely lock specific axes.
|
/// It also allows you to constrain limits to only specific axes or completely lock specific axes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/D6 Joint\")") class FLAXENGINE_API D6Joint : public Joint
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/D6 Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API D6Joint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(D6Joint);
|
DECLARE_SCENE_OBJECT(D6Joint);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ DECLARE_ENUM_OPERATORS(DistanceJointFlag);
|
|||||||
/// Physics joint that maintains an upper or lower (or both) bound on the distance between two bodies.
|
/// Physics joint that maintains an upper or lower (or both) bound on the distance between two bodies.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Distance Joint\")") class FLAXENGINE_API DistanceJoint : public Joint
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Distance Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API DistanceJoint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(DistanceJoint);
|
DECLARE_SCENE_OBJECT(DistanceJoint);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// Physics joint that maintains a fixed distance and orientation between its two attached bodies.
|
/// Physics joint that maintains a fixed distance and orientation between its two attached bodies.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Fixed Joint\")") class FLAXENGINE_API FixedJoint : public Joint
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Fixed Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API FixedJoint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(FixedJoint);
|
DECLARE_SCENE_OBJECT(FixedJoint);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
/// Physics joint that removes all but a single rotation degree of freedom from its two attached bodies (for example a door hinge).
|
/// Physics joint that removes all but a single rotation degree of freedom from its two attached bodies (for example a door hinge).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Hinge Joint\")") class FLAXENGINE_API HingeJoint : public Joint
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Hinge Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API HingeJoint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(HingeJoint);
|
DECLARE_SCENE_OBJECT(HingeJoint);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ DECLARE_ENUM_OPERATORS(SliderJointFlag);
|
|||||||
/// Physics joint that removes all but a single translational degree of freedom. Bodies are allowed to move along a single axis.
|
/// Physics joint that removes all but a single translational degree of freedom. Bodies are allowed to move along a single axis.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Slider Joint\")") class FLAXENGINE_API SliderJoint : public Joint
|
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Slider Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API SliderJoint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SliderJoint);
|
DECLARE_SCENE_OBJECT(SliderJoint);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ DECLARE_ENUM_OPERATORS(SphericalJointFlag);
|
|||||||
/// rotate around the anchor points, and their rotation can be limited by an elliptical cone.
|
/// rotate around the anchor points, and their rotation can be limited by an elliptical cone.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="Joint" />
|
/// <seealso cref="Joint" />
|
||||||
API_CLASS(Attributes = "ActorContextMenu(\"New/Physics/Spherical Joint\")") class FLAXENGINE_API SphericalJoint : public Joint
|
API_CLASS(Attributes = "ActorContextMenu(\"New/Physics/Spherical Joint\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API SphericalJoint : public Joint
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SphericalJoint);
|
DECLARE_SCENE_OBJECT(SphericalJoint);
|
||||||
private:
|
private:
|
||||||
|
|||||||
26
Source/Engine/Scripting/Attributes/Editor/ActorToolbox.cs
Normal file
26
Source/Engine/Scripting/Attributes/Editor/ActorToolbox.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace FlaxEngine
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This attribute is used to show actors that can be created in the actor tab of the toolbox.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
|
public class ActorToolboxAttribute : Attribute
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The path to be used in the tool box
|
||||||
|
/// </summary>
|
||||||
|
public string Group;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="ActorToolboxAttribute"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="group">The group to use to create the tab</param>
|
||||||
|
public ActorToolboxAttribute(string group)
|
||||||
|
{
|
||||||
|
Group = group;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sprite rendering object.
|
/// Sprite rendering object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/UI/Sprite Render\")") class FLAXENGINE_API SpriteRender : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/UI/Sprite Render\"), ActorToolbox(\"GUI\")") class FLAXENGINE_API SpriteRender : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(SpriteRender);
|
DECLARE_SCENE_OBJECT(SpriteRender);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Text rendering object.
|
/// Text rendering object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Attributes="ActorContextMenu(\"New/UI/Text Render\")") class FLAXENGINE_API TextRender : public Actor
|
API_CLASS(Attributes="ActorContextMenu(\"New/UI/Text Render\"), ActorToolbox(\"GUI\")") class FLAXENGINE_API TextRender : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(TextRender);
|
DECLARE_SCENE_OBJECT(TextRender);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Root of the UI structure. Renders GUI and handles input events forwarding.
|
/// Root of the UI structure. Renders GUI and handles input events forwarding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Sealed, NoConstructor, Attributes="ActorContextMenu(\"New/UI/UI Canvas\")") class FLAXENGINE_API UICanvas : public Actor
|
API_CLASS(Sealed, NoConstructor, Attributes="ActorContextMenu(\"New/UI/UI Canvas\"), ActorToolbox(\"GUI\")") class FLAXENGINE_API UICanvas : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(UICanvas);
|
DECLARE_SCENE_OBJECT(UICanvas);
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Contains a single GUI control (on C# side).
|
/// Contains a single GUI control (on C# side).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
API_CLASS(Sealed, Attributes="ActorContextMenu(\"New/UI/UI Control\")") class FLAXENGINE_API UIControl : public Actor
|
API_CLASS(Sealed, Attributes="ActorContextMenu(\"New/UI/UI Control\"), ActorToolbox(\"GUI\")") class FLAXENGINE_API UIControl : public Actor
|
||||||
{
|
{
|
||||||
DECLARE_SCENE_OBJECT(UIControl);
|
DECLARE_SCENE_OBJECT(UIControl);
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user