Initial commit

This commit is contained in:
Mausham
2025-12-26 17:56:05 -08:00
commit 7cb0a26dae
453 changed files with 53483 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
using Darkmatter.Core;
using UnityEngine;
namespace Darkmatter.Domain
{
public class AirboneState : State<PlayerStateMachine>
{
public AirboneState(PlayerStateMachine runner) : base(runner) { }
private IInputReader inputReader => runner.inputReader;
private PlayerConfigSO playerConfig => runner.playerConfig;
public override void Enter()
{
Debug.Log("Entering Player AirboneState ");
}
public override void Update()
{
HandlePlayerMovement();
CheckForStateBreak();
}
public override void LateUpdate()
{
HandlePlayerRotation();
}
public override void Exit()
{
Debug.Log("Exiting Player AriboneState");
}
//Airbone Functions
private void HandlePlayerMovement()
{
runner.Move(inputReader.moveInput, playerConfig.moveSpeed);
}
private void HandlePlayerRotation()
{
runner.RotateCamera(inputReader.lookInput);
}
private void CheckForStateBreak()
{
if (runner.playerController.isGrounded)
{
runner.ChangeState(new LocomotionState(runner));
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6149b00abd3711242a957f9998722255

View File

@@ -0,0 +1,68 @@
using Darkmatter.Core;
using System;
using UnityEngine;
namespace Darkmatter.Domain
{
public class LocomotionState : State<PlayerStateMachine>
{
public LocomotionState(PlayerStateMachine runner) : base(runner) { }
private IInputReader inputReader => runner.inputReader;
private PlayerConfigSO playerConfig => runner.playerConfig;
private IPlayerAnim playerAnim => runner.playerAnim;
public override void Enter()
{
Debug.Log("Starting player Locomotion");
inputReader.OnJumpPerformed += HandlePlayerJump;
}
public override void Update()
{
HandlePlayerMovement();
CheckForStateBreak();
}
public override void LateUpdate()
{
HandlePlayerRotation();
}
public override void Exit()
{
Debug.Log("Exiting Player Locomotion State");
inputReader.OnJumpPerformed -= HandlePlayerJump;
}
//Locomotion Functions
private void CheckForStateBreak()
{
if (!runner.playerController.isGrounded)
{
runner.ChangeState(new AirboneState(runner));
}
}
private void HandlePlayerRotation()
{
runner.RotateCamera(inputReader.lookInput);
}
private void HandlePlayerMovement()
{
runner.Move(inputReader.moveInput, playerConfig.moveSpeed);
}
private void HandlePlayerJump()
{
runner.playerController.Jump(playerConfig.jumpForce);
playerAnim.PlayJumpAnim();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 961ad68a3149563478180fcf9d2465b6

View File

@@ -0,0 +1,25 @@
using VContainer;
using VContainer.Unity;
namespace Darkmatter.Domain
{
public class PlayerController : IStartable, ITickable, ILateTickable
{
[Inject] private PlayerStateMachine psm;
public void LateTick()
{
psm.LateUpdate();
}
public void Start()
{
psm.ChangeState(new LocomotionState(psm));
}
public void Tick()
{
psm.Update();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4b238eafe4c049642ae43f347d61a607

View File

@@ -0,0 +1,51 @@
using Darkmatter.Core;
using UnityEngine;
using VContainer;
namespace Darkmatter.Domain
{
public class PlayerStateMachine : StateMachine
{
[Inject] public readonly IPlayerPawn playerController;
[Inject] public readonly IInputReader inputReader;
[Inject] public readonly IPlayerAnim playerAnim;
[Inject] public readonly PlayerConfigSO playerConfig;
[Inject] public readonly CameraConfigSO cameraConfig;
private Vector3 moveDir;
private float Yaw;
private float pitch;
public void Move(Vector2 moveInputDir, float moveSpeed)
{
//player movement with reference to camera
Vector3 cameraForward = playerController.mainCamera.transform.forward;
Vector3 cameraRight = playerController.mainCamera.transform.right;
cameraForward.y = 0f;
cameraRight.y = 0f;
cameraForward.Normalize();
cameraRight.Normalize();
moveDir = cameraRight * moveInputDir.x + cameraForward * moveInputDir.y;
playerController.Move(moveDir * moveSpeed);
playerAnim.PlayMovementAnim(moveInputDir);
}
public void RotateCamera(Vector2 lookInput)
{
//camera rotation logic
if (lookInput.sqrMagnitude > 0.01f)
{
Yaw += lookInput.x * cameraConfig.lookSensitivity * Time.deltaTime;
pitch -= lookInput.y * cameraConfig.lookSensitivity * Time.deltaTime;
}
pitch = Mathf.Clamp(pitch, cameraConfig.bottomClampAngle, cameraConfig.topClampAngle);
playerController.SetCameraRotation(pitch, Yaw);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ad95801e56eb04840a1f2e4b2101b236