16 #include <kyruntime/core/service.h>
18 #include <kypathdata/containers/list.h>
19 #include <kypathdata/navmesh/navmeshutils.h>
20 #include <kypathdata/navmesh/navtriangleptr.h>
22 #include <kyruntime/mesh/navmeshobstaclelocation.h>
28 class NavMeshQueryServerWrapper;
37 class DtBhaveSpawnQuery;
69 DtBhaveSpawnQueryResult_Done = 0,
73 DtBhaveSpawnQueryResult_dummy_forceenumSize = KYFORCEENUMSIZEINT
108 KyBool IsSpawnPointValid(
const Kaim::Vec3f& position, KyFloat32 interEntityMinDistance,
const Kaim::ObstacleTypeMask obstaclesToAvoid,
const char* databaseName=KY_NULL);
119 KyBool CollectVolumeTriangles(Kaim::IVolume* controlVolume, Kaim::IVolume* spawnVolume, KyUInt32 soilTypeFilter);
122 QueryResult GenerateSpawnPositions(
DtBhaveSpawnQuery& query,
const Kaim::Vec3f* trianglePoints,
const Kaim::ObstacleTypeMask obstaclesToAvoid);
123 KyBool AdjustSpawnCandidate(
DtBhaveSpawnQuery& query, Kaim::Vec3f& candidate,
const Kaim::Vec3f* trianglePoints,
const Kaim::ObstacleTypeMask obstaclesToAvoid);
126 KyBool IntersectsAabbs(Kaim::IVolume* volume0, Kaim::IVolume* volume1);
127 KyBool IntersectVolumeNavTriangle(Kaim::IVolume* volume, Kaim::NavTrianglePtr navTrianglePtr);
129 void InsertTrianglePtr(Kaim::NavTrianglePtr navTrianglePtr, Kaim::PoolList<Kaim::NavTrianglePtr>& trianglePtrList);
131 KyBool GetAabbFromVolume(Kaim::IVolume* volume, Kaim::Vec3f& aabbMin, Kaim::Vec3f& aabbMax);
132 KyBool CollectVolumeTriangles(Kaim::IVolume* spawnVolume, KyUInt32 soilTypeFilter);
133 KyBool IntersectVolumeTriangle(Kaim::IVolume* volume,
const Kaim::Vec3f* trianglePoints);
134 KyBool IsInsideVolume(Kaim::IVolume* volume,
const Kaim::Vec3f& position);