forked from cmickeyb/mobdat
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmobdat_classes.dot
More file actions
executable file
·193 lines (193 loc) · 20.5 KB
/
mobdat_classes.dot
File metadata and controls
executable file
·193 lines (193 loc) · 20.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
digraph "classes_No_Name" {
charset="utf-8"
rankdir=BT
"0" [label="{AggregateDurationEvent|MinimumSplitDuration : float\lAggregateID\lAggregateHead : bool\l|Create()\lAddConstraints()\lSplit()\l}", shape="record"];
"1" [label="{BackgroundEvent|\l|Create()\lSplit()\l}", shape="record"];
"2" [label="{BaseConnector|StartTimeOfDay : float\lSecondsPerStep : float\lClock\lInterval : float\lCurrentStep : int\lNetSettings\lWorld\lRealDayLength\l|WorldDay()\lGetWorldTime()\lWorldTimeOfDay()\lGetWorldTimeOfDay()\lWorldTime()\lGetWorldDay()\l}", shape="record"];
"3" [label="{Business|\l|}", shape="record"];
"4" [label="{BusinessLocation|\l|AddCapsuleToLocation()\l}", shape="record"];
"5" [label="{BusinessLocationDecoration|PeakCustomerCount : int\lPeakEmployeeCount : int\lDecorationName : str\l|Load()\lCustomerCapacity()\lDump()\lEmployeeCapacity()\lEndPointCount()\lFitness()\lAddBusiness()\l}", shape="record"];
"6" [label="{BusinessLocationProfile|\l|}", shape="record"];
"7" [label="{BusinessLocationProfileDecoration|EmployeesPerNode : int\lCustomersPerNode : int\lPreferredBusinessTypes\lDecorationName : str\l|Load()\lDump()\lFitness()\l}", shape="record"];
"8" [label="{BusinessProfile|\l|AddServiceProfile()\l}", shape="record"];
"9" [label="{BusinessProfileDecoration|BusinessType\lAnnotations : dict\lDecorationName : str\l|Load()\lTestAnnotation()\lDump()\lBusinessTypePred()\lRemAnnotation()\lAddAnnotation()\l}", shape="record"];
"10" [label="{CapsuleDecoration|DecorationName : str\l|Load()\lSourceName()\lDestinationName()\lEndPointCount()\l}", shape="record"];
"11" [label="{ConnectedTo|\l|}", shape="record"];
"12" [label="{Constraint|ConstraintID\lPriority : int\lMinimalVariance : float\l|fpcompare()\l}", shape="record"];
"13" [label="{ConstraintStore|LastPickedVariable : NoneType\l|DumpToLog()\lApplyConstraints()\lSolveConstraints()\l}", shape="record"];
"14" [label="{CoordDecoration|Y\lX\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"15" [label="{Decoration|HostObject : NoneType\lDecorationName : str\l|Load()\lDump()\lSetHostObject()\l}", shape="record"];
"16" [label="{Edge|EndNode\lStartNode\l|Load()\lDump()\l}", shape="record"];
"17" [label="{EdgeTypeDecoration|Name\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"18" [label="{EdgeWeightDecoration|Weight : float\lDecorationName : str\l|Load()\lAddWeight()\lDump()\l}", shape="record"];
"19" [label="{EmployedBy|\l|}", shape="record"];
"20" [label="{EmploymentProfileDecoration|JobList : dict\lDecorationName : str\l|Load()\lDump()\lPeakEmployeeCount()\l}", shape="record"];
"21" [label="{EndPoint|\l|}", shape="record"];
"22" [label="{EndPointDecoration|DecorationName : str\l|Load()\lDump()\lSourceName()\lDestinationName()\l}", shape="record"];
"23" [label="{EventAddVehicle|Route\lTarget\lObjectType\l|}", shape="record"];
"24" [label="{EventController|ShoppingTrip : float\lLunchDuringWork : float\lRestaurantAfterWork : float\lCoffeeBeforeWork : float\l|FireDinnerAfterWork()\lFireShopping()\lFireCoffeeBeforeWork()\lFireLunchAtWork()\l}", shape="record"];
"25" [label="{EventCreateObject|ObjectType\l|}", shape="record"];
"26" [label="{EventDeleteObject|\l|}", shape="record"];
"27" [label="{EventHandler|HandlerID\lRouterQueue\lHandlerQueue : Queue\lHandlerRegistry : dict\l|HandleEvents()\lHandleEvent()\lShutdown()\lHandleEventsLoop()\lSubscribeEvent()\lPublishEvent()\l}", shape="record"];
"28" [label="{EventInductionLoop|VehicleCount\l|}", shape="record"];
"29" [label="{EventObjectDynamics|ObjectPosition\lObjectRotation\lObjectVelocity\l|}", shape="record"];
"30" [label="{EventPropertyChange|ObjectProperty\lObjectValue\l|}", shape="record"];
"31" [label="{EventRouter|RouterQueue : Queue\lRouterRegistry : dict\lSubscriptions : dict\l|HandleSubscribeEvent()\lHandleUnsubscribeEvent()\lRouteEvents()\lRouteEvent()\lRouteEventsLoop()\lRegisterHandler()\l}", shape="record"];
"32" [label="{EventTrafficLightStateChange|StopLightState\l|}", shape="record"];
"33" [label="{GaussianIntervalVariable|Priority : int\l|PickValue()\l}", shape="record"];
"34" [label="{Generators|\l|RMAT()\l}", shape="record"];
"35" [label="{Graph|Nodes : dict\lEdges : dict\lDecorationMap : dict\l|DropEdges()\lDropNode()\lFindEdgeByName()\lIterEdges()\lDropEdgesByPattern()\lFindNodeByName()\lDropNodeByName()\lDropNodes()\lFindEdgeBetweenNodes()\lAddEdge()\lLoadDecoration()\lDropEdgeByName()\lIterNodes()\lFindEdges()\lLoad()\lFindNodes()\lDump()\lAddNode()\lLoadFromFile()\lAddDecorationHandler()\lDropEdge()\lFindByName()\l}", shape="record"];
"36" [label="{GraphObject|InputEdges : list\lCollections : dict\lOutputEdges : list\lName\lDecorations : dict\l|AddOutputEdge()\lAddDecoration()\lAddInputEdge()\lLoadDecorations()\lIterInputEdges()\lDump()\lFindDecorationProvider()\lAddToCollection()\lDropFromCollection()\lFindOutputEdges()\lIterOutputEdges()\lFindInputEdges()\lEdgeExists()\l}", shape="record"];
"37" [label="{Intersection|WEST : int\lEAST : int\lNORTH : int\lSOUTH : int\l|SouthEdge()\lNorthEdge()\lInputEdgeMap()\lEastEdge()\lWestEdge()\lSignature()\lOutputEdgeMap()\lY()\lX()\l}", shape="record"];
"38" [label="{IntersectionInfo|ZOffset\lName\lAssetID\lIntersectionTypes\lPadding\lSignature\l|}", shape="record"];
"39" [label="{IntersectionType|\l|}", shape="record"];
"40" [label="{IntersectionTypeDecoration|Name\lRender : bool\lIntersectionType : str\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"41" [label="{IntervalVariable|IntervalEnd : float\lIntervalStart : float\lID\lPriority : int\lMinimalVariance : float\l|SetValue()\lIsValid()\lPickValue()\lGetValue()\lIsFixed()\lCopy()\l}", shape="record"];
"42" [label="{IntervalVariableStore|\l|DumpToLog()\lFindFreeVariables()\lStoreIsValid()\lStoreIsFixed()\lCopy()\l}", shape="record"];
"43" [label="{JobDescription|Salary\lFlexibleHours\lName\lSchedule\l|Load()\lCopy()\lDump()\l}", shape="record"];
"44" [label="{JobDescriptionDecoration|JobDescription\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"45" [label="{LayoutSettings|IntersectionTypeMap : dict\lRoadTypeMap : dict\lRoadTypes : dict\lIntersectionTypes : dict\lVehicleTypes : dict\l|ProcessSettings()\l}", shape="record"];
"46" [label="{LocationCapsule|\l|AddEndPointToCapsule()\l}", shape="record"];
"47" [label="{MaximumIntervalVariable|Priority : int\l|PickValue()\l}", shape="record"];
"48" [label="{MinimumIntervalVariable|Priority : int\l|PickValue()\l}", shape="record"];
"49" [label="{MobdatController|prompt\lEventRouter\lpformat : str\l|do_shutdown()\ldo_stopat()\lpostcmd()\ldo_start()\ldo_exit()\l}", shape="record"];
"50" [label="{Node|Members : list\l|Load()\lAddMember()\lDropMember()\lDump()\lLoadMembers()\l}", shape="record"];
"51" [label="{NodeTypeDecoration|Name\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"52" [label="{ObjectEvent|ObjectIdentity\l|Dump()\l}", shape="record"];
"53" [label="{OpenSimBuilder|OpenSimConnector : OpenSimRemoteControl\lRoadMap : dict\lNodeMap : dict\lWorld\lWorldCenterY\lWorldCenterX\lLogger : NoneType, RootLogger\lWorldCenterZ\lLayoutSettings\l|ComputeRotation()\lFindAssetInObject()\lCreateNode()\lPushNetworkToOpenSim()\lCreateNodes()\lComputeLocation()\lCreateRoads()\l}", shape="record"];
"54" [label="{OpenSimConnector|Binary\lClock\lAverageClockSkew : float\lEndPoint\lOpenSimConnector : OpenSimRemoteControl\lVehicleTypes\lVehicleReuseList : dict\lCurrentTime : int\lCurrentStep : int\lVelocityDelta\lInterpolated : int\lVehicles : dict\lUpdateThreadCount\lCapability : UUID\lWorldSize\lAccelerationDelta\lPositionDelta\lAsyncEndPoint\lUpdateThreads : list\lScene\lDumpCount : int\lWorkQ : Queue\lWorldOffset\l|HandleShutdownEvent()\lHandleCreateObjectEvent()\lSimulationStart()\lHandleObjectDynamicsEvent()\lHandleTimerEvent()\lHandleDeleteObjectEvent()\l}", shape="record"];
"55" [label="{OpenSimConnectorStatsEvent|ClockSkew : float\l|}", shape="record"];
"56" [label="{OpenSimUpdateThread|Binary : bool\lEndPoint\lOpenSimConnector : OpenSimRemoteControl\lVehicles\lTotalUpdates : int\lScene\lCapability\lWorkQ\l|ProcessUpdates()\lProcessUpdatesLoop()\lrun()\l}", shape="record"];
"57" [label="{OpenSimVehicle|LastUpdate\lVehicleType\lVehicleID\lInUpdateQueue : bool\lTweenUpdate\lVehicleName\l|}", shape="record"];
"58" [label="{OpenSimVehicleDynamics|Acceleration\lPosition\lRotation\lUpdateTime : int\lVelocity\l|CreateTweenUpdate()\lInterpolatePosition()\lComputeVelocity()\lComputePosition()\l}", shape="record"];
"59" [label="{OrderConstraint|ID1\lID2\lDelta : int\lPriority : int\l|Apply()\lDump()\l}", shape="record"];
"60" [label="{Person|\l|SetVehicle()\lSetJob()\l}", shape="record"];
"61" [label="{PersonProfile|\l|}", shape="record"];
"62" [label="{PlaceEvent|EventID\lArrival : NoneType\lBaseEventStart\lDeparture : NoneType\lBaseEventEnd\lDetails\lEventStart\lEventEnd\lDuration\l|Reset()\lDumpToLog()\lPrevPlace()\lNextPlace()\lAddVariables()\lSplit()\lAddConstraints()\l}", shape="record"];
"63" [label="{PostEventEvent|\l|Create()\l}", shape="record"];
"64" [label="{PreEventEvent|\l|Create()\l}", shape="record"];
"65" [label="{Quaternion|y : float\lx : float\lz : float\lw : float\l|ToList()\lToHeading()\lEquals()\lFromHeading()\l}", shape="record"];
"66" [label="{ResidentialGenerator|DrivewayType\lSpacing : int\lBothSides : bool\lDrivewayBuffer : int\lRoadType\lDrivewayLength : int\lResidentialType\lIntersectionType\l|}", shape="record"];
"67" [label="{ResidentialLocation|\l|AddCapsuleToLocation()\l}", shape="record"];
"68" [label="{ResidentialLocationDecoration|ResidentCount : int\lResidenceList : dict\lDecorationName : str\l|Load()\lDump()\lAddResidentToNode()\lAddResident()\lEndPointCount()\lFitness()\lResidentCapacity()\l}", shape="record"];
"69" [label="{ResidentialLocationProfile|\l|}", shape="record"];
"70" [label="{ResidentialLocationProfileDecoration|ResidentsPerNode : int\lDecorationName : str\l|Load()\lDump()\lFitness()\l}", shape="record"];
"71" [label="{ResidesAt|\l|}", shape="record"];
"72" [label="{Road|\l|}", shape="record"];
"73" [label="{RoadInfo|AssetID\lRoadTypes\lZOffset\lName\l|}", shape="record"];
"74" [label="{RoadType|\l|}", shape="record"];
"75" [label="{RoadTypeDecoration|Lanes : int\lCenter : bool\lRender : bool\lPriority : int\lWidth : float\lSignature : str\lSpeed : float\lName\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"76" [label="{ScheduledEvent|EndTime\lDay\lStartTime\l|WorldEndTime()\lWorldStartTime()\l}", shape="record"];
"77" [label="{ServiceProfileDecoration|CustomerCapacity\lServiceTime\lSchedule\lDecorationName : str\l|Load()\lDump()\lPeakServiceCount()\l}", shape="record"];
"78" [label="{ShutdownEvent|RouterShutdown\l|}", shape="record"];
"79" [label="{SocialConnector|TripTimerEventQ : list\lTravelers : dict\lCurrentStep\lTripCallbackMap : dict\lMaximumTravelers : int\l|GenerateAddVehicleEvent()\lHandleShutdownEvent()\lAddTripToEventQueue()\lSimulationStart()\lCreateTravelers()\lGenerateTripBegEvent()\lHandleTimerEvent()\lHandleDeleteObjectEvent()\lGenerateTripEndEvent()\l}", shape="record"];
"80" [label="{StatsConnector|Logger : NoneType, RootLogger\lCurrentStep : int\lCurrentTime : int\l|HandleShutdownEvent()\lSimulationStart()\lHandleStatsEvent()\lHandleVehicle()\lHandleTimerEvent()\l}", shape="record"];
"81" [label="{StatsEvent|StatKey\lCurrentStep\l|}", shape="record"];
"82" [label="{SubscribeEvent|EventType\lHandler\l|}", shape="record"];
"83" [label="{SumoBuilder|Prefix\lScaleValue : float\lWorld\lPath\lLogger : NoneType, RootLogger\lLayoutSettings\l|Scale()\lPushNetworkToSumo()\lCreateConnections()\lCreateRoadTypes()\lCreateIntersections()\lCreateRoutes()\lCreateRoads()\l}", shape="record"];
"84" [label="{SumoConnector|SumoProcess : Popen\lEdgesPerIteration : int\lCurrentEdgeList : list\lTimeScale\lCurrentTime\lXBase\lYSize\lVelocityFudgeFactor\lDumpCount : int\lTrafficLights : dict\lConfigFile\lEdgeList : list\lCurrentStep\lXSize\lYBase\lSimulationBoundary\lAverageClockSkew : float\lPort\l|HandleShutdownEvent()\lHandleDepartedVehicles()\lSimulationStart()\lHandleTimerEvent()\lHandleInductionLoops()\lHandleVehicleUpdates()\lHandleAddVehicleEvent()\lHandleArrivedVehicles()\lHandleTrafficLights()\l}", shape="record"];
"85" [label="{SumoConnectorStatsEvent|VehicleCount : int\lClockSkew : float\l|}", shape="record"];
"86" [label="{TimedEventList|TravelTimeEstimator\lBaseEvent\lEvents : dict\l|DumpToLog()\lInsertWithinPlaceEvent()\lPrevPlaceID()\lPopTripEvent()\lFindEvents()\lLastEvent()\lSolveConstraints()\lNextPlaceID()\lInsertAfterPlaceEvent()\lMoreTripEvents()\lDumpToLogIntervalVariables()\lAddPlaceEvent()\l}", shape="record"];
"87" [label="{TimerEvent|CurrentStep\lCurrentTime\l|Dump()\l}", shape="record"];
"88" [label="{TimerThread|EventRouter\lIntervalTime : float\lClock\l|run()\l}", shape="record"];
"89" [label="{TravelEvent|Duration\lEventID\lSrcPlace\lDstPlace\lDefaultDuration : float\l|AddVariables()\lDumpToLog()\lAddConstraints()\l}", shape="record"];
"90" [label="{TravelTimeEstimator|RouteData : dict\lDefaultTravelTime : float\lHistoryFactor : int\l|SaveTravelTime()\lComputeTravelTime()\l}", shape="record"];
"91" [label="{Traveler|LocationNameMap : dict\lEventList : NoneType\lJob\lEmployer\lConnector\lPerson\lController\lWorld\lTravelEstimator\lBusinessCache : dict\l|TripCompleted()\lScheduleNextTrip()\lInitializeLocationNameMap()\lResolveLocationName()\lBuildDailyEvents()\lTripStarted()\lFindBusinessByType()\l}", shape="record"];
"92" [label="{Trip|VehicleType\lTripID\lDestination\lSource\lScheduledStartTime\lTraveler\lActualStartTime : int\lVehicleName\l|TripCompleted()\lTripStarted()\l}", shape="record"];
"93" [label="{TripBegStatsEvent|\l|}", shape="record"];
"94" [label="{TripEndStatsEvent|\l|}", shape="record"];
"95" [label="{TripEvent|SrcName\lStartTime\lDstName\l|}", shape="record"];
"96" [label="{TripStatsEvent|Person\lDestinationNode\lTripID\lSourceNode\l|}", shape="record"];
"97" [label="{UnsubscribeEvent|EventType\lHandler\l|}", shape="record"];
"98" [label="{VariableMiddleEvent|\l|Create()\l}", shape="record"];
"99" [label="{Vector3|y : float\lx : float\lz : float\l|ToList()\lLengthSquared()\lApproxEquals()\lVectorDistance()\lScaleVector()\lAddVector()\lSubVector()\lEquals()\lLength()\lVectorDistanceSquared()\lScaleConstant()\l}", shape="record"];
"100" [label="{VehicleDecoration|VehicleName\lVehicleType\lDecorationName : str\l|Load()\lDump()\l}", shape="record"];
"101" [label="{VehicleTypeDecoration|VehicleTypeMap : dict\lVehicleTypeList : NoneType, list\lDecorationName : str\l|Load()\lDump()\lAddVehicleType()\lPickVehicleType()\l}", shape="record"];
"102" [label="{VehicleTypeInfo|Acceleration\lProfileTypes\lMaxSpeed\lName\lAssetID\lRate\lLength\lDeceleration\lMinGap\lDescription\lSigma\lStartParameter\l|}", shape="record"];
"103" [label="{WeeklySchedule|\l|ScheduledAtTime()\lWorkWeekSchedule()\lDump()\lSpecialSchedule()\lFullWeekSchedule()\lNextScheduledEvent()\lScheduleForDay()\l}", shape="record"];
"104" [label="{WeightedChoice|WeightedList : list\lWeights : dict\lModified : bool\l|DropChoice()\lAddChoice()\lChoose()\l}", shape="record"];
"105" [label="{WeightedEdge|\l|}", shape="record"];
"106" [label="{WorldBuilder|\l|ConnectIntersections()\lGenerateResidential()\lFindClosestNode()\lAddBusiness()\lAddResidentialLocation()\lAddIntersection()\lBuildSimpleParkingLotSN()\lAddRoad()\lAddBusinessProfile()\lFindNodesInRange()\lBuildSimpleParkingLotEW()\lAddIntersectionBetween()\lAddRoadType()\lSetRoadTypeByPattern()\lAddPerson()\lAddIntersectionType()\lAddBusinessLocation()\lAddBusinessLocationProfile()\lAddEndPoint()\lLoadFromFile()\lBuildSimpleParkingLotNS()\lAddResidentialLocationProfile()\lAddPersonProfile()\lSetIntersectionTypeByPattern()\lGenerateGrid()\l}", shape="record"];
"107" [label="{WorldInfo|\l|AddRoadType()\lAddBusinessLocation()\lAddResidentialLocation()\lAddBusinessLocationProfile()\lAddIntersection()\lAddBusinessProfile()\lSetResidence()\lLoadFromFile()\lSetEmployer()\lAddResidentialLocationProfile()\lAddRoad()\lAddLocationCapsule()\lAddPersonProfile()\lAddPerson()\lAddEndPoint()\lAddIntersectionType()\lAddBusiness()\l}", shape="record"];
"0" -> "62" [arrowhead="empty", arrowtail="none"];
"1" -> "62" [arrowhead="empty", arrowtail="none"];
"3" -> "50" [arrowhead="empty", arrowtail="none"];
"4" -> "50" [arrowhead="empty", arrowtail="none"];
"5" -> "15" [arrowhead="empty", arrowtail="none"];
"6" -> "50" [arrowhead="empty", arrowtail="none"];
"7" -> "15" [arrowhead="empty", arrowtail="none"];
"8" -> "50" [arrowhead="empty", arrowtail="none"];
"9" -> "15" [arrowhead="empty", arrowtail="none"];
"10" -> "15" [arrowhead="empty", arrowtail="none"];
"11" -> "105" [arrowhead="empty", arrowtail="none"];
"14" -> "15" [arrowhead="empty", arrowtail="none"];
"16" -> "36" [arrowhead="empty", arrowtail="none"];
"17" -> "15" [arrowhead="empty", arrowtail="none"];
"18" -> "15" [arrowhead="empty", arrowtail="none"];
"19" -> "16" [arrowhead="empty", arrowtail="none"];
"20" -> "15" [arrowhead="empty", arrowtail="none"];
"21" -> "37" [arrowhead="empty", arrowtail="none"];
"22" -> "15" [arrowhead="empty", arrowtail="none"];
"23" -> "52" [arrowhead="empty", arrowtail="none"];
"25" -> "52" [arrowhead="empty", arrowtail="none"];
"26" -> "52" [arrowhead="empty", arrowtail="none"];
"28" -> "52" [arrowhead="empty", arrowtail="none"];
"29" -> "52" [arrowhead="empty", arrowtail="none"];
"30" -> "52" [arrowhead="empty", arrowtail="none"];
"32" -> "52" [arrowhead="empty", arrowtail="none"];
"33" -> "41" [arrowhead="empty", arrowtail="none"];
"37" -> "50" [arrowhead="empty", arrowtail="none"];
"39" -> "50" [arrowhead="empty", arrowtail="none"];
"40" -> "15" [arrowhead="empty", arrowtail="none"];
"44" -> "15" [arrowhead="empty", arrowtail="none"];
"46" -> "50" [arrowhead="empty", arrowtail="none"];
"47" -> "41" [arrowhead="empty", arrowtail="none"];
"48" -> "41" [arrowhead="empty", arrowtail="none"];
"50" -> "36" [arrowhead="empty", arrowtail="none"];
"51" -> "15" [arrowhead="empty", arrowtail="none"];
"54" -> "2" [arrowhead="empty", arrowtail="none"];
"54" -> "27" [arrowhead="empty", arrowtail="none"];
"55" -> "81" [arrowhead="empty", arrowtail="none"];
"59" -> "12" [arrowhead="empty", arrowtail="none"];
"60" -> "50" [arrowhead="empty", arrowtail="none"];
"61" -> "50" [arrowhead="empty", arrowtail="none"];
"63" -> "62" [arrowhead="empty", arrowtail="none"];
"64" -> "62" [arrowhead="empty", arrowtail="none"];
"67" -> "50" [arrowhead="empty", arrowtail="none"];
"68" -> "15" [arrowhead="empty", arrowtail="none"];
"69" -> "50" [arrowhead="empty", arrowtail="none"];
"70" -> "15" [arrowhead="empty", arrowtail="none"];
"71" -> "16" [arrowhead="empty", arrowtail="none"];
"72" -> "16" [arrowhead="empty", arrowtail="none"];
"74" -> "50" [arrowhead="empty", arrowtail="none"];
"75" -> "15" [arrowhead="empty", arrowtail="none"];
"77" -> "15" [arrowhead="empty", arrowtail="none"];
"79" -> "2" [arrowhead="empty", arrowtail="none"];
"79" -> "27" [arrowhead="empty", arrowtail="none"];
"80" -> "2" [arrowhead="empty", arrowtail="none"];
"80" -> "27" [arrowhead="empty", arrowtail="none"];
"84" -> "2" [arrowhead="empty", arrowtail="none"];
"84" -> "27" [arrowhead="empty", arrowtail="none"];
"85" -> "81" [arrowhead="empty", arrowtail="none"];
"93" -> "96" [arrowhead="empty", arrowtail="none"];
"94" -> "96" [arrowhead="empty", arrowtail="none"];
"96" -> "81" [arrowhead="empty", arrowtail="none"];
"98" -> "62" [arrowhead="empty", arrowtail="none"];
"100" -> "15" [arrowhead="empty", arrowtail="none"];
"101" -> "15" [arrowhead="empty", arrowtail="none"];
"105" -> "16" [arrowhead="empty", arrowtail="none"];
"106" -> "107" [arrowhead="empty", arrowtail="none"];
"107" -> "35" [arrowhead="empty", arrowtail="none"];
"24" -> "91" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Controller", style="solid"];
"58" -> "57" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="LastUpdate", style="solid"];
"58" -> "57" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="TweenUpdate", style="solid"];
"65" -> "58" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Rotation", style="solid"];
"86" -> "91" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="EventList", style="solid"];
"90" -> "91" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="TravelEstimator", style="solid"];
"99" -> "54" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="WorldSize", style="solid"];
"99" -> "54" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="WorldOffset", style="solid"];
"99" -> "58" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Acceleration", style="solid"];
"99" -> "58" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Position", style="solid"];
"99" -> "58" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Position", style="solid"];
"99" -> "58" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="Velocity", style="solid"];
}