#include "common/oneworldenv.h"
namespace
{
{
for (
KyUInt32 i = 0; i < path->
GetNodeCount(); ++i)
{
if (gameKitNavTag.
CompareAsGameKitNavTag(path->
GetNodeNavTrianglePtr(i).
GetNavTag()))
return true;
}
return false;
}
#define KT_TEST_ENV_CLASS OneWorldEnv
KT_TEST_ENV {}
KT_TUTORIAL
{
KT_LOG_TITLE_BEGIN("TUTORIAL - How to setup GameKitNavTag with GameKitTraverseLogicData");
KT_ASSERT(KT_ENV.AddNavData("generated/plane200x200_80ktri/plane200x200_80ktri.NavData") != nullptr);
navTag_exclusive.
SetAsExclusive();
navTag_0.
SetColor(Kaim::Color::Green);
navTag_1.SetLayerID(1);
navTag_1.SetColor(Kaim::Color::Violet);
tagVolumeInitConfig.
m_world = KT_ENV.GetNavWorld();
tagVolumeInitConfig.
m_altitudeMin = -1.0f;
tagVolumeInitConfig.
m_altitudeMax = 1.0f;
center.
Set(0.0f, 110.0f);
navTag_0.
GetAsDynamicNavTag(tagVolumeInitConfig.
m_navTag);
tagVolume_0->
Init(tagVolumeInitConfig);
center.Set(0.0f, 30.0f);
navTag_exclusive.GetAsDynamicNavTag(tagVolumeInitConfig.
m_navTag);
Kaim::Ptr<Kaim::TagVolume> tagVolume_exclusive = *KY_NEW Kaim::TagVolume();
tagVolume_exclusive->
Init(tagVolumeInitConfig);
center.Set(0.0f, -50.0f);
navTag_1.GetAsDynamicNavTag(tagVolumeInitConfig.
m_navTag);
Kaim::Ptr<Kaim::TagVolume> tagVolume_1 = *KY_NEW Kaim::TagVolume();
tagVolume_1->
Init(tagVolumeInitConfig);
KT_ENV.StartVisualDebugUsingLocalFile("GamkitNavTag.VisualDebug");
while (KT_ENV.GetNavWorld()->GetTagVolumesToBeIntegratedCount() != 0)
KT_ENV.Update();
Kaim::Ptr<Kaim::GameKitNavTagLayerCostTable> layerCostTable = *KY_NEW Kaim::GameKitNavTagLayerCostTable();
Kaim::GameKitTraverseLogicData traverseLogicData;
traverseLogicData.SetLayerCostTable(layerCostTable);
query->BindToDatabase(KT_ENV.GetDefaultDatabase());
query->SetTraverseLogicUserData(&traverseLogicData);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_0));
layerCostTable->SetLayerCostMultiplier(0, 10.f);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_1));
layerCostTable->SetLayerCostMultiplier(1, 2.f);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_1));
layerCostTable->ForbidLayer(1);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_0));
layerCostTable->AllowLayer(1);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_1));
layerCostTable->SetLayerCostMultiplier(0, 1.f);
query->PerformQueryBlocking();
KT_ASSERT(IsAPathNodeOnNavTag(query->GetPath(), navTag_0));
}
}