![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtModelInstanceFactory.h,v $ $Revision: 1.11 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtModelInstanceFactory_H_ 00014 #define DtModelInstanceFactory_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <list> 00018 #include <string> 00019 #include <map> 00020 #include <vrvUtil/DtVirtualBaseClass.h> 00021 00022 namespace makVrv 00023 { 00024 class DtDe; 00025 class DtModelDefinition; 00026 class DtModelInstance; 00027 class DtModelInstanceCreator; 00028 00031 class DT_DLL_VRVCORE DtModelInstanceFactory : public DtVirtualBaseClass 00032 { 00033 00034 public: 00035 typedef std::list<std::string> CreatorClassList; 00036 00039 static DtModelInstanceFactory& instance(DtDe& de); 00040 00042 virtual ~DtModelInstanceFactory(); 00043 00045 static std::string modelInstanceHintParameterName(); 00046 00076 DtModelInstance* createModelInstance(const std::string& objectClassName, 00077 DtModelDefinition& definition, 00078 bool ignoreDefinitionHint = false, 00079 const std::string& modelInstanceClassOverride = ""); 00080 00082 bool isClassRegistered(const std::string& objectClass) const; 00083 00085 void registerSceneObjectClass(const std::string& objectClass, 00086 const CreatorClassList& classes); 00087 00089 void registerModelInstanceCreator(const std::string& modelInstanceClassName, 00090 DtModelInstanceCreator*); 00091 00093 const CreatorClassList& sceneObjectClassCreators(const std::string& objectClass); 00094 00098 void addObjectClassCreatorToFront(const std::string& objectClass, 00099 const std::string& newCreatorClass); 00100 00104 void addObjectClassCreatorToBack(const std::string& objectClass, 00105 const std::string& newCreatorClass); 00106 00107 protected: 00108 00110 DtModelInstanceFactory(DtDe& de); 00111 00113 virtual CreatorClassList modelDefinitionHints(const DtModelDefinition& modelInstance); 00114 00120 virtual DtModelInstance* createAndRealize(const std::string& modelInstanceClassName, 00121 DtModelDefinition& modelDefinition); 00122 00123 typedef std::map<std::string,DtModelInstanceCreator*> CreatorMap; 00124 typedef std::map<std::string,CreatorClassList> ObjectClassMap; 00125 00126 DtDe& myDe; 00127 00128 bool myEnableDebugModelInstanceFallback; 00129 std::string myDebugModelInstanceClass; 00130 00131 CreatorMap myCreators; 00132 ObjectClassMap myObjectCreatorMap; 00133 }; 00134 } 00135 00136 #endif 00137