17 #include <vlutil/vlThreadSysWrapper.h>
21 #include <boost/bind.hpp>
25 #define DT_DE_INIT_ONCE(de)\
26 if(de.isInitFunctionRegistered((void*)&init))\
32 de.registerInitFunction((void*)&init);\
42 class DtDeSharedState;
44 class DtDriverManager;
46 class DtInMemoryProfilerDistributorAgent;
47 class DtMessageDispatcher;
51 class DtVirtualBaseClass;
52 class DtSchemaManager;
55 class DtDisplayConfiguration;
56 class DtWindowConfiguration;
57 class DtChannelConfiguration;
58 class DtDriverConfiguration;
59 class DtSynchronizedTimeManager;
71 typedef std::vector<std::pair<DtDeError,bool> >
DeErrors;
110 UnableToInitialize = 0,
111 UnableToInitializeDueToLicense = -1
126 virtual InitializationResult initialize(
bool abortOnLicenseFailure =
true,
bool useLicenseErrorDialog=
true );
129 bool initialized()
const;
134 DtThreadId threadId();
151 virtual void tick(
double simTime);
156 inline void retick() { tick(simulationTime()); }
161 virtual bool timeToStop()
const;
164 virtual void setTimeToStop(
bool flag =
true);
170 virtual void reset();
173 virtual void updateScene();
209 bool driverManagerCreated()
const;
222 virtual double simulationTime()
const;
226 virtual double syncedTime()
const;
234 virtual int displayCount()
const;
243 virtual bool isInMasterMode()
const;
246 virtual bool isInSlaveMode()
const;
261 virtual const DeErrors& deErrors()
const;
264 virtual void clearDeErrors();
270 bool renderFrameThisTick()
const;
275 virtual bool licenseAvailable()
const;
296 virtual void realizeDisplayConfiguration(
const std::string& clientName,
305 virtual void destroyDisplay(
const std::string& displayName);
308 virtual void destroyAllDisplays();
311 virtual bool modifyDisplay(
const std::string& displayName,
321 virtual void setSimulationTime(
double time);
326 virtual double systemTime()
const;
329 virtual bool isPaused()
const;
334 virtual void pause();
337 virtual void resume();
343 double pausedTime()
const;
351 StaticInstanceFunction classInstanceFunction)
const;
356 template <
typename Class>
359 return findFastInstance(reinterpret_cast<StaticInstanceFunction>(staticInstFunc));
364 virtual void registerFastInstance(
370 template <
typename Class>
373 registerFastInstance(reinterpret_cast<StaticInstanceFunction>(staticInstFunc),inst);
390 virtual void registerInstance(
const std::string& instanceName,
394 virtual void registerProctor(
unsigned short handlerId,
DtProctor*);
398 virtual void unregisterProctor(
unsigned short handlerId);
401 DtProctor* findProctor(
unsigned short handlerId)
const;
411 void setRenderFrameThisTick(
bool update);
423 virtual void startLogFrameTime();
424 virtual void stopLogFrameTime();
461 boost::signal<void (const std::string&, const std::string&)>
477 boost::signal<void (const std::string&, const DtDisplayConfiguration&)>
483 boost::signal<void (const std::string&, const DtWindowConfiguration&)>
490 boost::signal<void (const std::string&, const std::string&)>
541 virtual void onSlaveConnected(
const std::string& igName);
544 virtual void emitDeError(
const DtDeError& error,
bool criticalError);
550 static const char* className();
554 void registerInitFunction(
void*
address);
557 bool isInitFunctionRegistered(
void*
address);
561 inline bool shouldSendMesssage()
563 return isInMasterMode() && myCommunicator && !myCommunicator->masterIgOnly();
566 inline void setPagedLodMagnificationScaleFactor(
float factor )
568 myPagedLodMagnificationScaleFactor = factor;
571 inline float pagedLodMagnificationScaleFactor()
const
573 return myPagedLodMagnificationScaleFactor;
587 virtual void initializeSchemaManager();
589 virtual void initializeLibXmlIfNecessary();
593 virtual bool shouldSkipThisTick(
double simulationTime );
596 virtual void postInitialize();
599 virtual void postInitializeMaster();
602 virtual void checkForData();
610 void masterTick(
double simulationTime );
619 virtual bool local_realizeDisplayConfiguration(
624 virtual void local_destroyDisplay(
const std::string& displayName);
627 virtual bool local_modifyDisplay(
const std::string& displayName,
637 void destroyDisplay();
643 virtual void intializeStatsManager(
void);
705 Master3D_License = 0,
727 template <
typename ManagerClass>
764 template <
typename ManagerClass>
767 ManagerClass* mgr =
dynamic_cast<ManagerClass*
>
775 DtTHROW_NEW(DtCorruptedState,
776 "Manager created after display engine was initialized.");
781 DtTHROW_NEW(DtCorruptedState,
"Create unsupported manager in slave.");
785 mgr =
new ManagerClass(de);
802 template <
typename ManagerClass>
808 DtTHROW_NEW(DtCorruptedState,
809 "Manager created after display engine was initialized.");
816 mgr->myConnections.manageConnection(
818 &ManagerClass::loadDefaults,mgr)));