mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 12:41:55 +00:00 
			
		
		
		
	Expand tests to cover path types and edge cases
This commit is contained in:
		| @@ -15,6 +15,7 @@ | ||||
| #include "CDClientManager.h" | ||||
| #include "CDMovingPlatformComponentTable.h" | ||||
| #include "Zone.h" | ||||
| #include "StringifiedEnum.h" | ||||
|  | ||||
|  //------------- PlatformSubComponent begin -------------- | ||||
|  | ||||
| @@ -84,22 +85,10 @@ void PlatformSubComponent::UpdateLinearVelocity() { | ||||
| } | ||||
|  | ||||
| void PlatformSubComponent::AdvanceToNextWaypoint() { | ||||
| 	uint32_t numWaypoints = m_Path->pathWaypoints.size(); | ||||
| 	m_CurrentWaypointIndex = m_NextWaypointIndex; | ||||
| 	m_ParentComponent->GetParent()->SetPosition(GetCurrentWaypoint().position); | ||||
| 	m_ParentComponent->GetParent()->SetRotation(GetCurrentWaypoint().rotation); | ||||
| 	uint32_t nextWaypointIndex = m_CurrentWaypointIndex + 1; | ||||
| 	if (numWaypoints <= nextWaypointIndex) { | ||||
| 		PathBehavior behavior = m_Path->pathBehavior; | ||||
| 		if (behavior == PathBehavior::Once) { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 1; | ||||
| 		} else if (behavior == PathBehavior::Bounce) { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 2; | ||||
| 			m_InReverse = true; | ||||
| 		} else { | ||||
| 			m_NextWaypointIndex = 0; | ||||
| 		} | ||||
| 	} | ||||
| 	int32_t nextWaypointIndex = FindNextWaypointIndex(); | ||||
| 	m_NextWaypointIndex = nextWaypointIndex; | ||||
| 	m_DesiredWaypointIndex = nextWaypointIndex; | ||||
| 	UpdateLinearVelocity(); | ||||
| @@ -108,22 +97,10 @@ void PlatformSubComponent::AdvanceToNextWaypoint() { | ||||
| } | ||||
|  | ||||
| void PlatformSubComponent::AdvanceToNextReverseWaypoint() { | ||||
| 	uint32_t numWaypoints = m_Path->pathWaypoints.size(); | ||||
| 	m_ParentComponent->GetParent()->SetPosition(GetCurrentWaypoint().position); | ||||
| 	m_ParentComponent->GetParent()->SetRotation(GetCurrentWaypoint().rotation); | ||||
| 	m_CurrentWaypointIndex = m_NextWaypointIndex; | ||||
| 	int32_t nextWaypointIndex = m_CurrentWaypointIndex - 1; | ||||
| 	if (nextWaypointIndex < 0) { | ||||
| 		PathBehavior behavior = m_Path->pathBehavior; | ||||
| 		if (behavior == PathBehavior::Once) { | ||||
| 			nextWaypointIndex = 0; | ||||
| 		} else if (behavior == PathBehavior::Bounce) { | ||||
| 			nextWaypointIndex = 1; | ||||
| 			m_InReverse = false; | ||||
| 		} else { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 1; | ||||
| 		} | ||||
| 	} | ||||
| 	int32_t nextWaypointIndex = FindNextReversedWaypointIndex(); | ||||
| 	m_NextWaypointIndex = nextWaypointIndex; | ||||
| 	m_DesiredWaypointIndex = nextWaypointIndex; | ||||
| 	UpdateLinearVelocity(); | ||||
| @@ -141,13 +118,49 @@ void PlatformSubComponent::SetupPath(const std::string& pathName, uint32_t start | ||||
| 	m_InReverse = startsInReverse; | ||||
| 	m_CurrentWaypointIndex = startingWaypointIndex; | ||||
| 	m_TimeBasedMovement = m_Path->movingPlatform.timeBasedMovement; | ||||
| 	m_NextWaypointIndex = m_InReverse ? m_CurrentWaypointIndex - 1 : m_CurrentWaypointIndex + 1; | ||||
| 	m_NextWaypointIndex = m_InReverse ? FindNextReversedWaypointIndex() : FindNextWaypointIndex(); | ||||
| } | ||||
|  | ||||
| const PathWaypoint& PlatformSubComponent::GetNextWaypoint() const { | ||||
| 	DluAssert(m_Path != nullptr); | ||||
| 	return m_Path->pathWaypoints.at(m_NextWaypointIndex); | ||||
| } | ||||
| const int32_t PlatformSubComponent::FindNextWaypointIndex() { | ||||
| 	DluAssert(m_Path != nullptr); | ||||
| 	uint32_t numWaypoints = m_Path->pathWaypoints.size(); | ||||
| 	uint32_t nextWaypointIndex = m_CurrentWaypointIndex + 1; | ||||
| 	if (numWaypoints <= nextWaypointIndex) { | ||||
| 		PathBehavior behavior = m_Path->pathBehavior; | ||||
| 		if (behavior == PathBehavior::Once) { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 1; | ||||
| 		} else if (behavior == PathBehavior::Bounce) { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 2; | ||||
| 			m_InReverse = true; | ||||
| 		} else { | ||||
| 			nextWaypointIndex = 0; | ||||
| 		} | ||||
| 	} | ||||
| 	return nextWaypointIndex; | ||||
| } | ||||
|  | ||||
| const int32_t PlatformSubComponent::FindNextReversedWaypointIndex() { | ||||
| 	DluAssert(m_Path != nullptr); | ||||
| 	uint32_t numWaypoints = m_Path->pathWaypoints.size(); | ||||
| 	int32_t nextWaypointIndex = m_CurrentWaypointIndex - 1; | ||||
| 	if (nextWaypointIndex < 0) { | ||||
| 		PathBehavior behavior = m_Path->pathBehavior; | ||||
| 		if (behavior == PathBehavior::Once) { | ||||
| 			nextWaypointIndex = 0; | ||||
| 		} else if (behavior == PathBehavior::Bounce) { | ||||
| 			nextWaypointIndex = 1; | ||||
| 			m_InReverse = false; | ||||
| 		} else { | ||||
| 			nextWaypointIndex = m_Path->pathWaypoints.size() - 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return nextWaypointIndex; | ||||
| } | ||||
|  | ||||
|  | ||||
| const PathWaypoint& PlatformSubComponent::GetCurrentWaypoint() const { | ||||
| 	DluAssert(m_Path != nullptr); | ||||
|   | ||||
| @@ -60,6 +60,8 @@ public: | ||||
| 	float CalculateSpeed() const; | ||||
| 	const PathWaypoint& GetNextWaypoint() const; | ||||
| 	const PathWaypoint& GetCurrentWaypoint() const; | ||||
| 	const int32_t FindNextWaypointIndex(); | ||||
| 	const int32_t FindNextReversedWaypointIndex(); | ||||
| 	void SetupPath(const std::string& pathName, uint32_t startingWaypointIndex, bool startsInReverse); | ||||
| 	void AdvanceToNextWaypoint(); | ||||
| 	void AdvanceToNextReverseWaypoint(); | ||||
|   | ||||
| @@ -16,12 +16,11 @@ protected: | ||||
| 	std::unique_ptr<Entity> baseEntity; | ||||
| 	CBITSTREAM; | ||||
| 	uint32_t flags = 0; | ||||
| 	Path path; | ||||
| 	Path pathOnce; | ||||
| 	Path pathBounce; | ||||
| 	Path pathLoop; | ||||
| 	void SetUp() override { | ||||
| 		SetUpDependencies(); | ||||
| 		path.movingPlatform.timeBasedMovement = false; | ||||
| 		path.pathBehavior = PathBehavior::Once; | ||||
| 		path.pathName = "ExamplePath"; | ||||
| 		PathWaypoint waypointStart; | ||||
| 		waypointStart.position = NiPoint3(1, 2, 3); | ||||
| 		waypointStart.rotation = NiQuaternion(4, 5, 6, 7); | ||||
| @@ -36,13 +35,40 @@ protected: | ||||
| 		waypointEnd.position = NiPoint3(4, 5, 7); | ||||
| 		waypointEnd.rotation = NiQuaternion(7, 8, 9, 10); | ||||
| 		waypointStart.movingPlatform.speed = 16.0f; | ||||
| 		{ | ||||
| 			pathOnce.movingPlatform.timeBasedMovement = false; | ||||
| 			pathOnce.pathBehavior = PathBehavior::Once; | ||||
| 			pathOnce.pathName = "ExampleOncePath"; | ||||
|  | ||||
| 		path.pathWaypoints.push_back(waypointStart); | ||||
| 		path.pathWaypoints.push_back(waypointMiddle); | ||||
| 		path.pathWaypoints.push_back(waypointEnd); | ||||
| 			pathOnce.pathWaypoints.push_back(waypointStart); | ||||
| 			pathOnce.pathWaypoints.push_back(waypointMiddle); | ||||
| 			pathOnce.pathWaypoints.push_back(waypointEnd); | ||||
|  | ||||
| 		Game::zoneManager->GetZone()->AddPath(path); | ||||
| 			Game::zoneManager->GetZone()->AddPath(pathOnce); | ||||
| 		} | ||||
| 		{ | ||||
| 			pathBounce.movingPlatform.timeBasedMovement = false; | ||||
| 			pathBounce.pathBehavior = PathBehavior::Bounce; | ||||
| 			pathBounce.pathName = "ExampleBouncePath"; | ||||
|  | ||||
| 			pathBounce.pathWaypoints.push_back(waypointStart); | ||||
| 			pathBounce.pathWaypoints.push_back(waypointMiddle); | ||||
| 			pathBounce.pathWaypoints.push_back(waypointEnd); | ||||
|  | ||||
| 			Game::zoneManager->GetZone()->AddPath(pathBounce); | ||||
| 		} | ||||
| 		{ | ||||
| 			pathLoop.movingPlatform.timeBasedMovement = false; | ||||
| 			pathLoop.pathBehavior = PathBehavior::Loop; | ||||
| 			pathLoop.pathName = "ExampleLoopPath"; | ||||
|  | ||||
|  | ||||
| 			pathLoop.pathWaypoints.push_back(waypointStart); | ||||
| 			pathLoop.pathWaypoints.push_back(waypointMiddle); | ||||
| 			pathLoop.pathWaypoints.push_back(waypointEnd); | ||||
|  | ||||
| 			Game::zoneManager->GetZone()->AddPath(pathLoop); | ||||
| 		} | ||||
| 		// Set our starting position | ||||
| 		info.pos = NiPoint3(25, 26, 27); | ||||
| 		info.rot = NiQuaternion(28, 29, 30, 31); | ||||
| @@ -61,7 +87,7 @@ protected: | ||||
| 		baseEntity = std::make_unique<Entity>(15, GameDependenciesTest::info); | ||||
|  | ||||
| 		auto* simplePhysicsComponent = baseEntity->AddComponent<SimplePhysicsComponent>(1); | ||||
| 		auto* movingPlatformComponent = baseEntity->AddComponent<MovingPlatformComponent>("ExamplePath"); | ||||
| 		auto* movingPlatformComponent = baseEntity->AddComponent<MovingPlatformComponent>("ExampleOncePath"); | ||||
| 		movingPlatformComponent->LoadConfigData(); | ||||
| 		movingPlatformComponent->LoadDataFromTemplate(); | ||||
| 	} | ||||
| @@ -176,7 +202,7 @@ protected: | ||||
| 		ASSERT_TRUE(bitStream.Read(pathNameLength)); | ||||
| 		pathName.resize(pathNameLength); | ||||
| 		ASSERT_TRUE(bitStream.ReadBits(reinterpret_cast<unsigned char*>(pathName.data()), BYTES_TO_BITS(pathNameLength) * 2)); | ||||
| 		ASSERT_EQ(pathName, u"ExamplePath"); | ||||
| 		ASSERT_EQ(pathName, u"ExampleOncePath"); | ||||
|  | ||||
| 		uint32_t pathStartIndex; | ||||
| 		ASSERT_TRUE(bitStream.Read(pathStartIndex)); | ||||
| @@ -229,10 +255,12 @@ TEST_F(MovingPlatformComponentTests, MovingPlatformSerializationTest) { | ||||
| 	TestSerialization(); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathAdvanceForwardTest) { | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathOnceAdvanceTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
|  | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleOncePath", 0, false); | ||||
| 	 | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 1); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| @@ -240,36 +268,18 @@ TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathAdvanceForwar | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 2); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| 	ASSERT_FALSE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	path.pathBehavior = PathBehavior::Bounce; | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 2); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| 	ASSERT_FALSE(moverPlatformSubComponent.GetInReverse()); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathAdvanceReverseTest) { | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathBounceAdvanceTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, true); | ||||
|  | ||||
| 	moverPlatformSubComponent.AdvanceToNextReverseWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 1); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 0); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	moverPlatformSubComponent.AdvanceToNextReverseWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 0); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	path.pathBehavior = PathBehavior::Bounce; | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleBouncePath", 0, false); | ||||
| 	 | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathAdvanceTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
|  | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 1); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| @@ -286,16 +296,53 @@ TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentPathAdvanceTest) | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	ASSERT_FALSE(moverPlatformSubComponent.GetInReverse()); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentLoopAdvanceTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleLoopPath", 0, false); | ||||
| 	 | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 1); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 2); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 0); | ||||
| 	ASSERT_FALSE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	moverPlatformSubComponent.AdvanceToNextWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	ASSERT_FALSE(moverPlatformSubComponent.GetInReverse()); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformSubComponentLoopAdvanceReverseTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleLoopPath", 0, true); | ||||
| 	 | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	moverPlatformSubComponent.AdvanceToNextReverseWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 2); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 1); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	moverPlatformSubComponent.AdvanceToNextReverseWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 1); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 0); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| 	moverPlatformSubComponent.AdvanceToNextReverseWaypoint(); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypointIndex(), 0); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypointIndex(), 2); | ||||
| 	ASSERT_TRUE(moverPlatformSubComponent.GetInReverse()); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformMoverSpeedCalculationTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
|  | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleOncePath", 0, false); | ||||
|  | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.CalculateSpeed(), 16.0f); | ||||
| 	NiPoint3 r = moverPlatformSubComponent.CalculateLinearVelocity(); | ||||
| @@ -307,7 +354,7 @@ TEST_F(MovingPlatformComponentTests, MovingPlatformMoverSpeedCalculationTest) { | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformNextAndCurrentWaypointAccess) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleOncePath", 0, false); | ||||
|  | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetCurrentWaypoint().position, NiPoint3(1, 2, 3)); | ||||
| 	ASSERT_EQ(moverPlatformSubComponent.GetNextWaypoint().position, NiPoint3(4, 5, 6)); | ||||
| @@ -318,29 +365,30 @@ TEST_F(MovingPlatformComponentTests, MovingPlatformNextAndCurrentWaypointAccess) | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformRunTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleOncePath", 0, false); | ||||
|  | ||||
| 	path.pathWaypoints.at(0).position = NiPoint3(99.296440f, 419.293335f, 207.219498f); | ||||
| 	path.pathWaypoints.at(0).movingPlatform.speed = 16.0f; | ||||
| 	pathOnce.pathWaypoints.at(1).position = NiPoint3(99.296440f, 419.293335f, 207.219498f); | ||||
| 	pathOnce.pathWaypoints.at(1).movingPlatform.speed = 16.0f; | ||||
|  | ||||
| 	path.pathWaypoints.at(1).position = NiPoint3(141.680099f, 419.990051f, 208.680450f); | ||||
| 	path.pathWaypoints.at(1).movingPlatform.speed = 16.0f; | ||||
| 	pathOnce.pathWaypoints.at(2).position = NiPoint3(141.680099f, 419.990051f, 208.680450f); | ||||
| 	pathOnce.pathWaypoints.at(2).movingPlatform.speed = 16.0f; | ||||
|  | ||||
| 	moverPlatformSubComponent.UpdateLinearVelocity(); | ||||
| 	moverPlatformSubComponent.Update(2.65f); | ||||
|  | ||||
| 	auto [x,y,z] = moverPlatformSubComponent.GetPosition(); | ||||
| 	LOG_TEST("x: %f, y: %f, z: %f", x, y, z); | ||||
| 	// just check that its close enough | ||||
| 	EXPECT_LT(141.680099f - moverPlatformSubComponent.GetPosition().x, 0.1f); | ||||
| 	EXPECT_LT(419.990051f - moverPlatformSubComponent.GetPosition().y, 0.1f); | ||||
| 	EXPECT_LT(208.680450f - moverPlatformSubComponent.GetPosition().z, 0.1f); | ||||
| 	EXPECT_LT(141.680099f - x, 0.1f); | ||||
| 	EXPECT_LT(419.990051f - y, 0.1f); | ||||
| 	EXPECT_LT(208.680450f - z, 0.1f); | ||||
| } | ||||
|  | ||||
| TEST_F(MovingPlatformComponentTests, MovingPlatformPercentBetweenPointsTest) { | ||||
| 	MoverPlatformSubComponent moverPlatformSubComponent(baseEntity->GetComponent<MovingPlatformComponent>()); | ||||
| 	moverPlatformSubComponent.SetupPath("ExamplePath", 0, false); | ||||
| 	moverPlatformSubComponent.SetupPath("ExampleOncePath", 0, false); | ||||
|  | ||||
| 	path.pathWaypoints.at(0).position = NiPoint3(0, 0, 1); | ||||
| 	path.pathWaypoints.at(1).position = NiPoint3(0, 0, 3); | ||||
| 	pathOnce.pathWaypoints.at(0).position = NiPoint3(0, 0, 1); | ||||
| 	pathOnce.pathWaypoints.at(1).position = NiPoint3(0, 0, 3); | ||||
| 	// moverPlatformSubComponent.m_Position = NiPoint3(0, 0, 1); | ||||
| 	ASSERT_FLOAT_EQ(moverPlatformSubComponent.CalculatePercentToNextWaypoint(), 0.0f); | ||||
| 	// moverPlatformSubComponent.m_Position = NiPoint3(0, 0, 2); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Aaron Kimbre
					Aaron Kimbre