VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtFileCache.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvCore/vrvCore.h>
13 #include <boost/signals.hpp>
14 #include <boost/unordered_set.hpp>
15 #include <string>
16 #include <deque>
17 #include <map>
18 #include <tbb/task.h>
20 
21 namespace makArchives
22 {
23  class DtCacheSettingsRecord;
24 }
25 
26 namespace makVrv
27 {
28  class DtDe;
29  class DtRecordSettingsBackupInterface;
30  class DtFileCache;
31 
34  class DT_DLL_VRVCORE DtFileCacheFlushAsync : public tbb::task
35  {
36  public:
37  DtFileCacheFlushAsync(DtFileCache* cache, bool multipass, bool flushNodes, bool flushTextures, bool flushImages);
38  virtual tbb::task* execute();
39 
40  protected:
46  };
47 
53  {
54  public:
55 
57  typedef boost::unordered_set<std::string> ExcludedExtensions;
58  typedef std::deque<std::string> FilePathList;
59 
61  {
63  unsigned int myCacheHint;
64 
65  std::multimap<std::string,std::string> customOptionStrings;
66  std::multimap<std::string, void*> customPluginData;
67 
68  std::string myCacheDir;
69  std::string myOriginalPath;
72 
78 
82  };
83 
86  friend class DtFileCacheCreator;
87 
89  friend class DtDeSharedState;
90 
92  virtual ~DtFileCache();
93 
95  virtual void init();
96 
99  virtual void initSingletonDependencies();
100 
102  LoadFileOptions defaultOptions() const;
103 
106  virtual bool getCachedNodeFile(const std::string& filePathIn,
107  const FilePathList& paths, std::string& cachedFilePathOut,
108  bool emitError );
109 
112  virtual bool getCachedImageFile(const std::string& filePathIn,
113  const FilePathList& paths, std::string& cachedFilePathOut,
114  bool emitError);
115 
117  virtual void setCachingEnabled(bool flag);
118 
120  virtual bool acceleratedCachingEnabled() const;
121 
126  virtual void setCompressTextures(bool compress);
127 
129  virtual bool compressTexturesEnabled() const;
130 
132  virtual void releaseResources();
133 
135  virtual void clearAccelerationCache();
136 
138  virtual void setInstancingEnabled(bool enabled);
139 
141  virtual bool instancingEnabled() const;
142 
144  bool clearInstancesOnNewScene() const;
145 
147  void setClearInstancesOnNewScene(bool clearInstances);
148 
150  void clearInstancingCache();
151 
157  void flushInstanceCache(bool multipass,bool flushNodes,
158  bool flushTextures, bool flushImages);
159 
162  unsigned int flushCycleCount();
163 
165  virtual void ts_clearInstancingCache();
166 
168  virtual void setFromRecord(const makArchives::DtCacheSettingsRecord& rec);
169 
171  virtual void getRecord(makArchives::DtCacheSettingsRecord& rec);
172 
175  virtual void getSplitRecord(std::vector<makArchives::DtCacheSettingsRecord>& rec,
176  std::vector<std::string>& fileNames) {};
177 
181  makArchives::DtCacheSettingsRecord& combinedRec) {};
182 
184  void loadDefaults(bool loadOnlyFactorySettings = false);
185 
187  void saveAsDefaults();
188 
190  void exportSettings(const std::string& fileName);
191 
193  void importSettings(const std::string& fileName);
194 
196  virtual ExcludedExtensions& excludedExtensions();
197 
199  inline bool isExcludedExtension(const std::string& ext) const
200  {
201  return ts_isExcludedExtension(ext);
202  }
203 
205  {
206  return mySettingsBackup;
207  }
208 
210  {
211  return mySettingsBackup;
212  }
213 
215  {
216  return myDe;
217  }
218 
221  boost::signal<void ()> signal_clearInstanceCache;
222 
224  virtual void ts_flushInstancingCache(bool multiPass,
225  bool flushNodes, bool flushTextures, bool flushImages);
226 
227  protected:
228 
230  virtual void autoSaveDefaultsIfNeeded();
231 
233  virtual bool ts_isExcludedExtension(const std::string& ext) const;
234 
237  virtual void addExcludedExtension(const std::string &ext);
238 
241  virtual void removeExcludedExtension(const std::string &ext);
242 
246  DtFileCache(DtDe& de);
247 
250  virtual bool save(const std::string& origFilename,
251  const std::string& cachedFilename, bool optimize);
252 
253 
254  protected:
255 
261  unsigned int myFlushCycleCount;
262 
264 
266 
268  };
269 
273  {
274 
275  public:
276 
279  static DtFileCacheCreator& instance(DtDe& theIG);
280 
282  static void registerInstance(DtDe& de, DtFileCacheCreator* instance);
283 
285  virtual DtFileCache* create(DtDe& de);
286 
287  };
288 
289 }
DtDe & myDe
Definition: DtFileCache.h:256
bool myFlushImages
Definition: DtFileCache.h:45
unsigned int myCacheHint
Definition: DtFileCache.h:63
std::deque< std::string > FilePathList
Definition: DtFileCache.h:58
Virtual base class.
Definition: DtVirtualBaseClass.h:22
bool myFlipDDSTexturesFlag
Definition: DtFileCache.h:81
bool myCachingEnabled
Definition: DtFileCache.h:257
bool myUseMemoryImageCacheFlag
Definition: DtFileCache.h:74
boost::unordered_set< std::string > ExcludedExtensions
A set of extensions excluded from the cache.
Definition: DtFileCache.h:57
std::string myCacheDir
Definition: DtFileCache.h:68
bool myInstancingEnabled
Definition: DtFileCache.h:260
bool myCompressTexturesFlag
Definition: DtFileCache.h:76
bool myMultipass
Definition: DtFileCache.h:42
Creates another thread to clear out cache.
Definition: DtFileCache.h:34
bool myInstanceTexturesFlag
Definition: DtFileCache.h:75
std::multimap< std::string, void * > customPluginData
Definition: DtFileCache.h:66
bool myUseAccelerationCacheFlag
Definition: DtFileCache.h:71
bool myFlushNodes
Definition: DtFileCache.h:43
The abstract creator for the abstract DtFileCache class.
Definition: DtFileCache.h:272
ExcludedExtensions myExcludedExtensionMap
Definition: DtFileCache.h:265
bool myCompressTextureFlag
Definition: DtFileCache.h:258
virtual void addRecords(makArchives::DtCacheSettingsRecord &recs, makArchives::DtCacheSettingsRecord &combinedRec)
To support writing element definitions in folders as multiple files not implemented for DtFileCache...
Definition: DtFileCache.h:180
bool myHasNoOptions
Definition: DtFileCache.h:70
DtFileCache * myCache
Definition: DtFileCache.h:41
bool myOptimizeDataFlag
Definition: DtFileCache.h:79
boost::signal< void()> signal_clearInstanceCache
Signal emmitted when clearCache is called, used to allow other caches to be cleared.
Definition: DtFileCache.h:221
bool myUnloadImageDataFlag
Definition: DtFileCache.h:77
std::string myOriginalPath
Definition: DtFileCache.h:69
Contains makVrv::DtVirtualBaseClass class.
DtRecordSettingsBackupInterface * mySettingsBackup
Definition: DtFileCache.h:267
The DtDeSharedState represents all the data that is shared between the master and its slaves...
Definition: DtDeSharedState.h:42
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtDe & getDe()
Definition: DtFileCache.h:214
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
std::multimap< std::string, std::string > customOptionStrings
Definition: DtFileCache.h:65
DtRecordSettingsBackupInterface * settingsBackup()
Definition: DtFileCache.h:209
Definition: DtFileCache.h:60
int myOptimizeFileLevel
Definition: DtFileCache.h:80
Record for the settings associated with the VRV caching.
Definition: DtCacheSettingsRecord.h:20
bool myInstanceNodesFlag
Definition: DtFileCache.h:73
bool myClearInstancesOnNewSceneFlag
Definition: DtFileCache.h:259
Base class to provide boost signal/slot management.
bool isExcludedExtension(const std::string &ext) const
Check if the extension is in the list of excluded file types.
Definition: DtFileCache.h:199
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtSignalConnectionManager myConnectionManager
Definition: DtFileCache.h:263
virtual void getSplitRecord(std::vector< makArchives::DtCacheSettingsRecord > &rec, std::vector< std::string > &fileNames)
To support writing element definitions in folders as multiple files not implemented for DtFileCache...
Definition: DtFileCache.h:175
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
const DtRecordSettingsBackupInterface * settingsBackup() const
Definition: DtFileCache.h:204
The makVrv::DtRecordSettingsBackupInterface provides an interface to record-based backups...
Definition: DtRecordSettingsBackup.h:27
bool myFlushTextures
Definition: DtFileCache.h:44
FilePathList myDatabasePaths
Definition: DtFileCache.h:62
Handles the caching of files.
Definition: DtFileCache.h:52
unsigned int myFlushCycleCount
Definition: DtFileCache.h:261
Contains DLL export macros.

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)