Processor Flow Chart
Processor Flow Chart
PROGRAM
Main(Act.)
Construct RenderProcess()
Viewer3D.Configure()
Construct LoaderProcess()
Construct UpdaterProcess()
Viewer3D.Run()
RenderProcess.Run()
RenderProcess
( XNA Game Class )
RenderProcess.Initialize()
Materials.Initialize()
UpaterProcess
RenderProcess.Draw()
UserInput.Update()
Sets Time – RealTime and ClockTime
RenderFrame
UpdaterProcess.Update()
Simulator.Update()
FRAME 1 - physics
- ai
Draws Nothing - signals
FRAME 2
Must wait for the Viewer3D.PrepareFrame()
renderframe data before it - camera
can begin to draw. - sky
- terrain
- scenery
- trains
- info
RenderFrame
UpdaterProcess.Update() Viewer3D.LoaderPrep()
- terrain
- scenery
RenderFrame - trains
Camera and Train Locations
RenderProcess.Draw() REPEATS EACH FRAME
RenderFrame.Draw() Viewer3D.Load()
Simulator.Update()
- physics
For each Primitive … - TerrainDrawerLoad()
- ai
- signals
Material.Render()
RenderPrimitive.Draw()
- SceneryDrawerLoad()
Material.Render()
RenderPrimitive.Draw()
- TrainDrawerLoad()
Viewer3D.Handle UserInput() HandleUserInput only runs
Material.Render() - camera when RenderProcess signals
RenderPrimitive.Draw() - player loco new input is ready.
- game control
Material.Render()
RenderPrimitive.Draw()
Material.Render() Viewer3D.PrepareFrame()
- camera 100 mS
RenderPrimitive.Draw()
- sky
Material.Render() - terrain
- scenery
RenderPrimitive.Draw()
- trains
Material.Render() - info
RenderPrimitive.Draw()
Material.Render()
RenderPrimitive.Draw()
.
.
.
Normally UpdaterProcess
will be waiting for
RenderProcess.Draw() RenderProcess.
HandleUser
Input runs UserInput.Update()
every 30 ms
UpdaterProcess.Update() RenderFrame