STARTING
PROGRAM
Main(Act.)
Construct Simulator( for Act.)
Construct Viewer3D( for Sim.)
Construct RenderProcess()
[Link]()
Construct LoaderProcess()
Construct UpdaterProcess()
[Link]()
[Link]()
RenderProcess
( XNA Game Class )
[Link]()
[Link]()
[Link]() Improving Load Time STARTING
[Link]() could benefit from 3D GRAPHICS
[Link]() additional multiprocessing. It is CPU limited
(vs Disk limited ) and it shouldn’t be too hard to
SYSTEM
[Link]() split the loading task off into multiple processor
[Link]() threads, one for each tile.
SceneryDrawerLoad()
TrainDrawerLoad()
[Link]()
[Link]()
LoaderProcess
UpaterProcess
[Link]()
[Link]()
Sets Time – RealTime and ClockTime
RenderFrame
[Link]()
[Link]()
FRAME 1 - physics
- ai
Draws Nothing - signals
[Link]() [Link] UserInput()
- camera
- player loco
- game control
FRAME 2
Must wait for the [Link]()
renderframe data before it - camera
can begin to draw. - sky
- terrain
- scenery
- trains
- info
RenderFrame
[Link]() [Link]()
- terrain
- scenery
RenderFrame - trains
Camera and Train Locations
[Link]() REPEATS EACH FRAME
[Link]() [Link]()
[Link]()
- physics
For each Primitive … - TerrainDrawerLoad()
- ai
- signals
[Link]()
[Link]()
- SceneryDrawerLoad()
[Link]()
[Link]()
- TrainDrawerLoad()
[Link] UserInput() HandleUserInput only runs
[Link]() - camera when RenderProcess signals
[Link]() - player loco new input is ready.
- game control
[Link]()
[Link]()
[Link]() [Link]()
- camera 100 mS
[Link]()
- sky
[Link]() - terrain
- scenery
[Link]()
- trains
[Link]() - info
[Link]()
[Link]()
[Link]()
.
.
.
Shape File Additions/Deletions
[Link]()
- terrain LoaderPrep runs every 100 mS
RenderFrame - scenery or when data is available
- trains
List of Camera and Train Locations
primitives
Normally UpdaterProcess
will be waiting for
[Link]() RenderProcess.
HandleUser
Input runs [Link]()
every 30 ms
[Link]() RenderFrame