diff --git a/planning/UTILITY_PLANNING.md b/planning/UTILITY_PLANNING.md index 7407896..44fd1fa 100644 --- a/planning/UTILITY_PLANNING.md +++ b/planning/UTILITY_PLANNING.md @@ -138,7 +138,7 @@ public class PooledEvent where T : class, new() #### 1.3 - EinSoftworks.StateManagement | | | | |--------------|----|---------------------------------------------| -| Status | 🔴 | Incomplete | +| Status | 🟢 | Complete | | Priority | 🔴 | Critical | | Dependencies | ⚫ | EinSoftworks.Utilities, EinSoftworks.Events | @@ -202,7 +202,7 @@ These libraries provide essential 3D game functionality and build upon the found #### 2.1 - EinSoftworks.Camera | | | | |--------------|----|-----------------------------------------------------------------------| -| Status | 🔴 | Incomplete | +| Status | 🟢 | Complete | | Priority | 🟡 | High | | Dependencies | ⚫ | EinSoftworks.Input, EinSoftworks.Events, EinSoftworks.StateManagement | @@ -268,62 +268,6 @@ public class OrbitCamera : CameraController - Third-person camera that follows a moving object - Orbit camera for examining 3D models -#### 2.2 - EinSoftworks.Physics -| | | | -|--------------|----|---------------------------------------------| -| Status | 🔴 | Incomplete | -| Priority | 🟡 | High | -| Dependencies | ⚫ | EinSoftworks.Utilities, EinSoftworks.Events | - -**Why Build Fifth:** -- Nearly all 3D games need physics utilities -- Independent of complex game systems -- Provides foundation for character controllers and interaction systems -- Can be validated independently - -**Core Features:** -```csharp -// Raycast utilities -public static class PhysicsUtils -{ - public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance, - uint collisionMask = uint.MaxValue); - public static RaycastHit RaycastWithInfo(Vector3 origin, Vector3 direction, float maxDistance); - public static RaycastHit[] RaycastAll(Vector3 origin, Vector3 direction, float maxDistance); - - // Shape casting - public static bool SphereCast(Vector3 origin, float radius, Vector3 direction, float maxDistance); - public static bool BoxCast(Vector3 origin, Vector3 size, Vector3 direction, float maxDistance); - - // Overlap detection - public static Node3D[] OverlapSphere(Vector3 center, float radius, uint collisionMask); - public static Node3D[] OverlapBox(Vector3 center, Vector3 size, uint collisionMask); -} - -// Physics materials management -public class PhysicsMaterialManager : Node -{ - public void RegisterMaterial(string name, PhysicsMaterial material); - public PhysicsMaterial GetMaterial(string name); - public void ApplyMaterial(RigidBody3D body, string materialName); -} - -// Trigger volume system -public partial class TriggerVolume : Area3D -{ - [Signal] public delegate void BodyEnteredEventHandler(Node3D body); - [Signal] public delegate void BodyExitedEventHandler(Node3D body); - - public bool IsBodyInside(Node3D body); - public Node3D[] GetBodiesInside(); -} -``` - -**Validation Game Ideas:** -- Character that detects ground beneath them -- Interaction system using raycasts -- Trigger volumes that activate when player enters - ### Phase 3: Character and Interaction Systems (Medium Priority) These systems focus on character control and world interaction, building upon the previously established libraries.