VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simModelRepository.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 
17 
20 
21 #include <vlutil/vlMachineTypes.h>
22 
23 #include <boost/unordered_map.hpp>
24 
25 #include <tbb/spin_rw_mutex.h>
26 
27 class DtFilename;
28 class DtEntityType;
30 class DtAppearance;
32 
34 DT_DLL_vantageTerrainImplementation std::size_t hash_value(const DtAppearance& appearance);
35 DT_DLL_vantageTerrainImplementation bool operator== (const DtAppearance& app1, const DtAppearance& app2);
36 
39 {
40 public:
43 
45  virtual void lookupGeometries(
46  const DtFilename& file, const DtAppearance& appearance,
47  DtCollisionObjectList& objects);
48 
49 protected:
50  virtual makVrv::DtOsgArticulatedModel* createModel(const DtFilename& file) const;
51  virtual DtFilename surfaceCharacteristicsFileName(const DtFilename& input) const;
52  virtual DtString modelDefinitionName(const DtFilename& file) const;
53 
54  virtual void setModelState(makVrv::DtOsgArticulatedModel& model, DtAppearance appearance) const;
55  virtual void setModelAttributeState(makVrv::DtOsgArticulatedModel& model,
56  makVrv::DtEntityAppearanceMapper& mapper, const DtAppearance& app, DtAppearAttribute attr) const;
57  virtual osg::Node* getRootNode(makVrv::DtOsgArticulatedModel& model) const;
58  virtual void parseTerrain(osg::Node*, const DtFilename& surfCharFile, DtCollisionObjectList& output) const;
59 
61  class EntityInfo
62  {
63  public:
64  explicit EntityInfo(DtSimModelRepository& rep, const DtFilename& file);
65 
66  void collisionObjectsForAppearance(DtAppearance appearance, DtCollisionObjectList& objects);
67 
68  protected:
69  DtCollisionObjectList createAppearance(DtAppearance appearance);
70 
71  typedef boost::unordered_map<DtAppearance, DtCollisionObjectList> AppearanceMap;
72 
73  mutable tbb::spin_rw_mutex myMutex;
75  boost::scoped_ptr<makVrv::DtOsgArticulatedModel> myModel;
78  };
79 
80  friend class EntityInfo;
81 
82  typedef boost::unordered_map<DtFilename, boost::shared_ptr<EntityInfo> > EntityMap;
83 
85  boost::scoped_ptr<makVrv::DtEntityAppearanceMapperFactory> myAppearanceMapperFactory;
86 
87  mutable tbb::spin_rw_mutex myMutex;
89 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)