Refactor settings types to use scripting API

This commit is contained in:
Wojtek Figat
2021-01-05 14:14:34 +01:00
parent cc8e78b505
commit be319c446d
75 changed files with 955 additions and 1431 deletions

View File

@@ -461,13 +461,13 @@ bool GenerateTile(NavigationScene* scene, int32 x, int32 y, BoundingBox& tileBou
float GetTileSize()
{
auto& settings = *NavigationSettings::Instance();
auto& settings = *NavigationSettings::Get();
return settings.CellSize * settings.TileSize;
}
void InitConfig(rcConfig& config)
{
auto& settings = *NavigationSettings::Instance();
auto& settings = *NavigationSettings::Get();
config.cs = settings.CellSize;
config.ch = settings.CellHeight;

View File

@@ -1,8 +1,12 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#include "Navigation.h"
#include "NavigationSettings.h"
#include "NavMeshRuntime.h"
#include "NavMeshBuilder.h"
#include "Engine/Core/Config/GameSettings.h"
#include "Engine/Content/Content.h"
#include "Engine/Content/JsonAsset.h"
#include "Engine/Threading/Threading.h"
#include "Engine/Level/Scene/Scene.h"
#include "Engine/Engine/EngineService.h"
@@ -55,6 +59,8 @@ void* rcAllocDefault(size_t size, rcAllocHint)
return Allocator::Allocate(size);
}
IMPLEMENT_SETTINGS_GETTER(NavigationSettings, Navigation);
bool NavigationService::Init()
{
// Link memory allocation calls to use engine default allocator

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
namespace FlaxEditor.Content.Settings
{
partial class NavigationSettings
{
}
}

View File

@@ -9,7 +9,7 @@
/// <summary>
/// The navigation system settings container.
/// </summary>
API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API NavigationSettings : public SettingsBase<NavigationSettings>
API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API NavigationSettings : public SettingsBase
{
DECLARE_SCRIPTING_TYPE_MINIMAL(NavigationSettings);
public:
@@ -94,24 +94,12 @@ public:
public:
// [SettingsBase]
void RestoreDefault() final override
{
CellHeight = 10.0f;
CellSize = 30.0f;
TileSize = 64;
MinRegionArea = 0;
MergeRegionArea = 20;
MaxEdgeLen = 1200.0f;
MaxEdgeError = 1.3f;
DetailSamplingDist = 600.0f;
MaxDetailSamplingError = 1.0f;
WalkableRadius = 34.0f;
WalkableHeight = 144.0f;
WalkableMaxClimb = 35.0f;
WalkableMaxSlopeAngle = 60.0f;
}
/// <summary>
/// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use.
/// </summary>
static NavigationSettings* Get();
// [SettingsBase]
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override
{
DESERIALIZE(CellHeight);