VR-Forces 4.2 Class Documentation
bhaveSpawnManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2011 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /*
6 * Copyright 2010 Autodesk, Inc. All rights reserved.
7 * This computer source code and related instructions and comments are the
8 * unpublished confidential and proprietary information of Autodesk, Inc. and
9 * are protected under applicable copyright and trade secret law. They may
10 * not be disclosed to, copied or used by any third party without
11 * the prior written consent of Autodesk, Inc.
12 */
13 
14 #pragma once
15 
16 #include <kyruntime/core/service.h>
17 
18 #include <kypathdata/containers/list.h>
19 #include <kypathdata/navmesh/navmeshutils.h>
20 #include <kypathdata/navmesh/navtriangleptr.h>
21 
22 #include <kyruntime/mesh/navmeshobstaclelocation.h>
23 
24 namespace Kaim
25 {
26  class IVolume;
27  class NavMeshQueryServerWrapper;
28  class NavMeshManager;
29  class Vec3f;
30  class WorldService;
31  class Database;
32 }
33 
34 namespace BHAVE
35 {
36  class DtBhaveSpawnQuery;
37 
38 
39 
42 
62 class DtBhaveSpawnManager : public Kaim::WorldService
63 {
64 public:
67  {
73  };
74 
75 
76 public:
77  KY_DECLARE_WORLDSERVICE(DtBhaveSpawnManager)
78 
79 
80 public:
83  DtBhaveSpawnManager(Kaim::World& world);
84 
87 
89  void ReInit();
90 
94  void Update() {}
95 
96  //-------------------------------------------------
98  //-------------------------------------------------
107  KyBool IsSpawnPointValid(const Kaim::Vec3f& position, KyFloat32 interEntityMinDistance, const Kaim::ObstacleTypeMask obstaclesToAvoid, const char* databaseName=KY_NULL);
108 
115 
116 protected:
117  KyBool CollectNavTriangles(DtBhaveSpawnQuery& query);
118  KyBool CollectVolumeTriangles(Kaim::IVolume* controlVolume, Kaim::IVolume* spawnVolume, KyUInt32 soilTypeFilter);
119 
121  QueryResult GenerateSpawnPositions(DtBhaveSpawnQuery& query, const Kaim::Vec3f* trianglePoints, const Kaim::ObstacleTypeMask obstaclesToAvoid);
122  KyBool AdjustSpawnCandidate(DtBhaveSpawnQuery& query, Kaim::Vec3f& candidate, const Kaim::Vec3f* trianglePoints, const Kaim::ObstacleTypeMask obstaclesToAvoid);
123 
124 
125  KyBool IntersectsAabbs(Kaim::IVolume* volume0, Kaim::IVolume* volume1);
126  KyBool IntersectVolumeNavTriangle(Kaim::IVolume* volume, Kaim::NavTrianglePtr navTrianglePtr);
127 
128  void InsertTrianglePtr(Kaim::NavTrianglePtr navTrianglePtr, Kaim::List<Kaim::NavTrianglePtr>& trianglePtrList);
129 
130  KyBool GetAabbFromVolume(Kaim::IVolume* volume, Kaim::Vec3f& aabbMin, Kaim::Vec3f& aabbMax);
131  KyBool CollectVolumeTriangles(Kaim::IVolume* spawnVolume, KyUInt32 soilTypeFilter);
132  KyBool IntersectVolumeTriangle(Kaim::IVolume* volume, const Kaim::Vec3f* trianglePoints);
133  KyBool IsInsideVolume(Kaim::IVolume* volume, const Kaim::Vec3f& position);
134 
135 
136 protected:
137  Kaim::List<Kaim::NavTrianglePtr> m_tmpTriangleList;
138  Kaim::List<Kaim::NavTrianglePtr> m_finalTriangleList;
139  Kaim::NavMeshObstacleLocationList m_tmpObstacleLocations;
140  Kaim::NavMeshQueryServerWrapper* m_navMeshQueryServer;
141  const Kaim::NavMeshManager* m_navMeshManager;
142 };
143 
144 }
145 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)