Машина, камера, мотор

This commit is contained in:
ThomasCharester committed 2026-02-06 15:08:14 +03:00
1 parent b54083521f
commit a45223d0e7
48 files changed
+5507 -3735

No files matched your search

@@ -17,6 +17,7 @@ namespace Code.Infrastructure.App
{
[Inject] public SceneLoader.SceneLoader SceneLoader { get; set; }
[Inject] public CameraStateMachine Camera { get; set; }
[Inject] public CameraFactory CameraFactory { get; set; }
[Inject] public IUIService UIService { get; set; }
[Inject] public IAudioFactory AudioFactory { get; set; }
[Inject] public IAudioService AudioService { get; set; }
@@ -9,6 +9,7 @@ using Code.Infrastructure.UI;
using Code.Infrastructure.Volume;
using Reflex.Core;
using Reflex.Enums;
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.Rendering.Universal;
using Resolution = Reflex.Enums.Resolution;
@@ -24,10 +25,13 @@ namespace Code.Infrastructure.App
IVolumesInitializedHandle,
IVolumeLoaded,
IAudioSourcePoolInitializedHandle,
IAudioConfigsLoadedHandle
IAudioConfigsLoadedHandle,
ICinematicMachineHandle
{
public void InstallBindings(ContainerBuilder containerBuilder)
{
InitLoadings();
containerBuilder.RegisterType(typeof(EventBus.EventBus), Lifetime.Singleton, Resolution.Eager);
containerBuilder.RegisterType(typeof(ConfigLocator), new[] { typeof(IConfigLocator) }, Lifetime.Singleton,
Resolution.Eager);
@@ -61,6 +65,10 @@ namespace Code.Infrastructure.App
containerBuilder.RegisterType(typeof(AudioService), new[] { typeof(IAudioService) }, Lifetime.Singleton,
Resolution.Eager);
}
private void InitLoadings()
{
// UIFactory
// Logo
// Scene configs
@@ -70,7 +78,9 @@ namespace Code.Infrastructure.App
// Loading volume
// Audio Factory
// Audio Pool
_initialLoading = new Loading(9, () => EssentialLoadEnded(_thatRightContainer));
// Cinemachine Camera
_initialLoading = new Loading(10, () => EssentialLoadEnded(_thatRightContainer));
_ui2CamLoading = new Loading(2,
() =>
{
@@ -90,7 +100,8 @@ namespace Code.Infrastructure.App
container.Resolve<EventBus.EventBus>().Subscribe(this);
container.Resolve<CameraFactory>().CreateCameraStateMachine(container.Resolve<CameraStateMachine>())
var cameraFactory = container.Resolve<CameraFactory>();
cameraFactory.CreateCameraStateMachine(container.Resolve<CameraStateMachine>())
.Forget();
}
@@ -121,6 +132,8 @@ namespace Code.Infrastructure.App
_ui2CamLoading.DoProgress();
_initialLoading.DoProgress();
_thatRightContainer.Resolve<CameraFactory>().LoadCinemachineCamera(CameraMode.None).Forget();
}
public void UIInitialized()
@@ -179,5 +192,10 @@ namespace Code.Infrastructure.App
{
_initialLoading.DoProgress();
}
public void CinemachineLoaded(CinemachineCamera cinemachineCamera)
{
_initialLoading.DoProgress();
}
}
}
@@ -1,12 +1,7 @@
using System.Threading;
using Code.Example.Race.Racer;
using Code.Example.Race.Track;
using System.Threading;
using Code.Infrastructure.Audio;
using Code.Infrastructure.Generators;
using Code.Infrastructure.SceneLoader;
using Code.Infrastructure.UI;
using Reflex.Core;
using UnityEngine.SceneManagement;
using Code.Infrastructure.Generators;
using Code.Infrastructure.UI;
namespace Code.Infrastructure.App.States
{
@@ -1,5 +1,6 @@
using Code.Example.Race;
using Code.Example.Race.Racer;
using Code.Example.Race.Racer.AI;
using Code.Example.Race.Track;
using Code.Infrastructure.Camera;
using Code.Infrastructure.Camera.CameraStates;
@@ -10,13 +11,19 @@ using Code.Infrastructure.SceneLoader;
using Code.Infrastructure.UI;
using Reflex.Core;
using Reflex.Injectors;
using Unity.Cinemachine;
using UnityEngine.SceneManagement;
namespace Code.Infrastructure.App.States
{
[State(typeof(AppStates), typeof(AppStateMachineContext))]
[StateRaisingEvent]
public partial class GameplayState : IOnGameplaySceneLoadedHandler, IRaceGameInitializedHandle, IRacerFactoryInitializedHandle, IUIPanelLoaded
public partial class GameplayState :
IOnGameplaySceneLoadedHandler,
IRaceGameInitializedHandle,
IRacerFactoryInitializedHandle,
IUIPanelLoaded,
ICinematicMachineHandle
{
public GameplayState(AppStateMachineContext context, EventBus.EventBus eventBus) : base(context, eventBus)
{
@@ -35,10 +42,13 @@ namespace Code.Infrastructure.App.States
// RaceGame
// Factory
// PlayerCounter
_gameplayLoading = new Loading(4, GameplayLoadingCompleted);
// CinemachineCamera
_gameplayLoading = new Loading(5, GameplayLoadingCompleted);
Context.UIService.TryLoadPanel(UIPanelType.PlayerScoreCounter);
Context.SceneLoader.LoadSceneAsync(SceneId.Gameplay, LoadSceneMode.Single).Forget();
Context.InputService.EnableMap(ActionMappings.Gameplay);
Context.CameraFactory.LoadCinemachineCamera(CameraMode.ThirdPerson).Forget();
}
private void GameplayLoadingCompleted()
@@ -46,7 +56,12 @@ namespace Code.Infrastructure.App.States
_raceGame.PlaceRacers();
Context.Camera.SwitchState(CameraMode.ThirdPerson).AllowStateTransition(CameraMode.None);
((ThirdPersonState)Context.Camera.CurrentBaseState).SetFollowTarget(_raceGame.PlacedRacers[0].gameObject.transform, _raceGame.PlacedRacers[0].CarRigidbody);
// ((ThirdPersonState)Context.Camera.CurrentBaseState).SetFollowTarget(_raceGame.PlacedRacers[0].gameObject.transform, _raceGame.PlacedRacers[0].CarRigidbody);
Context.CameraFactory.GetCinematicCamera(CameraMode.ThirdPerson).transform.position = ((PlayerRacer)_raceGame.PlacedRacers[0]).CameraPosition.position;
Context.CameraFactory.GetCinematicCamera(CameraMode.ThirdPerson).transform.rotation = ((PlayerRacer)_raceGame.PlacedRacers[0]).CameraPosition.rotation;
Context.CameraFactory.GetCinematicCamera(CameraMode.ThirdPerson).Follow =
_raceGame.PlacedRacers[0].gameObject.transform;
Context.UIService.ClosePanel(UIPanelType.Loading);
_raceGame.StartRacers();
@@ -56,6 +71,7 @@ namespace Code.Infrastructure.App.States
{
Context.InputService.DisableMap(ActionMappings.Gameplay);
Context.UIService.TryRemovePanel(UIPanelType.PlayerScoreCounter);
Context.CameraFactory.ReleaseCinemachineCamera(CameraMode.ThirdPerson);
EventBus.Unsubscribe(this);
}
@@ -68,12 +84,13 @@ namespace Code.Infrastructure.App.States
private Container UNTILTHEYFIXCONTAINERS;
public void OnGameplaySceneInitialized(Container container)
{
_raceTrackData = container.Resolve<RaceTrackData>();
Context.Camera.Camera.transform.position = _raceTrackData.CameraPosition.transform.position;
Context.Camera.Camera.transform.rotation = _raceTrackData.CameraPosition.transform.rotation;
UNTILTHEYFIXCONTAINERS = container;
_raceTrackData = container.Resolve<RaceTrackData>();
Context.CameraFactory.GetCinematicCamera(CameraMode.None).transform.position = _raceTrackData.CameraPosition.transform.position;
Context.CameraFactory.GetCinematicCamera(CameraMode.None).transform.rotation = _raceTrackData.CameraPosition.transform.rotation;
_gameplayLoading.DoProgress();
container.Resolve<IRacerFactory>();
@@ -98,5 +115,7 @@ namespace Code.Infrastructure.App.States
Context.UIService.OpenPanel(UIPanelType.PlayerScoreCounter);
_gameplayLoading.DoProgress();
}
public void CinemachineLoaded(CinemachineCamera cinemachineCamera) => _gameplayLoading.DoProgress();
}
}