Skip to content

Commit 9be00d3

Browse files
committed
fix: fixed update accumulator
1 parent c9111b0 commit 9be00d3

File tree

10 files changed

+28
-24
lines changed

10 files changed

+28
-24
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (FREYR_PROFILING)
2727
add_subdirectory(vendor/perfetto)
2828
endif (FREYR_PROFILING)
2929

30-
project(freyr LANGUAGES C CXX VERSION 0.20.7)
30+
project(freyr LANGUAGES C CXX VERSION 0.20.8)
3131

3232
if (FREYR_BUILD_EXAMPLES)
3333
add_subdirectory(examples)

benchmarks/ComponentArray/src/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ struct Position : fr::Component
1010

1111
static void ComponentArrayIteration(benchmark::State& state)
1212
{
13-
auto options = fr::FreyrOptionsBuilder().SetArchetypeChunkCapacity(state.range(0)).Build();
13+
auto options = fr::FreyrOptionsBuilder().WithArchetypeChunkCapacity(state.range(0)).Build();
1414
auto positionArray = fr::ComponentArray<Position>(options);
1515

1616
for (auto _ : state)
@@ -24,7 +24,7 @@ static void ComponentArrayIteration(benchmark::State& state)
2424

2525
static void ArchetypeChunkIteration(benchmark::State& state)
2626
{
27-
auto options = fr::FreyrOptionsBuilder().SetArchetypeChunkCapacity(state.range(0)).Build();
27+
auto options = fr::FreyrOptionsBuilder().WithArchetypeChunkCapacity(state.range(0)).Build();
2828
auto taskCounter = skr::MakeRef<fr::TaskCounter>();
2929
auto taskManager = skr::MakeRef<fr::TaskManager>(
3030
options, skr::MakeRef<skr::Logger<fr::TaskManager>>(skr::MakeRef<skr::LoggerOptions>()), taskCounter);

include/Freyr/Builders/FreyrOptionsBuilder.hpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,37 @@ namespace FREYR_NAMESPACE
77
class FreyrOptionsBuilder
88
{
99
public:
10-
FreyrOptionsBuilder() {}
10+
FreyrOptionsBuilder() = default;
1111

12-
FreyrOptionsBuilder& SetMaxEntities(const size_t maxEntities)
12+
FreyrOptionsBuilder& WithMaxEntities(const size_t maxEntities)
1313
{
1414
mMaxEntities = maxEntities;
1515

1616
return *this;
1717
}
1818

19-
FreyrOptionsBuilder& SetArchetypeChunkCapacity(const size_t archetypeChunkCapacity)
19+
FreyrOptionsBuilder& WithArchetypeChunkCapacity(const size_t archetypeChunkCapacity)
2020
{
2121
mArchetypeChunkCapacity = archetypeChunkCapacity;
2222

2323
return *this;
2424
}
2525

26-
FreyrOptionsBuilder& SetThreadCount(const size_t threadCount)
26+
FreyrOptionsBuilder& WithFixedDeltaTime(const float fixedDeltaTime)
27+
{
28+
mFixedDeltaTime = fixedDeltaTime;
29+
30+
return *this;
31+
}
32+
33+
FreyrOptionsBuilder& WithThreadCount(const size_t threadCount)
2734
{
2835
mThreadCount = threadCount;
2936

3037
return *this;
3138
}
3239

33-
Ref<FreyrOptions> Build() const
40+
[[nodiscard]] Ref<FreyrOptions> Build() const
3441
{
3542
auto options = skr::MakeRef<FreyrOptions>();
3643

@@ -45,12 +52,16 @@ namespace FREYR_NAMESPACE
4552
else
4653
options->ArchetypeChunkCapacity = options->MaxEntities / (options->ThreadCount * options->ThreadCount);
4754

55+
if (mFixedDeltaTime.has_value())
56+
options->FixedDeltaTime = mFixedDeltaTime.value();
57+
4858
return options;
4959
}
5060

5161
private:
5262
std::optional<size_t> mMaxEntities;
5363
std::optional<size_t> mArchetypeChunkCapacity;
64+
std::optional<float> mFixedDeltaTime;
5465
std::optional<size_t> mThreadCount;
5566
};
5667
} // namespace FREYR_NAMESPACE

src/Core/Scene.cpp

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,12 @@ namespace FREYR_NAMESPACE
119119

120120
const auto provider = mServiceProvider.lock()->CreateServiceScope()->GetServiceProvider();
121121

122-
constexpr int maxFixedSteps = 5;
123122
mFixedDeltaTimeAccumulator += deltaTime;
124123

125-
int stepCount = 0;
126-
while (mFixedDeltaTimeAccumulator >= mOptions->FixedDeltaTime && stepCount < maxFixedSteps)
124+
while (mFixedDeltaTimeAccumulator >= mOptions->FixedDeltaTime)
127125
{
128-
mFixedDeltaTimeAccumulator -= mOptions->FixedDeltaTime;
129-
stepCount++;
126+
mFixedDeltaTimeAccumulator =
127+
std::min(mOptions->FixedDeltaTime, mFixedDeltaTimeAccumulator - mOptions->FixedDeltaTime);
130128

131129
FREYR_PROFILING_BEGIN("FREYR", "PreFixedUpdate", perfetto::Track(0));
132130
mTaskManager->StartWorkers();
@@ -150,11 +148,6 @@ namespace FREYR_NAMESPACE
150148
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
151149
}
152150

153-
if (stepCount >= maxFixedSteps)
154-
{
155-
mFixedDeltaTimeAccumulator = 0.0f;
156-
}
157-
158151
FREYR_PROFILING_BEGIN("FREYR", "PreUpdate", perfetto::Track(0), "TotalEntities",
159152
mEntityManager->LivingEntities());
160153
mTaskManager->StartWorkers();

test/src/Builders/ArchetypeBuilderSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class ArchetypeBuilderSpec : public ::testing::Test
1212
void SetUp() override
1313
{
1414
auto app = skr::ApplicationBuilder().AddExtension<fr::FreyrExtension>([](fr::FreyrExtension& freyr) {
15-
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.SetArchetypeChunkCapacity(102); });
15+
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.WithArchetypeChunkCapacity(102); });
1616
});
1717

