#include "common/basesystemenv.h"
#include "labengine/base/kaimlogimplementation.h"
#include "labengine/base/kaimfileopener.h"
#include "labengine/utils/labengineutils.h"
namespace
{
#define KT_TEST_ENV_CLASS BaseSystemEnv
KT_TEST_ENV {}
{
public:
KyUInt32 GetTriangleCount()
const {
return m_triangles.GetCount(); }
private:
};
KT_TUTORIAL
{
Kaim::Ptr<Kaim::NavData> navData = *KY_NEW
Kaim::NavData(database);
Kaim::Ptr<TutorialVisualGeometry> geometry = *KY_NEW TutorialVisualGeometry;
LabEngine::KaimFileOpener fileOpener;
if (navData->
Load(KT_ENV.GetAbsoluteInputFileName(
"generated/plane200x200_80ktri/plane200x200_80ktri.NavData").c_str(), &fileOpener) ==
KY_ERROR)
return;
TestLog() << "There are " << geometry->GetTriangleCount() << " triangles\n";
}
KT_TUTORIAL
{
Kaim::Ptr<Kaim::NavData> navData = *KY_NEW
Kaim::NavData(database);
Kaim::Ptr<TutorialVisualGeometry> geometry = *KY_NEW TutorialVisualGeometry;
LabEngine::KaimFileOpener fileOpener;
if (navData->
Load(KT_ENV.GetAbsoluteInputFileName(
"generated/plane200x200_80ktri/plane200x200_80ktri.NavData").c_str(), &fileOpener) ==
KY_ERROR)
return;
{
bool hasChanged = database->
GetChangesSinceLastReset().IsAnyChanged();
if (hasChanged)
{
database->
ResetLastChanges();
TestLog() << "Change since last reset: There are " << geometry->GetTriangleCount() << " triangles\n";
}
}
}
KT_TUTORIAL
{
class DatabaseVisualGeometryUpdater : public Kaim::IDatabaseChangeListener {
Kaim::Ptr<TutorialVisualGeometry> m_geometry;
public:
: m_database(database)
, m_geometry(*KY_NEW TutorialVisualGeometry)
{
}
virtual void OnDatabaseChange(const Kaim::DatabaseChange& databaseChange)
{
if (databaseChange.IsNavMeshChanged())
{
TestLog() << "Change listener: There are " << m_geometry->GetTriangleCount() << " triangles\n";
}
}
};
Kaim::Ptr<Kaim::NavData> navData = *KY_NEW
Kaim::NavData(database);
Kaim::Ptr<Kaim::IDatabaseChangeListener> updater = *KY_NEW DatabaseVisualGeometryUpdater(database);
database->
AddChangeListener(updater);
LabEngine::KaimFileOpener fileOpener;
if (navData->
Load(KT_ENV.GetAbsoluteInputFileName(
"generated/plane200x200_80ktri/plane200x200_80ktri.NavData").c_str(), &fileOpener) ==
KY_ERROR)
return;
database->
RemoveChangeListener(updater);
}
KT_TUTORIAL
{
Kaim::Ptr<Kaim::NavData> navData = *KY_NEW
Kaim::NavData(database);
Kaim::Ptr<TutorialVisualGeometry> geometry = *KY_NEW TutorialVisualGeometry;
LabEngine::KaimFileOpener fileOpener;
if (navData->
Load(KT_ENV.GetAbsoluteInputFileName(
"generated/plane200x200_80ktri/plane200x200_80ktri.NavData").c_str(), &fileOpener) ==
KY_ERROR)
return;
KyUInt32 lastNavMeshChangeIdx = database->
GetActiveNavMeshChangeIdx();
{
if (database->GetActiveNavMeshChangeIdx() != lastNavMeshChangeIdx)
{
lastNavMeshChangeIdx = database->GetActiveNavMeshChangeIdx();
TestLog() << "ActiveNavMeshChangeIdx changed: There are " << geometry->GetTriangleCount() << " triangles\n";
}
}
}
}