MAK Legion 1.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
simulationDatabase.h
Go to the documentation of this file.
1 /*********************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************************/
5 
8 
9 
10 #pragma once
11 
12 #include "legionDataStore/export.h"
15 
16 #include <vector>
17 #include <map>
18 #include <list>
19 
20 namespace Legion
21 {
22  class Configuration;
23  class EventManager;
24  class ControlManager;
25  class ReadStateInstance;
26  class WriteStateInstance;
27  class ViewManager;
28 
31 
32  typedef UInt64 DatabaseHandle;
33  typedef UInt64 InstanceHandle;
34  typedef UInt32 AttributeSetId;
36  typedef UInt32 AttributeIndex;
37  typedef UInt32 ClientId;
38 
39  const UInt32 BAD_INDEX = 0xFFFFFFFF;
40 
42  class LEGION_DLL SimulationDatabase
43  {
44  public:
46  SimulationDatabase(const Configuration& config);
50  virtual~SimulationDatabase();
51 
53  virtual DatabaseHandle handle() const { return myHandle; }
54 
58  virtual void beginFrame(double time);
61  virtual void endFrame();
62 
66  virtual bool inFrame() const;
67 
69  virtual UInt64 currentFrame() const;
70 
72  virtual double simTime() const;
73 
74 
76  virtual ClientId clientId() const;
77 
79  virtual bool addBeginFrameCallback(BeginFrameCb bfcb);
80  virtual bool removeBeginFrameCallback(BeginFrameCb bfcb);
82  virtual bool addEndFrameCallback(EndFrameCb efd);
83  virtual bool removeEndFrameCallback(EndFrameCb efd);
84 
86  virtual AttributeSetId registerAttributeSet(const AttributeSetDescriptor& descriptor);
88  virtual AttributeIndex registerAttribute(UInt32 setId, const AttributeDescriptor& descriptor);
89 
91  virtual AttributeSetId findAttributeSetId(const std::string& name);
92 
94  virtual AttributeIndex findAttributeIndex(UInt32 setId, const std::string& name);
96  virtual AttributeIndex findAttributeIndex(UInt32 setId, UInt32 attrId);
97 
101  template<typename OBJECT_TYPE>
102  OBJECT_TYPE createInstance();
103 
107  virtual InstanceHandle findInstance(GlobalIdentifier globalId);
108 
110  virtual void destroyInstance(const WriteStateInstance& instance);
111 
113  virtual ClientId getClientId(InstanceHandle instance);
114 
118  virtual GlobalIdentifier findGlobalId(InstanceHandle handle);
119 
121  virtual Bool reserve(AttributeSetId type, UInt32 count);
124  virtual UInt32 capacity(AttributeSetId type);
125 
127  virtual EventManager& eventManager();
129  virtual ControlManager& controlManager();
131  virtual ViewManager& viewManager();
132 
133 
134  protected:
136 
141 
142  static void beginFrameCallback(void* usr, double simTime);
143  static void endFrameCallback(void* usr);
144  std::vector<BeginFrameCb> myBeginFrameCallbacks;
145  std::vector<EndFrameCb> myEndFrameCallbacks;
146  };
147 
148 
149  //used internally by the object model classes to create new instances of supporting objects
150  template<typename OBJECT_TYPE>
151  OBJECT_TYPE createInstance(const DatabaseHandle& dbHandle);
152 }
153 
EventManager * myEventManager
Definition: simulationDatabase.h:137
ControlManager * myControlManager
Definition: simulationDatabase.h:138
The ViewManager creates and manages the views of a database.
Definition: viewManager.h:42
UInt64 DatabaseHandle
Definition: readStateInstance.h:23
Defines a template callback object to make binding member function pointers easier.
bool myIsReference
Definition: simulationDatabase.h:140
DatabaseHandle myHandle
Definition: simulationDatabase.h:135
An attribute descriptor describes a single attribute.
Definition: attributeSetDescriptor.h:38
std::vector< BeginFrameCb > myBeginFrameCallbacks
Definition: simulationDatabase.h:144
The EventManager manages the creation and distribution of simulation events such as Fire and Detonate...
Definition: eventManager.h:33
Callback template for binding static or member functions for callback at later time The return type a...
Definition: callback.h:66
UInt32 AttributeSetId
Definition: readStateInstance.h:22
UInt64 GlobalIdentifier
a globally unique identifier
Definition: dataTypes.h:50
std::vector< EndFrameCb > myEndFrameCallbacks
Definition: simulationDatabase.h:145
UInt32 AttributeIndex
Definition: readStateInstance.h:21
unsigned int UInt32
Definition: dataTypes.h:44
UInt32 ClientId
Definition: dataTypes.h:52
The SimulationDatabase stores all data for the simulation. It also owns the event, control, and view managers.
Definition: simulationDatabase.h:42
UInt32 AttributeId
Definition: simulationDatabase.h:35
Callback< void()> EndFrameCb
Definition: simulationDatabase.h:30
const UInt32 BAD_INDEX
Definition: simulationDatabase.h:39
The WriteStateInstance is the base class of all write simulation object repository classes...
Definition: writeStateInstance.h:35
unsigned long long UInt64
Definition: dataTypes.h:46
ViewManager * myViewManager
Definition: simulationDatabase.h:139
Callback< void(double)> BeginFrameCb
Definition: simulationDatabase.h:27
OBJECT_TYPE createInstance(const DatabaseHandle &dbHandle)
Definition: simulationDatabase.inl:27
virtual DatabaseHandle handle() const
Returns the handle to the internal representation of this object.
Definition: simulationDatabase.h:53
The configuration object parses the command line and loads a configuration file to provide the user c...
Definition: configuration.h:23
The control manager is responsible for creating and adding controls to the simulation database...
Definition: controlManager.h:33
UInt64 InstanceHandle
Definition: readStateInstance.h:20
An attribute set descriptor describes a group of attributes that are treated as a single set of data ...
Definition: attributeSetDescriptor.h:53
UInt8 Bool
Definition: dataTypes.h:53

Document ID: Generated on Wed May 26 15:17:05 EDT 2021 from SVN revision 229676
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)