Aim System
Move one direction, aim another. Mouse and gamepad, seamlessly
What: Two-part build. The aim component handles mouse aiming by deprojecting the cursor to the game world and tracing against a dedicated ground channel (not the default visibility channel, which would hit trees and particles and cause aim jitter). Gamepad aim uses the right stick, rotated by the camera angle so 'up' always means 'away from camera' regardless of world orientation. The hard part was making them coexist: when the right stick is released, the game still knows the last mouse position. Without protection, aim would snap to a stale cursor. The component tracks mouse movement per frame and only accepts mouse aim when the cursor has actually moved. Second commit added self-binding. Instead of modifying Lyra's core input code, the aim component hooks into an extension event and binds its own stick input through the data-driven tag system. Standalone plugin. Drop it in, it works. Remove it, nothing breaks.
Why: Top-down combat is aim. If aiming feels wrong, everything built on top of it inherits the problem.
Follow the build: get the updates by email, or see everything about NULLWEAVER.