# Juliet Engine: 3D Platformer Todo List

This TODO list outlines the tasks required to build a simple 3D platformer game in the Juliet Engine.

## [ ] 1. Gameplay Entities & Transform System (3D Integration)
- [ ] Extend `Game::Entity` in [Entity.h](file:///c:/Dev/Classified/Juliet/Game/Entity/Entity.h) to support 3D transforms (`Vector3 Position`, `Vector3 Scale`, and Euler/Quaternion `Rotation`).
- [ ] Add `bool IsGrounded` to the player/entity state.
- [ ] Link entities to renderable visual mesh IDs (`MeshID` in the graphics system).
- [ ] Define helper function to set/update visual transforms based on entity state.

## [ ] 2. Physics & 3D Bounding Box (Collision System)
- [ ] Define `AABB` (Axis-Aligned Bounding Box) struct.
- [ ] Implement constant downward gravity acceleration applied to player velocity.
- [ ] Implement AABB vs AABB collision detection.
- [ ] Implement collision resolution: push-back along the shortest axis of separation, resetting vertical velocity when grounded or hitting ceilings, and allowing sliding along walls.

## [ ] 3. Player Control & Locomotion
- [ ] Calculate camera-relative movement vectors based on player's yaw.
- [ ] Map movement input keys (`W`, `A`, `S`, `D`) to player horizontal velocity with smooth acceleration and friction.
- [ ] Map jump input (`Space`) to apply upward vertical impulse, allowed only when player is grounded.

## [ ] 4. Third-Person Follow Camera System
- [ ] Implement follow camera logic orbiting the player entity.
- [ ] Handle mouse delta to update camera pitch/yaw orbit angles.
- [ ] Implement view matrix computation targeting the player's position.

## [ ] 5. Level Setup & Collision Mapping
- [ ] Implement static platform mesh spawner (e.g. ground floor, raised blocks, gaps).
- [ ] Map platform meshes to static colliders in the physics update list.

## [ ] 6. Game Loop Update Hook
- [ ] Implement an entity update tick `UpdateEntities(float deltaTime)` in [game.cpp](file:///c:/Dev/Classified/Juliet/Game/game.cpp).
- [ ] Integrate input, physics step, collision checks/resolution, and visual sync into the tick.

## [ ] 7. Gameplay Rules & State Management
- [ ] Define `GameState` struct (Score, Player Life/Health, Game Status).
- [ ] Implement fall-out-of-bounds check (e.g. `Z < -10.0f` resets player to spawn/checkpoint).
- [ ] Implement collectibles (coins) with overlap triggers that update score and deactivate themselves.
- [ ] Implement level-end goal flag/portal trigger.

## [ ] 8. UI Overlay (HUD)
- [ ] Render a gameplay overlay using ImGui showing score, time elapsed, status, and control instructions.
