Add origin updating for LargeWorlds
This commit is contained in:
@@ -50,6 +50,9 @@ void LargeWorlds::UpdateOrigin(Vector3& origin, const Vector3& position)
|
||||
{
|
||||
if (Enable)
|
||||
{
|
||||
constexpr Real chunkSizeInv = 1.0 / ChunkSize;
|
||||
constexpr Real chunkSizeHalf = ChunkSize * 0.5;
|
||||
origin = Vector3(Int3((position - chunkSizeHalf) * chunkSizeInv)) * ChunkSize;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
18
Source/Engine/Tests/TestLevel.cpp
Normal file
18
Source/Engine/Tests/TestLevel.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) 2012-2022 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "Engine/Core/Math/Vector3.h"
|
||||
#include "Engine/Level/LargeWorlds.h"
|
||||
#include <ThirdParty/catch2/catch.hpp>
|
||||
|
||||
TEST_CASE("LargeWorlds")
|
||||
{
|
||||
SECTION("UpdateOrigin")
|
||||
{
|
||||
LargeWorlds::Enable = true;
|
||||
Vector3 origin = Vector3::Zero;
|
||||
LargeWorlds::UpdateOrigin(origin, Vector3::Zero);
|
||||
CHECK(origin == Vector3::Zero);
|
||||
LargeWorlds::UpdateOrigin(origin, Vector3(LargeWorlds::ChunkSize * 0.5, LargeWorlds::ChunkSize * 1.0001, LargeWorlds::ChunkSize * 1.5));
|
||||
CHECK(origin == Vector3(0, 0, LargeWorlds::ChunkSize * 1));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user