diff --git a/Source/Editor/Content/Settings/NavigationSettings.cs b/Source/Editor/Content/Settings/NavigationSettings.cs deleted file mode 100644 index f4e0e3a02..000000000 --- a/Source/Editor/Content/Settings/NavigationSettings.cs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved. - -using System.ComponentModel; -using FlaxEngine; - -namespace FlaxEditor.Content.Settings -{ - /// - /// The navigation system settings container. - /// - public sealed class NavigationSettings : SettingsBase - { - /// - /// The height of a grid cell in the navigation mesh building steps using heightfields. - /// A lower number means higher precision on the vertical axis but longer build times. - /// - [DefaultValue(10.0f), Limit(1, 400)] - [EditorOrder(10), EditorDisplay("Nav Mesh Options"), Tooltip("The height of a grid cell in the navigation mesh building steps using heightfields. A lower number means higher precision on the vertical axis but longer build times.")] - public float CellHeight = 10.0f; - - /// - /// The width/height of a grid cell in the navigation mesh building steps using heightfields. - /// A lower number means higher precision on the horizontal axes but longer build times. - /// - [DefaultValue(30.0f), Limit(1, 400)] - [EditorOrder(20), EditorDisplay("Nav Mesh Options"), Tooltip("The width/height of a grid cell in the navigation mesh building steps using heightfields. A lower number means higher precision on the vertical axis but longer build times.")] - public float CellSize = 30.0f; - - /// - /// Tile size used for Navigation mesh tiles, the final size of a tile is CellSize*TileSize. - /// - [DefaultValue(64), Limit(8, 4096)] - [EditorOrder(30), EditorDisplay("Nav Mesh Options"), Tooltip("Tile size used for Navigation mesh tiles, the final size of a tile is CellSize*TileSize.")] - public int TileSize = 64; - - /// - /// The minimum number of cells allowed to form isolated island areas. - /// - [DefaultValue(0), Limit(0, 100)] - [EditorOrder(40), EditorDisplay("Nav Mesh Options"), Tooltip("The minimum number of cells allowed to form isolated island areas.")] - public int MinRegionArea = 0; - - /// - /// Any regions with a span count smaller than this value will, if possible, be merged with larger regions. - /// - [DefaultValue(20), Limit(0, 100)] - [EditorOrder(50), EditorDisplay("Nav Mesh Options"), Tooltip("Any regions with a span count smaller than this value will, if possible, be merged with larger regions.")] - public int MergeRegionArea = 20; - - /// - /// The maximum allowed length for contour edges along the border of the mesh. - /// - [DefaultValue(1200.0f), Limit(100)] - [EditorOrder(60), EditorDisplay("Nav Mesh Options", "Max Edge Length"), Tooltip("The maximum allowed length for contour edges along the border of the mesh.")] - public float MaxEdgeLen = 1200.0f; - - /// - /// The maximum distance a simplified contour's border edges should deviate from the original raw contour. - /// - [DefaultValue(1.3f), Limit(0.1f, 4)] - [EditorOrder(70), EditorDisplay("Nav Mesh Options"), Tooltip("The maximum distance a simplified contour's border edges should deviate from the original raw contour.")] - public float MaxEdgeError = 1.3f; - - /// - /// The sampling distance to use when generating the detail mesh. For height detail only. - /// - [DefaultValue(600.0f), Limit(1)] - [EditorOrder(80), EditorDisplay("Nav Mesh Options", "Detail Sampling Distance"), Tooltip("The sampling distance to use when generating the detail mesh.")] - public float DetailSamplingDist = 600.0f; - - /// - /// The maximum distance the detail mesh surface should deviate from heightfield data. For height detail only. - /// - [DefaultValue(1.0f), Limit(0, 3)] - [EditorOrder(90), EditorDisplay("Nav Mesh Options"), Tooltip("The maximum distance the detail mesh surface should deviate from heightfield data.")] - public float MaxDetailSamplingError = 1.0f; - - /// - /// The radius of the smallest objects to traverse this nav mesh. Objects can't pass through gaps of less than twice the radius. - /// - [DefaultValue(34.0f), Limit(0)] - [EditorOrder(1000), EditorDisplay("Agent Options"), Tooltip("The radius of the smallest objects to traverse this nav mesh. Objects can't pass through gaps of less than twice the radius.")] - public float WalkableRadius = 34.0f; - - /// - /// The height of the smallest objects to traverse this nav mesh. Objects can't enter areas with ceilings lower than this value. - /// - [DefaultValue(144.0f), Limit(0)] - [EditorOrder(1010), EditorDisplay("Agent Options"), Tooltip("The height of the smallest objects to traverse this nav mesh. Objects can't enter areas with ceilings lower than this value.")] - public float WalkableHeight = 144.0f; - - /// - /// The maximum ledge height that is considered to still be traversable. - /// - [DefaultValue(35.0f), Limit(0)] - [EditorOrder(1020), EditorDisplay("Agent Options"), Tooltip("The maximum ledge height that is considered to still be traversable.")] - public float WalkableMaxClimb = 35.0f; - - /// - /// The maximum slope that is considered walkable (in degrees). Objects can't go up or down slopes higher than this value. - /// - [DefaultValue(60.0f), Limit(0, 89.0f)] - [EditorOrder(1030), EditorDisplay("Agent Options"), Tooltip("The maximum slope that is considered walkable (in degrees). Objects can't go up or down slopes higher than this value.")] - public float WalkableMaxSlopeAngle = 60.0f; - } -} diff --git a/Source/Engine/Level/Level.Build.cs b/Source/Engine/Level/Level.Build.cs index e65967025..a2b680aee 100644 --- a/Source/Engine/Level/Level.Build.cs +++ b/Source/Engine/Level/Level.Build.cs @@ -21,7 +21,6 @@ public class Level : EngineModule options.PublicDependencies.Add("Scripting"); options.PublicDependencies.Add("Serialization"); - options.PublicDependencies.Add("Navigation"); if (options.Target.IsEditor) { diff --git a/Source/Engine/Navigation/Navigation.Build.cs b/Source/Engine/Navigation/Navigation.Build.cs index 96d086e44..00edf3dde 100644 --- a/Source/Engine/Navigation/Navigation.Build.cs +++ b/Source/Engine/Navigation/Navigation.Build.cs @@ -15,6 +15,7 @@ public class Navigation : EngineModule options.PublicDefinitions.Add("COMPILE_WITH_NAV_MESH_BUILDER"); + options.PrivateDependencies.Add("Level"); options.PrivateDependencies.Add("recastnavigation"); if (options.Target.IsEditor) diff --git a/Source/Engine/Navigation/NavigationSettings.h b/Source/Engine/Navigation/NavigationSettings.h index 8ae98266d..4e2fde1a2 100644 --- a/Source/Engine/Navigation/NavigationSettings.h +++ b/Source/Engine/Navigation/NavigationSettings.h @@ -2,82 +2,94 @@ #pragma once +#include "NavigationTypes.h" #include "Engine/Core/Config/Settings.h" #include "Engine/Serialization/Serialization.h" /// /// The navigation system settings container. /// -/// -class NavigationSettings : public Settings +API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API NavigationSettings : public SettingsBase { +DECLARE_SCRIPTING_TYPE_MINIMAL(NavigationSettings); public: /// - /// The height of a grid cell in the navigation mesh building steps using heightfields. - /// A lower number means higher precision on the vertical axis but longer build times. + /// The height of a grid cell in the navigation mesh building steps using heightfields. A lower number means higher precision on the vertical axis but longer build times. /// + API_FIELD(Attributes="DefaultValue(10.0f), Limit(1, 400), EditorOrder(10), EditorDisplay(\"Nav Mesh Options\")") float CellHeight = 10.0f; /// - /// The width/height of a grid cell in the navigation mesh building steps using heightfields. - /// A lower number means higher precision on the horizontal axes but longer build times. + /// The width/height of a grid cell in the navigation mesh building steps using heightfields. A lower number means higher precision on the horizontal axes but longer build times. /// + API_FIELD(Attributes="DefaultValue(30.0f), Limit(1, 400), EditorOrder(20), EditorDisplay(\"Nav Mesh Options\")") float CellSize = 30.0f; /// /// Tile size used for Navigation mesh tiles, the final size of a tile is CellSize*TileSize. /// + API_FIELD(Attributes="DefaultValue(64), Limit(8, 4096), EditorOrder(30), EditorDisplay(\"Nav Mesh Options\")") int32 TileSize = 64; /// /// The minimum number of cells allowed to form isolated island areas. /// + API_FIELD(Attributes="DefaultValue(0), Limit(0, 100), EditorOrder(40), EditorDisplay(\"Nav Mesh Options\")") int32 MinRegionArea = 0; /// /// Any regions with a span count smaller than this value will, if possible, be merged with larger regions. /// + API_FIELD(Attributes="DefaultValue(20), Limit(0, 100), EditorOrder(50), EditorDisplay(\"Nav Mesh Options\")") int32 MergeRegionArea = 20; /// /// The maximum allowed length for contour edges along the border of the mesh. /// + API_FIELD(Attributes="DefaultValue(1200.0f), Limit(100), EditorOrder(60), EditorDisplay(\"Nav Mesh Options\", \"Max Edge Length\")") float MaxEdgeLen = 1200.0f; /// /// The maximum distance a simplified contour's border edges should deviate from the original raw contour. /// + API_FIELD(Attributes="DefaultValue(1.3f), Limit(0.1f, 4), EditorOrder(70), EditorDisplay(\"Nav Mesh Options\")") float MaxEdgeError = 1.3f; /// /// The sampling distance to use when generating the detail mesh. /// + API_FIELD(Attributes="DefaultValue(600.0f), Limit(1), EditorOrder(80), EditorDisplay(\"Nav Mesh Options\", \"Detail Sampling Distance\")") float DetailSamplingDist = 600.0f; /// /// The maximum distance the detail mesh surface should deviate from heightfield data. /// + API_FIELD(Attributes="DefaultValue(1.0f), Limit(0, 3), EditorOrder(90), EditorDisplay(\"Nav Mesh Options\")") float MaxDetailSamplingError = 1.0f; /// /// The radius of the smallest objects to traverse this nav mesh. Objects can't pass through gaps of less than twice the radius. /// + API_FIELD(Attributes="DefaultValue(34.0f), Limit(0), EditorOrder(1000), EditorDisplay(\"Agent Options\")") float WalkableRadius = 34.0f; /// /// The height of the smallest objects to traverse this nav mesh. Objects can't enter areas with ceilings lower than this value. /// + API_FIELD(Attributes="DefaultValue(144.0f), Limit(0), EditorOrder(1010), EditorDisplay(\"Agent Options\")") float WalkableHeight = 144.0f; /// /// The maximum ledge height that is considered to still be traversable. /// + API_FIELD(Attributes="DefaultValue(35.0f), Limit(0), EditorOrder(1020), EditorDisplay(\"Agent Options\")") float WalkableMaxClimb = 35.0f; /// /// The maximum slope that is considered walkable (in degrees). Objects can't go up or down slopes higher than this value. /// + API_FIELD(Attributes="DefaultValue(60.0f), Limit(0, 89.0f), EditorOrder(1030), EditorDisplay(\"Agent Options\")") float WalkableMaxSlopeAngle = 60.0f; public: