Initial commit
This commit is contained in:
18
Assets/Darkmatter/Code/Domain/DomainAssembly.asmdef
Normal file
18
Assets/Darkmatter/Code/Domain/DomainAssembly.asmdef
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "DomainAssembly",
|
||||
"rootNamespace": "Darkmatter.Domain",
|
||||
"references": [
|
||||
"GUID:cf1df9e1968a94c4686f2fbe5ef907fc",
|
||||
"GUID:75469ad4d38634e559750d17036d5f7c",
|
||||
"GUID:b0214a6008ed146ff8f122a6a9c2f6cc"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
7
Assets/Darkmatter/Code/Domain/DomainAssembly.asmdef.meta
Normal file
7
Assets/Darkmatter/Code/Domain/DomainAssembly.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23f9a018fbd2e1242a0525718cc761d6
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Darkmatter/Code/Domain/Player.meta
Normal file
8
Assets/Darkmatter/Code/Domain/Player.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20d2b82ece3161e438ff1f7d82fb92af
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
53
Assets/Darkmatter/Code/Domain/Player/AirboneState.cs
Normal file
53
Assets/Darkmatter/Code/Domain/Player/AirboneState.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6149b00abd3711242a957f9998722255
|
||||
68
Assets/Darkmatter/Code/Domain/Player/LocomotionState.cs
Normal file
68
Assets/Darkmatter/Code/Domain/Player/LocomotionState.cs
Normal 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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 961ad68a3149563478180fcf9d2465b6
|
||||
25
Assets/Darkmatter/Code/Domain/Player/PlayerController.cs
Normal file
25
Assets/Darkmatter/Code/Domain/Player/PlayerController.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4b238eafe4c049642ae43f347d61a607
|
||||
51
Assets/Darkmatter/Code/Domain/Player/PlayerStateMachine.cs
Normal file
51
Assets/Darkmatter/Code/Domain/Player/PlayerStateMachine.cs
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad95801e56eb04840a1f2e4b2101b236
|
||||
8
Assets/Darkmatter/Code/Domain/StateMachine.meta
Normal file
8
Assets/Darkmatter/Code/Domain/StateMachine.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c700d565d4a7ff43ab86d5404cd8c88
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
22
Assets/Darkmatter/Code/Domain/StateMachine/State.cs
Normal file
22
Assets/Darkmatter/Code/Domain/StateMachine/State.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using Darkmatter.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Darkmatter.Domain
|
||||
{
|
||||
public abstract class State<T> : IState
|
||||
{
|
||||
protected readonly T runner;
|
||||
protected State(T runner)
|
||||
{
|
||||
this.runner = runner;
|
||||
}
|
||||
|
||||
public virtual void Enter() { }
|
||||
|
||||
public virtual void Exit() { }
|
||||
|
||||
public virtual void Update() { }
|
||||
|
||||
public virtual void LateUpdate() { }
|
||||
}
|
||||
}
|
||||
2
Assets/Darkmatter/Code/Domain/StateMachine/State.cs.meta
Normal file
2
Assets/Darkmatter/Code/Domain/StateMachine/State.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e1f935f13391ea4b8a18a2c680cdcf9
|
||||
27
Assets/Darkmatter/Code/Domain/StateMachine/StateMachine.cs
Normal file
27
Assets/Darkmatter/Code/Domain/StateMachine/StateMachine.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Darkmatter.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Darkmatter.Domain
|
||||
{
|
||||
public abstract class StateMachine
|
||||
{
|
||||
public IState CurrentState { get; private set; }
|
||||
public void ChangeState(IState state)
|
||||
{
|
||||
CurrentState?.Exit();
|
||||
CurrentState = state;
|
||||
CurrentState?.Enter();
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
CurrentState.Update();
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
CurrentState.LateUpdate();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cda261417aa4df34eb86c2271ab5f6d5
|
||||
Reference in New Issue
Block a user