# World

## Class

### SceneObject

- SceneObjectLocation ==> SceneObjectBase
  - SceneObject
    - World
      - EditWorld
      - PVSWorld
    - SceneZoneManagerObject
      - SceneRoot
      - InteriorInstance
    - ShapeBase
      - ModelShapeBase ==> StaticModelShape
        - OutdoorStaticShape
    - AudioEmitter
      - LightningSound

### Resource

- Resource
  - Interior 

### other

- TerrTile
  - TerrTileEdit
- SceneInstance

## Object

World

- `SKies mSky`
- `SceneInstance* m_SceneInstance`
- `WorldLoader* mTileLoader`
  - `Vector<Tile>  mTiles`
    - `WorldAreaHeader mFileHeader`
    - `Vector<stModelResInfo> mModels`
      - `ResourcePtr res`
    - `Vector<ModelInstanceInfo> mModelis`
      - `std::map<U32,stObject>::iterator it` 
      - `stObject ==> ShapeBase`
    - `Vector<InteriorPtr> mInteriors`
      - `Interior pRep`
    - `Vector<InteriorInstanceInfo> mInteriorInsts`
      - `std::map<U32,stObject>::iterator` it
      - `stObject ==> InteriorInstance`
  - `World* mWorld`
- `XMapObjectMgr<XMapInteriorObj> mInteriorInsts`
  - `XMapInteriorObj obj`
  - `InteriorInstance* obj.inst`
- `XMapObjectMgr<XMapShapeObj> mStaticShape`
  - `XMapShapeObj obj`
  - `ShapeBase* obj.inst`

SceneInstance

- `SceneRoot* m_ClientSceneRoot`
- `SceneGraph* m_ClientSceneGraph`
- `rcPathWorld* mRcWorld`



## Flow

Wolrd

- `World::setHotPos`
- `World::updateHotArea`
  - `World::updateTile`
  - `World::updateChunk`
- `World::updateTile`
  - `WorldLoader::update`
    - `TerrTile::addToScene`
      - `TerrTile::initObjects`
        - `TerrTile::setDoodads`
          - `TerrTile::createADoodad`
        - `TerrTile::setMapObjs`
          - `TerrTile::createAInterior`
        - `TerrTile::setDynamicDoodads`
  - `SceneInstance::updatePathDataHotPos`

SceneInstance

- `SceneInstance::drawPathData`
  - `rcPathWorld::drawDbg`









