Startup Sequence

From process start to the first rendered terrain frame.

Sequence

OS: exec GalaxyEggbertCNA
  └─ main()  [src/GalaxyEggbertCNA/main.cpp]
       ├─ game = new GalaxyEggbertCnaGame()
       │    └─ constructor sets window title: "Galaxy Eggbert (CNA)"
       ├─ game->Run()          [CNA's Game::Run() — owns the loop]
       │    ├─ LoadContent()
       │    │    ├─ worldRuntime_.LoadFromVwrFile("worlds3d/world001.vwr")
       │    │    │    └─ Worlds::World::loadFromFile(...) — parses VWR1 header,
       │    │    │       chunk table, VCH1 payloads (see VWR Format)
       │    │    ├─ terrainRenderer_ = GETerrainRenderer(world, GETileAtlas(...))
       │    │    │    └─ builds static CubeBatch → Easy3D::BuildCubeMesh → CubeMeshRenderer
       │    │    ├─ texture_ = Texture2D("Content/icons/object-m.png")
       │    │    ├─ terrainEffect_ = BasicEffect(textured, no vertex color, bound to texture_)
       │    │    └─ blupi_.SetPosition(0, 1, 0)
       │    │
       │    │  ... engine runs its internal frame loop ...
       │    │
       │    ├─ Update(gameTime)   [every frame]
       │    │    ├─ worldRuntime_.Update(dt)      — advance 6fps anim phase
       │    │    ├─ read Keyboard::GetState()
       │    │    ├─ blupi_.Step(world, dx, dz, jump, dt)
       │    │    └─ camera_.SetTarget(blupi_.GetPosition()); camera_.Update(dt)
       │    │
       │    └─ Draw(gameTime)     [every frame]
       │         ├─ device.Clear(sky blue)
       │         ├─ set View/Projection/World on terrainEffect_
       │         └─ terrainRenderer_->Draw(device, *terrainEffect_)
       └─ delete game

Key Observations