1818
mServiceProvider = app.GetServiceCollection().CreateServiceProvider();

test/src/Containers/ArchetypeChunkSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class ArchetypeChunkSpec : public ::testing::Test
1212
auto app = skr::ApplicationBuilder()
1313
.AddExtension<fr::FreyrExtension>([](fr::FreyrExtension& freyr) {
1414
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) {
15-
builder.SetArchetypeChunkCapacity(2048);
15+
builder.WithArchetypeChunkCapacity(2048);
1616
});
1717
});
1818

test/src/Containers/ArchetypeSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class ArchetypeSpec : public ::testing::Test
1010
void SetUp() override
1111
{
1212
auto app = skr::ApplicationBuilder().AddExtension<fr::FreyrExtension>([](fr::FreyrExtension& freyr) {
13-
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.SetArchetypeChunkCapacity(2048); });
13+
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.WithArchetypeChunkCapacity(2048); });
1414
});
1515

1616
const auto provider = app.GetServiceCollection().CreateServiceProvider();

test/src/Core/ComponentManagerSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class ComponentManagerSpec : public ::testing::Test
1111
void SetUp() override
1212
{
1313
auto app = skr::ApplicationBuilder().AddExtension<fr::FreyrExtension>([](fr::FreyrExtension& freyr) {
14-
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.SetArchetypeChunkCapacity(1024); });
14+
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.WithArchetypeChunkCapacity(1024); });
1515
});
1616

1717
mServiceProvider = app.GetServiceCollection().CreateServiceProvider();

test/src/Core/EntityManagerSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class EntityManagerSpec : public ::testing::Test
88
void SetUp() override
99
{
1010
auto app = skr::ApplicationBuilder().AddExtension<fr::FreyrExtension>([](fr::FreyrExtension& freyr) {
11-
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.SetArchetypeChunkCapacity(1024); });
11+
freyr.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.WithArchetypeChunkCapacity(1024); });
1212
});
1313

1414
const auto provider = app.GetServiceCollection().CreateServiceProvider();

test/src/Core/SceneSpec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class SceneSpec : public ::testing::Test
2929
.AddComponent<DecayComponent>()
3030
.AddSystem<DecaySystem>()
3131
.AddSystem<MovementSystem>()
32-
.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.SetArchetypeChunkCapacity(2048); });
32+
.WithOptions([](fr::FreyrOptionsBuilder& builder) { builder.WithArchetypeChunkCapacity(2048); });
3333
})
3434
.Build<App>();
3535

0 commit comments

Comments
 (0)