MAK Legion 1.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
legionClutterClient/clutterSim.h
Go to the documentation of this file.
1 /*********************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************************/
5 
7 #include "legionDataStore/span.h"
8 
9 #include "legionStandardOM/controls/playControl.hpp"
10 #include "legionStandardOM/controls/pauseControl.hpp"
11 
12 #include "legionStandardOM/sets/writeEntityRepository.hpp"
13 
14 #include "makUtil/simTime.h"
15 
16 #include <vector>
17 
18 namespace Legion
19 {
20  class EventManager;
21  class ControlManager;
22  class ViewManager;
23 }
24 
25 namespace LOM
26 {
27  class WriteEntityRepository;
28  class EntityView;
29 }
30 
31 namespace Clutter
32 {
33  class SimEngine
34  {
35  public:
37  Legion::Vector2d referenceCoordinate, int maxEntites, int forceId);
38  ~SimEngine();
39 
40  void finish();
41  void tick();
42 
43  // Toggle play/pause
44  void togglePause() { myTogglePause = true; }
45 
46  // Change the Force ID
47  // If isContinuous is false, only change once this frame; otherwise, make change every frame
48  // fractionToChange determines how many entities are changed (i.e., 1/1, 1/2, 1/3 ... where every 2nd, 3rd etc. entity is changed).
49  void toggleForceId(int fractionToToggle);
50 
51  double simTime() { return mySimTime.time(); }
52 
53  protected:
54  bool init();
55  bool isPaused() const { return mySimTime.isPaused(); }
56  void updateForce();
57 
60 
62  void addHumanComponents(LOM::WriteEntityRepository* ent, int entityId);
63  void updateEntities(int firstEntityIndex, int numberOfEntites);
64  bool entityAtDestination(LOM::WriteEntityRepository* ent);
65  void selectNewDestination(LOM::WriteEntityRepository* ent);
66  double nextRand(int maxRange);
67 
72  LOM::EntityView* myEntityView;
73 
74  std::vector<LOM::WriteEntityRepository> myEntites;
75 
79  int myNumberEntities;
81 
82  int myForceId;
84 
85  bool myIsInitalized;
86  MAK::SimTime mySimTime;
87  bool myTogglePause;
88 
89  //extended attributes of the entity
92 
95  };
96 }
bool myIsInitalized
Definition: embark/clutterSim.h:81
void updateForce()
Definition: legionClutterClient/clutterSim.cxx:367
int myNumberEntities
Definition: embark/clutterSim.h:77
Legion::SimulationDatabase * mySimDatabase
Definition: embark/clutterSim.h:69
Legion::Vector2d myMax
Definition: embark/clutterSim.h:75
int myNumberRemoteEntities
Definition: legionClutterClient/clutterSim.h:80
void processPauseControls(Legion::Span< LOM::PauseControl > &controlList)
Definition: embark/clutterSim.cxx:537
The ViewManager creates and manages the views of a database.
Definition: viewManager.h:42
void finish()
Definition: embark/clutterSim.cxx:217
Legion::Vector2d myMin
Definition: embark/clutterSim.h:74
Legion::ControlManager * myControlManager
Definition: embark/clutterSim.h:70
~SimEngine()
Definition: embark/clutterSim.cxx:131
void addHumanComponents(LOM::WriteEntityRepository *ent, int entityId)
Definition: legionClutterClient/clutterSim.cxx:257
Legion::EventManager * myEventManager
Definition: legionClutterClient/clutterSim.h:70
bool isPaused() const
Definition: legionClutterClient/clutterSim.h:55
Legion::UInt32 myMoveDelayAttrIndex
Definition: embark/clutterSim.h:86
The EventManager manages the creation and distribution of simulation events such as Fire and Detonate...
Definition: eventManager.h:33
A span represents a contiguous array of objects in memory.
Definition: span.h:22
void selectNewDestination(LOM::WriteEntityRepository *ent)
Definition: embark/clutterSim.cxx:630
Definition: vector.h:116
Legion::UInt32 myPauseCallbackHandle
Definition: embark/clutterSim.h:90
void extendEntityAttributes()
Definition: embark/clutterSim.cxx:137
unsigned int UInt32
Definition: dataTypes.h:44
The SimulationDatabase stores all data for the simulation. It also owns the event, control, and view managers.
Definition: simulationDatabase.h:42
int myForceId
Definition: legionClutterClient/clutterSim.h:82
void togglePause()
Definition: legionClutterClient/clutterSim.h:44
bool entityAtDestination(LOM::WriteEntityRepository *ent)
Definition: embark/clutterSim.cxx:616
Legion::Vector2d myReferenceCoordinate
Definition: embark/clutterSim.h:76
bool myTogglePause
Definition: embark/clutterSim.h:83
void toggleForceId(int fractionToToggle)
Definition: legionClutterClient/clutterSim.cxx:361
double simTime()
Definition: legionClutterClient/clutterSim.h:51
Legion::UInt32 myMoveGoalAttrIndex
Definition: embark/clutterSim.h:87
int myFractionToToggle
Definition: embark/clutterSim.h:79
LOM::EntityView * myEntityView
Definition: legionClutterClient/clutterSim.h:72
Legion::UInt32 myPlayCallbackHandle
Definition: embark/clutterSim.h:89
void processPlayControls(Legion::Span< LOM::PlayControl > &controlList)
Definition: embark/clutterSim.cxx:517
bool init()
Definition: embark/clutterSim.cxx:164
MAK::SimTime mySimTime
Definition: embark/clutterSim.h:82
The control manager is responsible for creating and adding controls to the simulation database...
Definition: controlManager.h:33
void updateEntities(int firstEntityIndex, int numberOfEntites)
Definition: embark/clutterSim.cxx:557
Legion::ViewManager * myViewManager
Definition: legionClutterClient/clutterSim.h:69
std::vector< LOM::WriteEntityRepository > myEntites
Definition: legionClutterClient/clutterSim.h:74
void tick()
Definition: embark/clutterSim.cxx:230
SimEngine(Legion::SimulationDatabase *db, Legion::Vector2d minBounds, Legion::Vector2d maxBounds, Legion::Vector2d referenceCoordinate, int maxEntites, int testCase)
Definition: embark/clutterSim.cxx:107
double nextRand(int maxRange)
Definition: embark/clutterSim.cxx:648

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)