Switch to oup, Physics to Scene, CtxMenu, TileView, getAsset
- Replace std::shared_ptr/weak_ptr with oup observable pointers
- Move Physics out of Assets into Scene; Assets no longer owns physics
- Add getAsset() to Node via Scene::getAssets() for asset access
- Remove Assets parameter from node constructors; use getAsset instead
- Add Physics struct; Scene takes optional hasPhysics flag
- Scene::tick now steps physics simulation
- Defer physics destruction until after scene teardown
- Add CtxMenu node wrapping Img + VLayout for context menus
- Replace raw Img+VLayout menus in scene editor with CtxMenu
- Add tint uniform to img shader and Img::Ctor
- Make Img non-final to allow subclassing
- Add scissor support to NodeUi via scissorCache
- Add Render::getScissor and getUiViewProj helpers
- WIP: Implement TileView with scrollable grid, scissor clipping, bg image
- WIP: Implement TileViewItem as Img subclass with setItem
- Rename BlackHoleSingularityProjectile to BhsProjectile
- Change setAnim to take const AnimAsset reference instead of pointer
- Add SkMesh::clearAnim
- Change socketedNodes to use NodeId key with observer_ptr
- Change all tick signatures from float to double dt
- Make snapping default to true in scene editor
- Add hp-ico, mana-ico, xy textures to asset preloads