Cafu Engine
CollisionModelMan_impl.hpp
1 /*
2 Cafu Engine, http://www.cafu.de/
3 Copyright (c) Carsten Fuchs and other contributors.
4 This project is licensed under the terms of the MIT license.
5 */
6 
7 #ifndef CAFU_CLIPSYS_COLLISION_MODEL_MANAGER_IMPL_HPP_INCLUDED
8 #define CAFU_CLIPSYS_COLLISION_MODEL_MANAGER_IMPL_HPP_INCLUDED
9 
10 #include "CollisionModelMan.hpp"
11 
12 
13 namespace cf
14 {
15  namespace ClipSys
16  {
17  /// This class provides an implementation of the CollModelManI interface.
19  {
20  public:
21 
24 
25  // The CollisionModelManI interface.
26  const CollisionModelT* GetCM(const std::string& FileName) override;
27  // const CollisionModelT* GetCM(std::istream& InFile, SceneGraph::aux::PoolT& Pool, const ArrayT<CollisionModelStaticT::TerrainRefT>& Terrains) override;
28  const CollisionModelT* GetCM(unsigned long Width, unsigned long Height, const ArrayT<Vector3dT>& Mesh, MaterialT* Material, const double MIN_NODE_SIZE) override;
29  const CollisionModelT* GetCM(const BoundingBox3T<double>& BB, MaterialT* Material) override;
30  const CollisionModelT* GetCM(const CollisionModelT* CollisionModel) override;
31  const std::string& GetFileName(const CollisionModelT* CollisionModel) const override;
32  void FreeCM(const CollisionModelT* CollisionModel) override;
33  unsigned long GetUniqueCMCount() const override;
34 
35 
36  private:
37 
38  struct cmInfoT
39  {
40  const CollisionModelT* Instance;
41  std::string FileName;
42  // unsigned long ContentsHash;
43  unsigned long RefCount;
44  bool NoDelete;
45  };
46 
47  ArrayT<cmInfoT> cmInfos;
48  };
49  }
50 }
51 
52 #endif
This class provides (an interface to) the creation, management and destruction of collision models...
Definition: CollisionModelMan.hpp:38
This class provides an implementation of the CollModelManI interface.
Definition: CollisionModelMan_impl.hpp:18
const std::string & GetFileName(const CollisionModelT *CollisionModel) const override
Returns the file name the given collision model has been loaded from (using the GetCM(const std::stri...
Definition: CollisionModelMan_impl.cpp:199
const CollisionModelT * GetCM(const std::string &FileName) override
Loads a collision model from the file specified by FileName.
Definition: CollisionModelMan_impl.cpp:32
void FreeCM(const CollisionModelT *CollisionModel) override
Frees the given collision model (taking reference counting into account if necessary).
Definition: CollisionModelMan_impl.cpp:213
This class represents a surface material ("A datastructural representation of a scripts material def...
Definition: Material.hpp:22
This is the base class for collision models, defining their common interface.
Definition: CollisionModel_base.hpp:29
unsigned long GetUniqueCMCount() const override
Returns the number of unique, physical collision model instances managed by this class.
Definition: CollisionModelMan_impl.cpp:240
Definition: Renderer.hpp:16