Compare commits
12
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
97c60c0925 | ||
|
|
bd495a644f | ||
|
|
e654a0daf4 | ||
|
|
cfe5b39cc9 | ||
|
|
c14880457d | ||
|
|
344470978d | ||
|
|
dab970737a | ||
|
|
afdd523682 | ||
|
|
575e66425a | ||
|
|
c470f63409 | ||
|
|
7024e1daf0 | ||
|
|
020934e07f |
No files matched your search
@@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_DefaultGroup: d447fc60305c17a17bf20948ab295a45
|
||||
m_currentHash:
|
||||
serializedVersion: 2
|
||||
Hash: db97f0adbdaa5d76ea9341571ea44391
|
||||
Hash: adba03da8c5086ecbcf5b8db72996dd1
|
||||
m_OptimizeCatalogSize: 0
|
||||
m_BuildRemoteCatalog: 0
|
||||
m_CatalogRequestsTimeout: 0
|
||||
|
||||
+15
-10
@@ -30,11 +30,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 1d4767c722c05b5d6b96bb226d378c65
|
||||
m_Address: Assets/Resources_moved/Prefabs/Player/ArmsMesh.prefab
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 1d7110a045075b22fa27d62bd5f2784e
|
||||
m_Address: 357_shot1
|
||||
m_ReadOnly: 0
|
||||
@@ -65,6 +60,11 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 2ed2d93a9f39d4edba511cb7396c7bb6
|
||||
m_Address: Prefabs/Enemies/Cockroach
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 2f6134357dc2a5641a846a7478ce4c2c
|
||||
m_Address: bravo!
|
||||
m_ReadOnly: 0
|
||||
@@ -95,11 +95,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 751890caa1647ec6689f24933fbcb770
|
||||
m_Address: "Prefabs/Furniture/\u0442\u0440\u0443\u0431\u0430"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 7c5caf3ceee44f71588860c5c1fbdbe0
|
||||
m_Address: Audio/Dispatcher/take_damage3
|
||||
m_ReadOnly: 0
|
||||
@@ -150,6 +145,11 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: b33855c694de89386a25c56cbe463a0e
|
||||
m_Address: Prefabs/Enemies/DrunkenGrandpa
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: c566fc932edefbbee9e53271eac3c560
|
||||
m_Address: MainMenu
|
||||
m_ReadOnly: 0
|
||||
@@ -170,6 +170,11 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f3d7dc64b34919ad7b50a3dd307a935b
|
||||
m_Address: Prefabs/Enemies/Fog
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f4b6fa54ecac6cc418f98824491aa17a
|
||||
m_Address: Audio/Music/SANABI - JUSTICE Is Watching You
|
||||
m_ReadOnly: 0
|
||||
|
||||
@@ -1,23 +1,18 @@
|
||||
using System.Globalization;
|
||||
using System.Reflection.Emit;
|
||||
using System.Collections.Generic;
|
||||
using Code.App.StateMachine;
|
||||
using Code.Audio;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Camera.CameraStates;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using Code.Gameplay.Enemies;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Code.StateMachine;
|
||||
using Code.UI;
|
||||
using Code.UI.Panels;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Core;
|
||||
using Reflex.Extensions;
|
||||
using Reflex.Injectors;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
@@ -25,15 +20,16 @@ using UnityEngine.SceneManagement;
|
||||
namespace Code.App.AppStates
|
||||
{
|
||||
public class GameplayState : BaseState<AppStateMachineContext>
|
||||
{
|
||||
{
|
||||
// DEBUG
|
||||
private Transform _testSFXTransform;
|
||||
// DEBUG
|
||||
|
||||
private PlayerHealth _playerHealth;
|
||||
private PlayerMoney _playerMoney;
|
||||
|
||||
private IScoreService _scoreService;
|
||||
private IOrderService _orderService;
|
||||
|
||||
private CharacterProvider _playerCharacter;
|
||||
private List<BaseEnemy> _enemies;
|
||||
|
||||
public GameplayState(AppStateMachineContext context) : base(context)
|
||||
{
|
||||
@@ -44,109 +40,101 @@ namespace Code.App.AppStates
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
|
||||
_playerMoney = Context.PlayerFactory.CreatePlayerMoney();
|
||||
_playerHealth = Context.PlayerFactory.CreatePlayerHealth();
|
||||
|
||||
_playerHealth.OnDeath += EndGame;
|
||||
|
||||
//_playerHealth = Context.PlayerProvider.Health;
|
||||
//_playerHealth.OnDeath += EndGame;
|
||||
|
||||
Context.AudioService.TransitToSnapshot(AudioSnapshotState.Peaceful);
|
||||
|
||||
Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveOrderDEBUG);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, RecieveOrderDEBUG);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, DeliverOrderDEBUG);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, RoomPassedDEBUG);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, Tube);
|
||||
// Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveMoney);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
|
||||
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
WaitForSceneToLoad();
|
||||
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
}
|
||||
|
||||
private async UniTask WaitForPlayerCharacterLoad() => _playerCharacter = await Context.PlayerFactory.CreatePlayer();
|
||||
|
||||
private async UniTask WaitForEnemyLoad(EnemyType type) =>
|
||||
_enemies.Add(await Context.EnemyFactory.CreateEnemy(type));
|
||||
|
||||
private async UniTaskVoid WaitForSceneToLoad()
|
||||
{
|
||||
await Context.SceneLoaderService.LoadSceneAsyncAwaitable((int)SceneIds.Gameplay);
|
||||
|
||||
{
|
||||
await UniTask.WhenAll(
|
||||
Context.SceneLoaderService.LoadSceneAsyncAwaitable((int)SceneIds.Gameplay),
|
||||
Context.UIService.AsyncSwitchPanelTo(UIPanel.Gameplay),
|
||||
// TODO
|
||||
Context.AudioFactory.WarmGameplayMusic(),
|
||||
Context.AudioFactory.WarmSFX(),
|
||||
Context.AudioFactory.WarmDispatcher(),
|
||||
// TODO
|
||||
WaitForPlayerArmsToInitialize(),
|
||||
WaitForPlayerCharacterLoad()
|
||||
);
|
||||
MusicInitialize();
|
||||
);
|
||||
|
||||
Container sceneContainer = SceneManager.GetActiveScene().GetSceneContainer();
|
||||
_playerHealth = Context.PlayerProvider.Health;
|
||||
_playerHealth.OnDeath += EndGame;
|
||||
|
||||
GameplaySceneEnvironment sceneEnvironment = SceneEnvironmentVariables(sceneContainer);
|
||||
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Peaceful);
|
||||
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Action);
|
||||
|
||||
var sceneEnvironment = ((GameplaySceneEnvironment)SceneManager.GetActiveScene()
|
||||
.GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
|
||||
PlayerInitialize(sceneEnvironment);
|
||||
_testSFXTransform = sceneEnvironment.debugSfxTarget;
|
||||
|
||||
UIInitialize();
|
||||
_playerCharacter.Teleport(sceneEnvironment.playerSpawnPoint.position, sceneEnvironment.playerSpawnPoint.rotation);
|
||||
|
||||
CameraInitialize();
|
||||
|
||||
InputServiceInitialize();
|
||||
|
||||
GameplayServicesInitialize(sceneContainer);
|
||||
((GameplayPanel)Context.UIService.CurrentPanel).Initialize(_playerMoney, _playerHealth);
|
||||
|
||||
_tickEnabled = true;
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.FirstPerson);
|
||||
|
||||
((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(_playerCharacter.GetFollowTransform());
|
||||
|
||||
Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
}
|
||||
|
||||
private async UniTask WaitForPlayerArmsToInitialize() => _armsMesh = await Context.PlayerFactory.CreateArms(Context.CameraStateMachine.Camera.transform);
|
||||
|
||||
private void OrderGiven(float time)
|
||||
{
|
||||
|
||||
}
|
||||
private void OrderRecieved(float time)
|
||||
private void OnCharacterSpawn(CharacterProvider characterProvider)
|
||||
{
|
||||
Context.AudioService.PlayDispatcher((DispatcherSounds)Random.Range((int)DispatcherSounds.Recieve1,(int)DispatcherSounds.Recieve2));
|
||||
((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(_playerCharacter.GetFollowTransform());
|
||||
}
|
||||
private void OrderDelivered(int score, float time)
|
||||
{
|
||||
if(time < 0f) Context.AudioService.PlayDispatcher((DispatcherSounds)Random.Range((int)DispatcherSounds.Late1,(int)DispatcherSounds.Late2));
|
||||
_playerMoney.GiveMoney(score);
|
||||
private void PlayDebugSFX(InputAction.CallbackContext context)
|
||||
{
|
||||
Context.AudioService.PlaySFX(SFXSounds.Crowbar, _testSFXTransform.position);
|
||||
}
|
||||
private void PlayDebugDispatcher(InputAction.CallbackContext context)
|
||||
{
|
||||
Context.AudioService.PlayDispatcher(DispatcherSounds.AhFreeman);
|
||||
}
|
||||
private void GiveHealth(InputAction.CallbackContext context)
|
||||
{
|
||||
_playerHealth.GetDamage(-1);
|
||||
}
|
||||
|
||||
private void LooseHealth(InputAction.CallbackContext context)
|
||||
{
|
||||
_playerHealth.GetDamage(1);
|
||||
}
|
||||
|
||||
private void GiveMoney(InputAction.CallbackContext context)
|
||||
{
|
||||
_playerMoney.GiveMoney(100);
|
||||
((GameplayPanel)(Context.UIService.CurrentPanel)).SummonDispatcher();
|
||||
}
|
||||
|
||||
private void LooseMoney(InputAction.CallbackContext context)
|
||||
{
|
||||
_playerMoney.LooseMoney(100);
|
||||
((GameplayPanel)(Context.UIService.CurrentPanel)).CloseDispatcher();
|
||||
}
|
||||
// DEBUG
|
||||
private void GiveOrderDEBUG(InputAction.CallbackContext context)
|
||||
{
|
||||
_orderService.OrderGive();
|
||||
}
|
||||
|
||||
private void RecieveOrderDEBUG(InputAction.CallbackContext context)
|
||||
{
|
||||
_orderService.OrderRecieved();
|
||||
}
|
||||
private void DeliverOrderDEBUG(InputAction.CallbackContext context)
|
||||
{
|
||||
_orderService.OrderDelivered();
|
||||
}
|
||||
private void RoomPassedDEBUG(InputAction.CallbackContext context)
|
||||
{
|
||||
_orderService.RoomPassed();
|
||||
}
|
||||
private OrderDispenser _debugTube;
|
||||
|
||||
private void Tube(InputAction.CallbackContext context)
|
||||
{
|
||||
_debugTube.ThrowOrder();
|
||||
}
|
||||
// DEBUG
|
||||
private bool _tickEnabled;
|
||||
public override void Tick()
|
||||
{
|
||||
if (!_tickEnabled) return;
|
||||
|
||||
// TODO ГРЯЗь
|
||||
_gameplayPanel.Timer.text = ((int)_orderService.DecreaseTimer(Time.deltaTime)).ToString(CultureInfo.CurrentCulture);
|
||||
}
|
||||
|
||||
private void EndGame()
|
||||
@@ -160,71 +148,21 @@ namespace Code.App.AppStates
|
||||
_playerHealth = null;
|
||||
_playerMoney = null;
|
||||
|
||||
_tickEnabled = false;
|
||||
|
||||
Context.PlayerFactory.ReleasePlayer(_playerCharacter);
|
||||
_playerCharacter = null;
|
||||
Context.PlayerFactory.ReleaseArms(_armsMesh);
|
||||
_armsMesh = null;
|
||||
|
||||
Context.InputService.DisableMap(ActionMappings.Gameplay);
|
||||
Context.AudioService.GladlyAskToStopMusic(MusicType.Action, callback: Context.AudioFactory.ReleaseActionMusic);
|
||||
Context.AudioService.GladlyAskToStopMusic(MusicType.Peaceful, callback: Context.AudioFactory.ReleasePeacefulMusic);
|
||||
|
||||
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveOrderDEBUG);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, RecieveOrderDEBUG);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, DeliverOrderDEBUG);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, RoomPassedDEBUG);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, Tube);
|
||||
// Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
|
||||
|
||||
base.ExitState();
|
||||
}
|
||||
|
||||
private void InputServiceInitialize()
|
||||
{
|
||||
Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
}
|
||||
private void CameraInitialize()
|
||||
{
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.FirstPerson);
|
||||
((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(_playerCharacter.GetFollowTransform());
|
||||
}
|
||||
|
||||
private GameplayPanel _gameplayPanel;
|
||||
private ArmsMeshProvider _armsMesh;
|
||||
|
||||
private void UIInitialize()
|
||||
{
|
||||
_gameplayPanel = (GameplayPanel)Context.UIService.CurrentPanel;
|
||||
_gameplayPanel.Initialize(_playerMoney, _playerHealth);
|
||||
}
|
||||
private void MusicInitialize()
|
||||
{
|
||||
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Peaceful);
|
||||
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Action);
|
||||
}
|
||||
private void PlayerInitialize(GameplaySceneEnvironment sceneEnvironment)
|
||||
{
|
||||
_playerCharacter.Teleport(sceneEnvironment.playerSpawnPoint.position, sceneEnvironment.playerSpawnPoint.rotation);
|
||||
_playerCharacter.PlayerAnimator.SetAnimator(_armsMesh.ArmsAnimator);
|
||||
}
|
||||
private void GameplayServicesInitialize(Container sceneContainer)
|
||||
{
|
||||
_scoreService = sceneContainer.Resolve<IScoreService>();
|
||||
_orderService = sceneContainer.Resolve<IOrderService>();
|
||||
|
||||
_orderService.OnOrderGiven += OrderGiven;
|
||||
_orderService.OnOrderRecieved += OrderRecieved;
|
||||
_orderService.OnOrderDelivered += OrderDelivered;
|
||||
}
|
||||
private GameplaySceneEnvironment SceneEnvironmentVariables(Container sceneContainer)
|
||||
{
|
||||
var sceneEnvironment = (GameplaySceneEnvironment)sceneContainer.Resolve<CurrentSceneEnvironment>();
|
||||
|
||||
_debugTube = sceneEnvironment.debugTube;
|
||||
return sceneEnvironment;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ using Code.Audio;
|
||||
using Code.Configs;
|
||||
using Code.Constants;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using Code.Gameplay.Enemies;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
@@ -28,6 +28,8 @@ namespace Code.App
|
||||
|
||||
containerBuilder.AddSingleton(typeof(InputService), typeof(IInputService));
|
||||
containerBuilder.AddSingleton(typeof(PlayerFactory), typeof(IPlayerFactory));
|
||||
containerBuilder.AddSingleton(typeof(EnemyFactory), typeof(IEnemyFactory));
|
||||
containerBuilder.AddSingleton(typeof(PlayerProvider), typeof(IPlayerProvider));
|
||||
|
||||
InitializeCamera(containerBuilder, staticDataService);
|
||||
containerBuilder.AddSingleton(typeof(UIFactory), typeof(IUIFactory));
|
||||
@@ -78,14 +80,15 @@ namespace Code.App
|
||||
|
||||
containerBuilder.AddSingleton(staticDataService.UIConfig, typeof(UIConfig));
|
||||
|
||||
containerBuilder.AddSingleton(staticDataService.DrunkenGrandpaConfig, typeof(DrunkenGrandpaConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.CockroachConfig, typeof(CockroachConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.FogConfig, typeof(FogConfig));
|
||||
|
||||
containerBuilder.AddSingleton(staticDataService.AudioMixerConfig, typeof(AudioMixerConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.SoundtrackListConfig, typeof(SoundtrackListConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.SFXListConfig, typeof(SFXListConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.DispatcherSoundListConfig, typeof(DispatcherSoundListConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.EnemiesSoundListConfig, typeof(EnemiesSoundListConfig));
|
||||
|
||||
containerBuilder.AddSingleton(staticDataService.OrderServiceConfig, typeof(OrderServiceConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.OrderBoxConfig, typeof(OrderBoxConfig));
|
||||
}
|
||||
|
||||
private AppStateMachine _appStateMachine;
|
||||
@@ -102,6 +105,7 @@ namespace Code.App
|
||||
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
BootstrapFinish(container);
|
||||
|
||||
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
}
|
||||
private async UniTaskVoid BootstrapFinish(Container container)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Reflex.Core;
|
||||
@@ -13,8 +12,6 @@ namespace Code.App.SceneInstallers
|
||||
public void InstallBindings(ContainerBuilder containerBuilder)
|
||||
{
|
||||
containerBuilder.AddScoped(typeof(GameplaySceneEnvironment), typeof(CurrentSceneEnvironment));
|
||||
containerBuilder.AddScoped(typeof(ScoreService), typeof(IScoreService));
|
||||
containerBuilder.AddScoped(typeof(OrderService), typeof(IOrderService));
|
||||
|
||||
containerBuilder.OnContainerBuilt += Initialize;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Code.Audio;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Enemies;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
@@ -16,7 +17,9 @@ namespace Code.App.StateMachine
|
||||
[Inject] public CameraStateMachine CameraStateMachine { get; private set; }
|
||||
[Inject] public IUIService UIService { get; private set; }
|
||||
[Inject] public IPlayerFactory PlayerFactory { get; private set; }
|
||||
[Inject] public IPlayerProvider PlayerProvider { get; private set; }
|
||||
[Inject] public IAudioFactory AudioFactory { get; private set; }
|
||||
[Inject] public IAudioService AudioService { get; private set; }
|
||||
[Inject] public IEnemyFactory EnemyFactory { get; private set; }
|
||||
}
|
||||
}
|
||||
@@ -18,17 +18,6 @@ namespace Code.Audio
|
||||
{
|
||||
Absolutely,
|
||||
AbsolutelyNot,
|
||||
AhFreeman,
|
||||
Recieve1,
|
||||
Recieve2,
|
||||
TakeDamage1,
|
||||
TakeDamage2,
|
||||
TakeDamage3,
|
||||
TakeDamage4,
|
||||
Late1,
|
||||
Late2,
|
||||
Late3,
|
||||
Late4,
|
||||
Late5
|
||||
AhFreeman
|
||||
}
|
||||
}
|
||||
@@ -62,8 +62,8 @@ namespace Code.Audio
|
||||
|
||||
public async UniTask WarmGameplayMusic( )
|
||||
{
|
||||
_actionMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_actionSoundtrack, OnActionTrackLoaded, Addressables.MergeMode.Union);
|
||||
_peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded, Addressables.MergeMode.Union);
|
||||
_actionMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_actionSoundtrack, OnActionTrackLoaded, Addressables.MergeMode.None);
|
||||
_peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await UniTask.WhenAll(_actionMusicHandle.ToUniTask(), _peacefulMusicHandle.ToUniTask());
|
||||
}
|
||||
@@ -79,7 +79,7 @@ namespace Code.Audio
|
||||
}
|
||||
public async UniTask WarmMenuMusic( )
|
||||
{
|
||||
_menuMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_menuSoundtrack, OnMenuTrackLoaded, Addressables.MergeMode.Union);
|
||||
_menuMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_menuSoundtrack, OnMenuTrackLoaded, Addressables.MergeMode.None);
|
||||
// foreach (var assetReference in _menuSoundtrack) MenuMusic.Add(await assetReference.LoadAssetAsync<AudioClip>());
|
||||
await _menuMusicHandle.ToUniTask();
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace Code.Audio
|
||||
}
|
||||
public async UniTask WarmSFX( )
|
||||
{
|
||||
_SFXHandle = Addressables.LoadAssetsAsync<AudioClip>(_SFX, OnSFXLoaded, Addressables.MergeMode.Union);
|
||||
_SFXHandle = Addressables.LoadAssetsAsync<AudioClip>(_SFX, OnSFXLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _SFXHandle.ToUniTask();
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace Code.Audio
|
||||
}
|
||||
public async UniTask WarmEnemies( )
|
||||
{
|
||||
_enemiesHandle = Addressables.LoadAssetsAsync<AudioClip>(_enemies, OnEnemiesLoaded, Addressables.MergeMode.Union);
|
||||
_enemiesHandle = Addressables.LoadAssetsAsync<AudioClip>(_enemies, OnEnemiesLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _enemiesHandle.ToUniTask();
|
||||
|
||||
@@ -118,7 +118,7 @@ namespace Code.Audio
|
||||
|
||||
public async UniTask WarmDispatcher( )
|
||||
{
|
||||
_dispatcherHandle = Addressables.LoadAssetsAsync<AudioClip>(_dispatcher, OnDispatcherLoaded, Addressables.MergeMode.Union);
|
||||
_dispatcherHandle = Addressables.LoadAssetsAsync<AudioClip>(_dispatcher, OnDispatcherLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _dispatcherHandle.ToUniTask();
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
|
||||
namespace Code.Configs
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Config/Enemies/Cockroach", fileName = "CockroachConfig")]
|
||||
public class CockroachConfig : ScriptableObject
|
||||
{
|
||||
public AssetReference cockroachPrefab;
|
||||
|
||||
public int damage = 2;
|
||||
public float attackCooldown = 1.5f;
|
||||
|
||||
public float detectionRange = 20f;
|
||||
public float attackRange = 1.3f;
|
||||
|
||||
public float speed = 6f;
|
||||
|
||||
public bool isStunnable;
|
||||
public float stunDuration;
|
||||
|
||||
public bool usesIdleMovement = true;
|
||||
public float idleWanderRadius = 3f;
|
||||
public float idleMoveDurationMin = 0.3f;
|
||||
public float idleMoveDurationMax = 1f;
|
||||
public float idlePauseDurationMin = 0.1f;
|
||||
public float idlePauseDurationMax = 0.8f;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7bc162d3127949aa950d0738beee99a4
|
||||
timeCreated: 1763571220
|
||||
@@ -0,0 +1,29 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
|
||||
namespace Code.Configs
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Config/Enemies/DrunkenGrandpa", fileName = "DrunkenGrandpaConfig")]
|
||||
public class DrunkenGrandpaConfig : ScriptableObject
|
||||
{
|
||||
public AssetReference drunkenGrandpaPrefab;
|
||||
|
||||
public int damage = 2;
|
||||
public float attackCooldown = 5f;
|
||||
|
||||
public float detectionRange = 10f;
|
||||
public float attackRange = 1.5f;
|
||||
|
||||
public float speed = 3f;
|
||||
|
||||
public bool isStunnable = true;
|
||||
public float stunDuration = 3f;
|
||||
|
||||
public bool usesIdleMovement = true;
|
||||
public float idleWanderRadius = 5f;
|
||||
public float idleMoveDurationMin = 1f;
|
||||
public float idleMoveDurationMax = 5f;
|
||||
public float idlePauseDurationMin = 3f;
|
||||
public float idlePauseDurationMax = 5f;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4d157e8891074b90957a7434cff0ae71
|
||||
timeCreated: 1763569096
|
||||
@@ -0,0 +1,29 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
|
||||
namespace Code.Configs
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Config/Enemies/Fog", fileName = "FogConfig")]
|
||||
public class FogConfig : ScriptableObject
|
||||
{
|
||||
public AssetReference fogPrefab;
|
||||
|
||||
public int damage = int.MaxValue;
|
||||
public float attackCooldown;
|
||||
|
||||
public float detectionRange;
|
||||
public float attackRange = 5f;
|
||||
|
||||
public float speed = 1.5f;
|
||||
|
||||
public bool isStunnable;
|
||||
public float stunDuration;
|
||||
|
||||
public bool usesIdleMovement;
|
||||
public float idleWanderRadius;
|
||||
public float idleMoveDurationMin;
|
||||
public float idleMoveDurationMax;
|
||||
public float idlePauseDurationMin;
|
||||
public float idlePauseDurationMax;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa4dd2a5cce24902a2918488b5751f2f
|
||||
timeCreated: 1763581410
|
||||
@@ -1,12 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Configs
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Config/Gameplay/OrderBox", fileName = "OrderBoxConfig")]
|
||||
public class OrderBoxConfig : ScriptableObject
|
||||
{
|
||||
public float activationTime;
|
||||
public AnimationCurve floatingCurve;
|
||||
public float curveLength;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6af4f53d425a41c78ef889fd7e5c3197
|
||||
timeCreated: 1763735968
|
||||
@@ -1,11 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Configs
|
||||
{
|
||||
[CreateAssetMenu(fileName = "OrderServiceConfig", menuName = "Config/Gameplay/OrderServiceConfig")]
|
||||
public class OrderServiceConfig : ScriptableObject
|
||||
{
|
||||
public Vector2 timeBounds;
|
||||
public float koefRooms, koefOvertime;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ee2550c3e4874575ac3aecadfcc42475
|
||||
timeCreated: 1763559999
|
||||
@@ -9,6 +9,5 @@ namespace Code.Configs
|
||||
public int maxHealth;
|
||||
|
||||
public AssetReference characterPrefab;
|
||||
public AssetReference armsMeshPrefab;
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ namespace Code.Gameplay.Camera
|
||||
CurrentBaseState = States[CameraMode.UltraStatic];
|
||||
}
|
||||
|
||||
public UnityEngine.Camera Camera => StateMachineContext.Camera;
|
||||
|
||||
protected override bool CheckTransitionAllowed(CameraMode nextState) => true;
|
||||
|
||||
|
||||
+25
@@ -33,6 +33,11 @@ namespace Code.Gameplay.Character.Controller
|
||||
private GroundMovementSystem _groundMovement;
|
||||
private AirMovementSystem _airMovement;
|
||||
|
||||
public bool IsSliding => _slideMechanic.IsSliding;
|
||||
|
||||
private float abilityBlockTimer;
|
||||
private bool isAbilitiesBlocked;
|
||||
|
||||
public void SetPosition(Vector3 position) => motor.SetPosition(position);
|
||||
public void SetRotation(Quaternion rotation) => motor.SetRotation(rotation);
|
||||
|
||||
@@ -135,6 +140,20 @@ namespace Code.Gameplay.Character.Controller
|
||||
|
||||
// Сохраняем текущий режим камеры
|
||||
_currentCameraMode = inputs.CameraMode;
|
||||
|
||||
if (isAbilitiesBlocked)
|
||||
{
|
||||
abilityBlockTimer -= Time.deltaTime;
|
||||
if (abilityBlockTimer <= 0)
|
||||
{
|
||||
isAbilitiesBlocked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
inputs.SprintPressed = false;
|
||||
inputs.SlidePressed = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Обработка слайда
|
||||
_slideMechanic.RequestSlide(inputs.SlidePressed);
|
||||
@@ -221,6 +240,12 @@ namespace Code.Gameplay.Character.Controller
|
||||
_groundMovement.CancelJumpRequest();
|
||||
}
|
||||
}
|
||||
|
||||
public void BlockAbilities(float duration)
|
||||
{
|
||||
isAbilitiesBlocked = true;
|
||||
abilityBlockTimer = duration;
|
||||
}
|
||||
|
||||
// Метод вызывается перед обновлением персонажа (можно использовать для подготовки)
|
||||
public void BeforeCharacterUpdate(float deltaTime)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Camera.CameraStates;
|
||||
using Code.Gameplay.Character.Controller;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
@@ -19,9 +18,6 @@ namespace Code.Gameplay.Character.Core
|
||||
|
||||
[Inject] private IInputService _inputService; // Сервис ввода через DI
|
||||
|
||||
[SerializeField] private PlayerAnimator _animator;
|
||||
public PlayerAnimator PlayerAnimator => _animator;
|
||||
|
||||
public void Teleport(Vector3 position, Quaternion rotation)
|
||||
{
|
||||
customCharacterController.SetPosition(position);
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b36108558824d748620db29707cd2b1
|
||||
timeCreated: 1763228467
|
||||
@@ -0,0 +1,202 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Gameplay.Character.Controller;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using Reflex.Attributes;
|
||||
using Reflex.Core;
|
||||
using Reflex.Injectors;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public abstract class BaseEnemy : MonoBehaviour
|
||||
{
|
||||
[SerializeField] protected NavMeshAgent agent;
|
||||
[SerializeField] protected Collider enemyCollider;
|
||||
|
||||
protected int Damage;
|
||||
protected float AttackCooldown;
|
||||
|
||||
protected float DetectionRange;
|
||||
protected float AttackRange;
|
||||
|
||||
protected float Speed;
|
||||
|
||||
protected bool IsStunnable;
|
||||
protected float StunDuration;
|
||||
|
||||
protected bool UsesIdleMovement;
|
||||
protected float IdleWanderRadius;
|
||||
protected float IdleMoveDurationMin;
|
||||
protected float IdleMoveDurationMax;
|
||||
protected float IdlePauseDurationMin;
|
||||
protected float IdlePauseDurationMax;
|
||||
|
||||
private bool _isStunned;
|
||||
private float _currentStunTimer;
|
||||
|
||||
private bool _canAttack = true;
|
||||
private float _attackCooldownTimer;
|
||||
|
||||
private enum IdleState { Moving, Paused }
|
||||
private IdleState _currentIdleState = IdleState.Paused;
|
||||
private float _idleTimer;
|
||||
private Vector3 _idleTargetPosition;
|
||||
|
||||
[Inject] private IPlayerProvider _playerProvider;
|
||||
protected CharacterProvider Player => _playerProvider?.Character;
|
||||
protected PlayerHealth PlayerHealth => _playerProvider?.Health;
|
||||
protected CustomCharacterController PlayerController => Player?.CustomCharacterController;
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
if (_playerProvider == null)
|
||||
{
|
||||
AttributeInjector.Inject(this, Container.ProjectContainer);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Update()
|
||||
{
|
||||
if (!Player) return;
|
||||
|
||||
HandleStun();
|
||||
HandleAttackCooldown();
|
||||
if (_isStunned) return;
|
||||
|
||||
HandleMovement();
|
||||
HandleAttack();
|
||||
}
|
||||
|
||||
protected virtual void HandleMovement()
|
||||
{
|
||||
if (!Player || !agent) return;
|
||||
|
||||
var distanceToPlayer = Vector3.Distance(transform.position, Player.transform.position);
|
||||
|
||||
if (distanceToPlayer <= DetectionRange)
|
||||
{
|
||||
agent.isStopped = false;
|
||||
agent.SetDestination(Player.transform.position);
|
||||
}
|
||||
else if (UsesIdleMovement)
|
||||
{
|
||||
HandleIdleMovement();
|
||||
}
|
||||
else
|
||||
{
|
||||
agent.isStopped = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void HandleIdleMovement()
|
||||
{
|
||||
_idleTimer -= Time.deltaTime;
|
||||
|
||||
switch (_currentIdleState)
|
||||
{
|
||||
case IdleState.Paused:
|
||||
if (_idleTimer <= 0f)
|
||||
{
|
||||
// Start moving to a new random point
|
||||
_currentIdleState = IdleState.Moving;
|
||||
SetNewIdleDestination();
|
||||
_idleTimer = Random.Range(IdleMoveDurationMin, IdleMoveDurationMax);
|
||||
agent.isStopped = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case IdleState.Moving:
|
||||
if (_idleTimer <= 0f || HasReachedIdleDestination())
|
||||
{
|
||||
// Stop and pause
|
||||
_currentIdleState = IdleState.Paused;
|
||||
_idleTimer = Random.Range(IdlePauseDurationMin, IdlePauseDurationMax);
|
||||
agent.isStopped = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetNewIdleDestination()
|
||||
{
|
||||
Vector3 randomPoint = transform.position + Random.insideUnitSphere * IdleWanderRadius;
|
||||
NavMeshHit hit;
|
||||
if (NavMesh.SamplePosition(randomPoint, out hit, 3f, agent.areaMask))
|
||||
{
|
||||
_idleTargetPosition = hit.position;
|
||||
agent.SetDestination(_idleTargetPosition);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fallback: stay
|
||||
_idleTargetPosition = transform.position;
|
||||
}
|
||||
}
|
||||
|
||||
private bool HasReachedIdleDestination()
|
||||
{
|
||||
return agent.remainingDistance <= agent.stoppingDistance;
|
||||
}
|
||||
|
||||
protected virtual void HandleAttack() { }
|
||||
|
||||
protected virtual void HandleStun()
|
||||
{
|
||||
if (!_isStunned || !IsStunnable) return;
|
||||
|
||||
_currentStunTimer -= Time.deltaTime;
|
||||
|
||||
if (!(_currentStunTimer <= 0)) return;
|
||||
|
||||
_isStunned = false;
|
||||
agent.isStopped = false;
|
||||
enemyCollider.enabled = true;
|
||||
}
|
||||
|
||||
protected virtual void ApplyStun()
|
||||
{
|
||||
_isStunned = true;
|
||||
_currentStunTimer = StunDuration;
|
||||
agent.isStopped = true;
|
||||
enemyCollider.enabled = false;
|
||||
}
|
||||
|
||||
protected virtual void HandleAttackCooldown()
|
||||
{
|
||||
if (!_canAttack)
|
||||
{
|
||||
_attackCooldownTimer -= Time.deltaTime;
|
||||
if (_attackCooldownTimer <= 0)
|
||||
{
|
||||
_canAttack = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void DealDamage()
|
||||
{
|
||||
if (!_canAttack || PlayerHealth == null) return;
|
||||
|
||||
PlayerHealth.GetDamage(Damage);
|
||||
ApplyEffectsToPlayer();
|
||||
|
||||
_canAttack = false;
|
||||
_attackCooldownTimer = AttackCooldown;
|
||||
}
|
||||
|
||||
protected virtual void ApplyEffectsToPlayer()
|
||||
{
|
||||
PlayerController.BlockAbilities(3f);
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = Color.yellow;
|
||||
Gizmos.DrawWireSphere(transform.position, DetectionRange);
|
||||
|
||||
Gizmos.color = new Color(0.3f, 0.3f, 0.8f, 0.4f);
|
||||
Gizmos.DrawSphere(transform.position, AttackRange);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 691006ba0f69448787db8f350ecf32f4
|
||||
timeCreated: 1763228480
|
||||
@@ -0,0 +1,55 @@
|
||||
using Code.Configs;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public class Cockroach : BaseEnemy
|
||||
{
|
||||
[Inject]
|
||||
private void Construct(CockroachConfig cockroachConfig)
|
||||
{
|
||||
Damage = cockroachConfig.damage;
|
||||
AttackCooldown = cockroachConfig.attackCooldown;
|
||||
|
||||
DetectionRange = cockroachConfig.detectionRange;
|
||||
AttackRange = cockroachConfig.attackRange;
|
||||
|
||||
Speed = cockroachConfig.speed;
|
||||
|
||||
IsStunnable = cockroachConfig.isStunnable;
|
||||
StunDuration = cockroachConfig.stunDuration;
|
||||
|
||||
UsesIdleMovement = cockroachConfig.usesIdleMovement;
|
||||
IdleWanderRadius = cockroachConfig.idleWanderRadius;
|
||||
IdleMoveDurationMin = cockroachConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = cockroachConfig.idleMoveDurationMax;
|
||||
IdleMoveDurationMin = cockroachConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = cockroachConfig.idleMoveDurationMax;
|
||||
IdlePauseDurationMin = cockroachConfig.idlePauseDurationMin;
|
||||
IdlePauseDurationMax = cockroachConfig.idlePauseDurationMax;
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
if (agent == null) return;
|
||||
|
||||
var walkableArea = NavMesh.GetAreaFromName("Cockroach");
|
||||
agent.areaMask = 1 << walkableArea;
|
||||
}
|
||||
|
||||
protected override void HandleAttack()
|
||||
{
|
||||
if (!Player) return;
|
||||
|
||||
var distance = Vector3.Distance(transform.position, Player.transform.position);
|
||||
|
||||
if (!(distance <= AttackRange)) return;
|
||||
|
||||
DealDamage();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 119c0b675c944ed7ada6cdc8db4b04aa
|
||||
timeCreated: 1763228933
|
||||
@@ -0,0 +1,58 @@
|
||||
using Code.Configs;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public class DrunkenGrandpa : BaseEnemy
|
||||
{
|
||||
[Inject]
|
||||
private void Construct(DrunkenGrandpaConfig drunkenGrandpaConfig)
|
||||
{
|
||||
Damage = drunkenGrandpaConfig.damage;
|
||||
AttackCooldown = drunkenGrandpaConfig.attackCooldown;
|
||||
|
||||
DetectionRange = drunkenGrandpaConfig.detectionRange;
|
||||
AttackRange = drunkenGrandpaConfig.attackRange;
|
||||
|
||||
Speed = drunkenGrandpaConfig.speed;
|
||||
|
||||
IsStunnable = drunkenGrandpaConfig.isStunnable;
|
||||
StunDuration = drunkenGrandpaConfig.stunDuration;
|
||||
|
||||
UsesIdleMovement = drunkenGrandpaConfig.usesIdleMovement;
|
||||
IdleWanderRadius = drunkenGrandpaConfig.idleWanderRadius;
|
||||
IdleMoveDurationMin = drunkenGrandpaConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = drunkenGrandpaConfig.idleMoveDurationMax;
|
||||
IdleMoveDurationMin = drunkenGrandpaConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = drunkenGrandpaConfig.idleMoveDurationMax;
|
||||
IdlePauseDurationMin = drunkenGrandpaConfig.idlePauseDurationMin;
|
||||
IdlePauseDurationMax = drunkenGrandpaConfig.idlePauseDurationMax;
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
if (agent == null) return;
|
||||
|
||||
var walkableArea = NavMesh.GetAreaFromName("Walkable");
|
||||
agent.areaMask = 1 << walkableArea;
|
||||
}
|
||||
|
||||
protected override void HandleAttack()
|
||||
{
|
||||
if (!Player) return;
|
||||
|
||||
var distance = Vector3.Distance(transform.position, Player.transform.position);
|
||||
|
||||
if (!(distance <= AttackRange)) return;
|
||||
|
||||
if (Player.CustomCharacterController.IsSliding)
|
||||
ApplyStun();
|
||||
else
|
||||
DealDamage();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5e77164596e249bca15e09cdfc9ddac2
|
||||
timeCreated: 1763228910
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Attributes;
|
||||
using Reflex.Core;
|
||||
using Reflex.Injectors;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public class EnemyFactory : IEnemyFactory
|
||||
{
|
||||
[Inject] private FogConfig _fogConfig;
|
||||
[Inject] private DrunkenGrandpaConfig _drunkenGrandpaConfig;
|
||||
[Inject] private CockroachConfig _cockroachConfig;
|
||||
|
||||
public async UniTask<BaseEnemy> CreateEnemy(EnemyType type)
|
||||
{
|
||||
var enemy = await Addressables.InstantiateAsync(GetEnemyPrefab(type)).ToUniTask();
|
||||
|
||||
AttributeInjector.Inject(enemy, Container.ProjectContainer);
|
||||
|
||||
return enemy.GetComponent<BaseEnemy>();
|
||||
}
|
||||
|
||||
public void ReleaseEnemy(BaseEnemy enemy)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private AssetReference GetEnemyPrefab(EnemyType type)
|
||||
{
|
||||
return type switch
|
||||
{
|
||||
EnemyType.Fog => _fogConfig.fogPrefab,
|
||||
EnemyType.DrunkenGrandpa => _drunkenGrandpaConfig.drunkenGrandpaPrefab,
|
||||
EnemyType.Cockroach => _cockroachConfig.cockroachPrefab,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(type), type, null)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2f9328c54d334b0c85ce44b0aa7add44
|
||||
timeCreated: 1764168610
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public enum EnemyType
|
||||
{
|
||||
Fog,
|
||||
DrunkenGrandpa,
|
||||
Cockroach
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5430cad1a8c44516944259a428de641e
|
||||
timeCreated: 1764168839
|
||||
@@ -0,0 +1,68 @@
|
||||
using Code.Configs;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public class Fog : BaseEnemy
|
||||
{
|
||||
[Inject]
|
||||
private void Construct(FogConfig fogConfig)
|
||||
{
|
||||
Damage = fogConfig.damage;
|
||||
AttackCooldown = fogConfig.attackCooldown;
|
||||
|
||||
DetectionRange = fogConfig.detectionRange;
|
||||
AttackRange = fogConfig.attackRange;
|
||||
|
||||
Speed = fogConfig.speed;
|
||||
|
||||
IsStunnable = fogConfig.isStunnable;
|
||||
StunDuration = fogConfig.stunDuration;
|
||||
|
||||
UsesIdleMovement = fogConfig.usesIdleMovement;
|
||||
IdleWanderRadius = fogConfig.idleWanderRadius;
|
||||
IdleMoveDurationMin = fogConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = fogConfig.idleMoveDurationMax;
|
||||
IdleMoveDurationMin = fogConfig.idleMoveDurationMin;
|
||||
IdleMoveDurationMax = fogConfig.idleMoveDurationMax;
|
||||
IdlePauseDurationMin = fogConfig.idlePauseDurationMin;
|
||||
IdlePauseDurationMax = fogConfig.idlePauseDurationMax;
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
if (agent == null) return;
|
||||
agent.enabled = false;
|
||||
Destroy(agent);
|
||||
}
|
||||
|
||||
protected override void HandleMovement()
|
||||
{
|
||||
if (!Player) return;
|
||||
|
||||
var direction = (Player.transform.position - transform.position).normalized;
|
||||
transform.position += direction * (Speed * Time.deltaTime);
|
||||
}
|
||||
|
||||
protected override void HandleAttack()
|
||||
{
|
||||
if (!Player || PlayerHealth == null) return;
|
||||
|
||||
var distance = Vector3.Distance(transform.position, Player.transform.position);
|
||||
|
||||
if (!(distance < AttackRange)) return;
|
||||
|
||||
PlayerHealth.GetDamage(PlayerHealth.MaxHealthPoints);
|
||||
base.ApplyEffectsToPlayer();
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = new Color(0.3f, 0.3f, 0.8f, 0.4f);
|
||||
Gizmos.DrawSphere(transform.position, AttackRange);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c70370426e4457aa9a56c77689158ff
|
||||
timeCreated: 1763228955
|
||||
@@ -0,0 +1,10 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace Code.Gameplay.Enemies
|
||||
{
|
||||
public interface IEnemyFactory
|
||||
{
|
||||
UniTask<BaseEnemy> CreateEnemy(EnemyType type);
|
||||
void ReleaseEnemy(BaseEnemy enemy);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 68eb3027a07042b991aa1893ddd14368
|
||||
timeCreated: 1764168497
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e41c28f7828a44b7bc26d87886064d99
|
||||
timeCreated: 1763556651
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4911436131e345ada949f2418595bbd8
|
||||
timeCreated: 1763559099
|
||||
@@ -1,20 +0,0 @@
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public interface IOrderService
|
||||
{
|
||||
delegate void OrderProgressDelegate(float time);
|
||||
|
||||
event OrderProgressDelegate OnOrderGiven;
|
||||
event OrderProgressDelegate OnOrderRecieved;
|
||||
|
||||
delegate void OrderDeliveredDelegate(int score, float time);
|
||||
|
||||
event OrderDeliveredDelegate OnOrderDelivered;
|
||||
OrderState OrderState { get; }
|
||||
void RoomPassed();
|
||||
float DecreaseTimer(float delta);
|
||||
void OrderGive();
|
||||
void OrderRecieved();
|
||||
void OrderDelivered();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8b4467951c884c8dafeb633020696c24
|
||||
timeCreated: 1763561686
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public interface IScoreService
|
||||
{
|
||||
int Score { get; }
|
||||
void IncreaseScore(int amount);
|
||||
void DecreaseScore(int amount);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 64668c9ef4c441af84c635365cfbb2de
|
||||
timeCreated: 1763559523
|
||||
@@ -1,68 +0,0 @@
|
||||
using System;
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class OrderBox : MonoBehaviour
|
||||
{
|
||||
[Inject] private IOrderService _orderService;
|
||||
public Rigidbody rigidbody;
|
||||
[SerializeField] private bool _pickupMode;
|
||||
// [SerializeField] private AnimationCurve debugCurve;
|
||||
|
||||
//DEBUG
|
||||
// private void Start()
|
||||
// {
|
||||
// _capturedPosition = transform.position;
|
||||
// _floatingCurve = debugCurve;
|
||||
// _curveLength = 1f;
|
||||
// }
|
||||
// DEBUG
|
||||
|
||||
private float _activationTime;
|
||||
[Inject]
|
||||
private void Construct(OrderBoxConfig config)
|
||||
{
|
||||
_floatingCurve = config.floatingCurve;
|
||||
_activationTime = config.activationTime;
|
||||
_curveLength = config.curveLength;
|
||||
}
|
||||
public void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (!_pickupMode) return;
|
||||
|
||||
_orderService.OrderRecieved();
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
public async UniTaskVoid SwitchMode()
|
||||
{
|
||||
Debug.LogWarning("Activating");
|
||||
await UniTask.WaitForSeconds(_activationTime);
|
||||
Debug.LogWarning("Available");
|
||||
_pickupMode = true;
|
||||
rigidbody.isKinematic = true;
|
||||
_capturedPosition = transform.position;
|
||||
}
|
||||
|
||||
private Vector3 _capturedPosition;
|
||||
private float _timeForMoving;
|
||||
private AnimationCurve _floatingCurve;
|
||||
private float _curveLength;
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (!_pickupMode) return;
|
||||
_timeForMoving += Time.fixedDeltaTime;
|
||||
|
||||
if (_timeForMoving > _curveLength) _timeForMoving = 0;
|
||||
|
||||
transform.position = _capturedPosition + new Vector3(0, _floatingCurve.Evaluate(_timeForMoving), 0);
|
||||
Debug.Log(transform.position);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 067bc72af86a4fb8ac44d0c1fcfd25d5
|
||||
timeCreated: 1763573681
|
||||
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class OrderDeliveryTrigger : MonoBehaviour
|
||||
{
|
||||
[Inject] private IOrderService _orderService;
|
||||
private bool _playerEntered;
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (_playerEntered) return;
|
||||
|
||||
_playerEntered = true;
|
||||
_orderService.OrderDelivered();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47fbefab729047e5a11d8761e26f75a6
|
||||
timeCreated: 1763737623
|
||||
@@ -1,31 +0,0 @@
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class OrderDispenser : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Transform hatch;
|
||||
[SerializeField] private OrderBox order;
|
||||
|
||||
private bool _activated;
|
||||
public void ThrowOrder()
|
||||
{
|
||||
hatch.DORotate(new Vector3(-130f, 0, 0), 0.2f);
|
||||
|
||||
order.rigidbody.isKinematic = false;
|
||||
order.rigidbody.AddForce(-transform.forward * 10f, ForceMode.Impulse);
|
||||
}
|
||||
|
||||
// DEBUG TODO ДИМКА УДАЛИ И ПРОПИШИ В СВОЕЙ ЛОГИКЕ
|
||||
public void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if(_activated) return;
|
||||
_activated = true;
|
||||
|
||||
ThrowOrder();
|
||||
order.SwitchMode();
|
||||
}
|
||||
// DEBUG
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e50e3c42f5ee45e0b1087e0dbf7dd0f4
|
||||
timeCreated: 1763556675
|
||||
@@ -1,18 +0,0 @@
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class OrderGiveTrigger : MonoBehaviour
|
||||
{
|
||||
[Inject] private IOrderService _orderService;
|
||||
private bool _playerEntered;
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (_playerEntered) return;
|
||||
|
||||
_playerEntered = true;
|
||||
_orderService.OrderGive();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3966e4798d243abba9d85b9ad8aef33
|
||||
timeCreated: 1763742374
|
||||
@@ -1,61 +0,0 @@
|
||||
using Code.Audio;
|
||||
using Code.Configs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class OrderService : IOrderService
|
||||
{
|
||||
public event IOrderService.OrderProgressDelegate OnOrderGiven;
|
||||
public event IOrderService.OrderProgressDelegate OnOrderRecieved;
|
||||
public event IOrderService.OrderDeliveredDelegate OnOrderDelivered;
|
||||
|
||||
private OrderState _orderState;
|
||||
public OrderState OrderState => _orderState;
|
||||
|
||||
private float _deliveryTimer = 0.0f;
|
||||
|
||||
private Vector2 _timeBounds;
|
||||
private float _koefRooms, _koefOvertime;
|
||||
|
||||
private int _roomsPassed;
|
||||
|
||||
public OrderService(OrderServiceConfig config)
|
||||
{
|
||||
_orderState = OrderState.Delivered;
|
||||
|
||||
_timeBounds = config.timeBounds;
|
||||
_koefRooms = config.koefRooms;
|
||||
_koefOvertime = config.koefOvertime;
|
||||
}
|
||||
|
||||
public void RoomPassed() => _roomsPassed++;
|
||||
public float DecreaseTimer(float delta)
|
||||
{
|
||||
return _deliveryTimer -= delta;
|
||||
}
|
||||
|
||||
public void OrderGive()
|
||||
{
|
||||
_orderState = OrderState.Given;
|
||||
_roomsPassed = 0;
|
||||
|
||||
_deliveryTimer = Random.Range(_timeBounds.x, _timeBounds.y);
|
||||
OnOrderGiven?.Invoke(_deliveryTimer);
|
||||
}
|
||||
|
||||
public void OrderRecieved()
|
||||
{
|
||||
_orderState = OrderState.Recieved;
|
||||
OnOrderRecieved?.Invoke(_deliveryTimer);
|
||||
}
|
||||
|
||||
public void OrderDelivered()
|
||||
{
|
||||
_orderState = OrderState.Delivered;
|
||||
|
||||
int score = (int)(_koefRooms * _roomsPassed + _deliveryTimer * _koefOvertime);
|
||||
OnOrderDelivered?.Invoke(score, _deliveryTimer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b324c2a1be1546868cddf779445b286a
|
||||
timeCreated: 1763559110
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public enum OrderState
|
||||
{
|
||||
Delivered,
|
||||
Given,
|
||||
Recieved,
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a8980a0cc034110ab3ccd948d40956b
|
||||
timeCreated: 1763559535
|
||||
@@ -1,11 +0,0 @@
|
||||
namespace Code.Gameplay.Orders.Order
|
||||
{
|
||||
public class ScoreService : IScoreService
|
||||
{
|
||||
private int _score;
|
||||
public int Score => _score;
|
||||
|
||||
public void IncreaseScore(int amount) => _score += amount;
|
||||
public void DecreaseScore(int amount) => _score -= amount;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 619f2425460843aaa1f0f21e302158ce
|
||||
timeCreated: 1763559528
|
||||
@@ -1,9 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Player
|
||||
{
|
||||
public class ArmsMeshProvider : MonoBehaviour
|
||||
{
|
||||
[SerializeField] public Animator ArmsAnimator;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfe65f613bc54b4098acdba0d3fdd2a2
|
||||
timeCreated: 1763730814
|
||||
@@ -11,7 +11,5 @@ namespace Code.Gameplay.Player
|
||||
PlayerMoney CreatePlayerMoney(int count = 0);
|
||||
UniTask<CharacterProvider> CreatePlayer();
|
||||
void ReleasePlayer(CharacterProvider characterProvider);
|
||||
UniTask<ArmsMeshProvider> CreateArms(Transform papochka);
|
||||
void ReleaseArms(ArmsMeshProvider arms);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Code.Gameplay.Character.Core;
|
||||
|
||||
namespace Code.Gameplay.Player
|
||||
{
|
||||
public interface IPlayerProvider
|
||||
{
|
||||
CharacterProvider Character { get; }
|
||||
PlayerHealth Health { get; }
|
||||
bool IsSpawned { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8fdfaa773e8645d5a2d400c0317b9894
|
||||
timeCreated: 1763237368
|
||||
@@ -7,13 +7,12 @@ namespace Code.Gameplay.Player
|
||||
{
|
||||
private static readonly int Velocity = Animator.StringToHash("Velocity");
|
||||
|
||||
private Animator _playerAnimator;
|
||||
public void SetAnimator(Animator animator) => _playerAnimator = animator;
|
||||
[SerializeField] private Animator playerAnimator;
|
||||
[SerializeField] private KinematicCharacterMotor kinematicCharacterMotor;
|
||||
|
||||
private void SetVelocity(float velocity)
|
||||
{
|
||||
_playerAnimator.SetFloat(Velocity, velocity);
|
||||
playerAnimator.SetFloat(Velocity, velocity);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Code.Gameplay.Player
|
||||
public class PlayerFactory : IPlayerFactory
|
||||
{
|
||||
[Inject] PlayerConfig _playerConfig;
|
||||
[Inject] private IPlayerProvider _playerProvider;
|
||||
|
||||
public PlayerHealth CreatePlayerHealth(int count = -1)
|
||||
{
|
||||
@@ -25,18 +26,21 @@ namespace Code.Gameplay.Player
|
||||
|
||||
public async UniTask<CharacterProvider> CreatePlayer()
|
||||
{
|
||||
CharacterProvider characterProvider = (await Addressables.InstantiateAsync(_playerConfig.characterPrefab).ToUniTask()).GetComponent<CharacterProvider>();
|
||||
AttributeInjector.Inject(characterProvider, Container.ProjectContainer);
|
||||
AttributeInjector.Inject(characterProvider.CustomCharacterController, Container.ProjectContainer);
|
||||
return characterProvider;
|
||||
var go = await Addressables.InstantiateAsync(_playerConfig.characterPrefab).ToUniTask();
|
||||
var provider = go.GetComponent<CharacterProvider>();
|
||||
|
||||
AttributeInjector.Inject(provider, Container.ProjectContainer);
|
||||
AttributeInjector.Inject(provider.CustomCharacterController, Container.ProjectContainer);
|
||||
|
||||
((PlayerProvider)_playerProvider).SetPlayer(provider, _playerConfig);
|
||||
|
||||
return provider;
|
||||
}
|
||||
|
||||
public void ReleasePlayer(CharacterProvider characterProvider)
|
||||
{
|
||||
((PlayerProvider)_playerProvider).ClearPlayer();
|
||||
Addressables.ReleaseInstance(characterProvider.gameObject);
|
||||
}
|
||||
|
||||
public async UniTask<ArmsMeshProvider> CreateArms(Transform papochka) => (await Addressables.InstantiateAsync(_playerConfig.armsMeshPrefab, papochka).ToUniTask()).GetComponent<ArmsMeshProvider>();
|
||||
public void ReleaseArms(ArmsMeshProvider arms) => Addressables.ReleaseInstance(arms.gameObject);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Character.Core;
|
||||
|
||||
namespace Code.Gameplay.Player
|
||||
{
|
||||
public class PlayerProvider : IPlayerProvider
|
||||
{
|
||||
public CharacterProvider Character { get; private set; }
|
||||
|
||||
public PlayerHealth Health { get; private set; }
|
||||
|
||||
public bool IsSpawned => Character != null;
|
||||
|
||||
internal void SetPlayer(CharacterProvider character, PlayerConfig config)
|
||||
{
|
||||
Character = character;
|
||||
Health = new PlayerHealth(config.maxHealth);
|
||||
}
|
||||
|
||||
internal void ClearPlayer()
|
||||
{
|
||||
Character = null;
|
||||
Health = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0dbe29c5f0e9431db8c8da25eeb8fa95
|
||||
timeCreated: 1763237388
|
||||
@@ -1,4 +1,3 @@
|
||||
using Code.Gameplay.Orders.Order;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
@@ -9,13 +8,11 @@ namespace Code.Scenes.SceneEnvironments
|
||||
{
|
||||
[FormerlySerializedAs("sfxTarget")] public Transform debugSfxTarget;
|
||||
public Transform playerSpawnPoint;
|
||||
public OrderDispenser debugTube;
|
||||
|
||||
public void TransitVariables(GameplaySceneEnvironment env)
|
||||
{
|
||||
debugSfxTarget = env.debugSfxTarget;
|
||||
playerSpawnPoint = env.playerSpawnPoint;
|
||||
debugTube = env.debugTube;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ namespace Code.Scenes
|
||||
callBack?.Invoke();
|
||||
}
|
||||
|
||||
public async UniTask LoadSceneAsyncAwaitable(int sceneId, float waitFor = 0f)
|
||||
public async UniTask LoadSceneAsyncAwaitable(int sceneId, float waitFor = 0)
|
||||
{
|
||||
await UniTask.WhenAll(
|
||||
UniTask.Delay(TimeSpan.FromSeconds(waitFor)),
|
||||
|
||||
@@ -21,8 +21,9 @@ namespace Code.StaticData
|
||||
SFXListConfig SFXListConfig { get; }
|
||||
DispatcherSoundListConfig DispatcherSoundListConfig { get; }
|
||||
EnemiesSoundListConfig EnemiesSoundListConfig { get; }
|
||||
OrderServiceConfig OrderServiceConfig { get; }
|
||||
OrderBoxConfig OrderBoxConfig { get; }
|
||||
DrunkenGrandpaConfig DrunkenGrandpaConfig { get; }
|
||||
CockroachConfig CockroachConfig { get; }
|
||||
FogConfig FogConfig { get; }
|
||||
void Load();
|
||||
Task<T> InstantiateAsset<T>(AssetReference assetReference) where T : Behaviour;
|
||||
}
|
||||
|
||||
@@ -20,8 +20,9 @@ namespace Code.StaticData
|
||||
public SFXListConfig SFXListConfig { get; private set; }
|
||||
public DispatcherSoundListConfig DispatcherSoundListConfig { get; private set; }
|
||||
public EnemiesSoundListConfig EnemiesSoundListConfig { get; private set; }
|
||||
public OrderServiceConfig OrderServiceConfig { get; private set; }
|
||||
public OrderBoxConfig OrderBoxConfig { get; private set; }
|
||||
public DrunkenGrandpaConfig DrunkenGrandpaConfig {get; private set;}
|
||||
public CockroachConfig CockroachConfig { get; private set; }
|
||||
public FogConfig FogConfig { get; private set; }
|
||||
|
||||
public void Load()
|
||||
{
|
||||
@@ -31,10 +32,9 @@ namespace Code.StaticData
|
||||
CharacterConfig = Resources.Load<CharacterConfig>(string.Format(StringPaths.ConfigSingle, "App", "CharacterConfig"));
|
||||
UIConfig = Resources.Load<UIConfig>(string.Format(StringPaths.ConfigSingle, "App", "UIConfig"));
|
||||
PlayerConfig = Resources.Load<PlayerConfig>(string.Format(StringPaths.ConfigSingle, "App", "PlayerConfig"));
|
||||
OrderServiceConfig = Resources.Load<OrderServiceConfig>(string.Format(StringPaths.ConfigSingle, "Gameplay", "OrderServiceConfig"));
|
||||
OrderBoxConfig = Resources.Load<OrderBoxConfig>(string.Format(StringPaths.ConfigSingle, "Gameplay", "OrderBoxConfig"));
|
||||
|
||||
LoadAudioConfigs();
|
||||
LoadEnemiesConfigs();
|
||||
}
|
||||
|
||||
private void LoadAudioConfigs()
|
||||
@@ -46,6 +46,13 @@ namespace Code.StaticData
|
||||
EnemiesSoundListConfig = Resources.Load<EnemiesSoundListConfig>(string.Format(StringPaths.ConfigSingle, "Audio", "EnemiesSoundListConfig"));
|
||||
}
|
||||
|
||||
private void LoadEnemiesConfigs()
|
||||
{
|
||||
DrunkenGrandpaConfig = Resources.Load<DrunkenGrandpaConfig>(string.Format(StringPaths.ConfigSingle, "Enemies", "DrunkenGrandpaConfig"));
|
||||
CockroachConfig = Resources.Load<CockroachConfig>(string.Format(StringPaths.ConfigSingle, "Enemies", "CockroachConfig"));
|
||||
FogConfig = Resources.Load<FogConfig>(string.Format(StringPaths.ConfigSingle, "Enemies", "FogConfig"));
|
||||
}
|
||||
|
||||
public async Task<T> InstantiateAsset<T>(AssetReference assetReference) where T : Behaviour
|
||||
{
|
||||
return (await Addressables.InstantiateAsync(assetReference).ToUniTask()).GetComponent<T>();
|
||||
|
||||
@@ -2,9 +2,10 @@ using Code.Gameplay.Player;
|
||||
using DG.Tweening;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Code.UI.Panels
|
||||
namespace Code.UI
|
||||
{
|
||||
public class GameplayPanel : UIElement
|
||||
{
|
||||
@@ -15,7 +16,6 @@ namespace Code.UI.Panels
|
||||
[SerializeField] private float dispatcherTransitionTime = 0.5f;
|
||||
[Header("Timer")]
|
||||
[SerializeField] private TMP_Text timer;
|
||||
public TMP_Text Timer => timer;
|
||||
[Header("HealthBar")]
|
||||
[SerializeField] private Image healthBar;
|
||||
[Header("MoneyBar")]
|
||||
@@ -41,6 +41,11 @@ namespace Code.UI.Panels
|
||||
health.OnDamage += HealthUpdate;
|
||||
HealthUpdate(0,health);
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
timer.text = Time.deltaTime.ToString();
|
||||
}
|
||||
|
||||
public void SummonDispatcher()
|
||||
{
|
||||
// TODO
|
||||
|
||||
@@ -154,7 +154,6 @@ AudioMixerSnapshotController:
|
||||
m_SnapshotID: 6d6b0cfa14637d5f0a34277934971c34
|
||||
m_FloatValues:
|
||||
b9fc0df121fe7134e9cbd35aa5a65755: -80
|
||||
4c469b14481ac855fb9fb2989e6e6b94: -14.221897
|
||||
ddab7e07de3c686e296ff10b1cd77a47: -80
|
||||
m_TransitionOverrides: {}
|
||||
--- !u!241 &24100000
|
||||
@@ -190,7 +189,7 @@ AudioMixerController:
|
||||
- af6d3dead2e9e4848a2ca2fa55634108
|
||||
name: View
|
||||
m_CurrentViewIndex: 0
|
||||
m_TargetSnapshot: {fileID: -1214924791136564940}
|
||||
m_TargetSnapshot: {fileID: -5566153147845745614}
|
||||
--- !u!243 &24300002
|
||||
AudioMixerGroupController:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -19,9 +19,3 @@ MonoBehaviour:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
armsMeshPrefab:
|
||||
m_AssetGUID: 1d4767c722c05b5d6b96bb226d378c65
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
@@ -13,32 +13,12 @@ MonoBehaviour:
|
||||
m_Name: SoundtrackListConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.SoundtrackListConfig
|
||||
peacefulSoundtrack:
|
||||
- m_AssetGUID: 803e40b883c823b89a91aa8b9d9fc483
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
- m_AssetGUID: ebe18293a5ef86704b23dad3a1786476
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
- m_AssetGUID: 803e40b883c823b89a91aa8b9d9fc483
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
actionSoundtrack:
|
||||
- m_AssetGUID: ebe18293a5ef86704b23dad3a1786476
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
- m_AssetGUID: f4b6fa54ecac6cc418f98824491aa17a
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
- m_AssetGUID: ebe18293a5ef86704b23dad3a1786476
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
@@ -55,8 +35,3 @@ MonoBehaviour:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
- m_AssetGUID: ebe18293a5ef86704b23dad3a1786476
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c7160d745f618dbdb8163f29d1bd3fcb
|
||||
guid: 9dec9aa8ce6e1be92b7f1daeffd7a9b6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -0,0 +1,33 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7bc162d3127949aa950d0738beee99a4, type: 3}
|
||||
m_Name: CockroachConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.CockroachConfig
|
||||
cockroachPrefab:
|
||||
m_AssetGUID:
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
damage: 2
|
||||
attackCooldown: 1.5
|
||||
detectionRange: 20
|
||||
attackRange: 1.3
|
||||
speed: 6
|
||||
isStunnable: 0
|
||||
stunDuration: 0
|
||||
usesIdleMovement: 1
|
||||
idleWanderRadius: 3
|
||||
idleMoveDurationMin: 0.3
|
||||
idleMoveDurationMax: 1
|
||||
idlePauseDurationMin: 0.1
|
||||
idlePauseDurationMax: 0.8
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15fc4dd72b7b0ac0c9210a07f70b4007
|
||||
guid: ac804127a406a864f8c178cd56e2b210
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -0,0 +1,33 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4d157e8891074b90957a7434cff0ae71, type: 3}
|
||||
m_Name: DrunkenGrandpaConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.DrunkenGrandpaConfig
|
||||
drunkenGrandpaPrefab:
|
||||
m_AssetGUID:
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
damage: 2
|
||||
attackCooldown: 5
|
||||
detectionRange: 10
|
||||
attackRange: 1.5
|
||||
speed: 3
|
||||
isStunnable: 1
|
||||
stunDuration: 3
|
||||
usesIdleMovement: 1
|
||||
idleWanderRadius: 5
|
||||
idleMoveDurationMin: 1
|
||||
idleMoveDurationMax: 5
|
||||
idlePauseDurationMin: 3
|
||||
idlePauseDurationMax: 5
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 38984bc3c0ffd57a0a88f0da6f96e470
|
||||
guid: fd5e843255fee395ea687b9d5ad5741d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -0,0 +1,33 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: aa4dd2a5cce24902a2918488b5751f2f, type: 3}
|
||||
m_Name: FogConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.FogConfig
|
||||
fogPrefab:
|
||||
m_AssetGUID:
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
damage: 2147483647
|
||||
attackCooldown: 0
|
||||
detectionRange: 0
|
||||
attackRange: 5
|
||||
speed: 1.5
|
||||
isStunnable: 0
|
||||
stunDuration: 0
|
||||
usesIdleMovement: 0
|
||||
idleWanderRadius: 0
|
||||
idleMoveDurationMin: 0
|
||||
idleMoveDurationMax: 0
|
||||
idlePauseDurationMin: 0
|
||||
idlePauseDurationMax: 0
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a35867b942225319bb9c26db15511aaf
|
||||
guid: 367017c1e176ddbbd9135cb82dbd94d2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -1,49 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6af4f53d425a41c78ef889fd7e5c3197, type: 3}
|
||||
m_Name: OrderBoxConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.OrderBoxConfig
|
||||
activationTime: 2
|
||||
floatingCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 1.4374113
|
||||
outSlope: 1.4374113
|
||||
tangentMode: 34
|
||||
weightedMode: 0
|
||||
inWeight: 0
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 0.48992503
|
||||
value: 0.70422375
|
||||
inSlope: 0.028391719
|
||||
outSlope: 0.028391719
|
||||
tangentMode: 34
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: -1.3806279
|
||||
outSlope: -1.3806279
|
||||
tangentMode: 34
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
curveLength: 1
|
||||
@@ -1,20 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 95639b2744d24b66842ac3d71d056129, type: 3}
|
||||
m_Name: OrderFactoryConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.OrderFactoryConfig
|
||||
orderDispenserPrefab:
|
||||
m_AssetGUID: 751890caa1647ec6689f24933fbcb770
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
@@ -1,17 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ee2550c3e4874575ac3aecadfcc42475, type: 3}
|
||||
m_Name: OrderServiceConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Configs.OrderServiceConfig
|
||||
timeBounds: {x: 35, y: 120}
|
||||
koefRooms: 2
|
||||
koefOvertime: 4
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd66bc1698bb3972b97125d4d6e4ea22
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,139 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-2147114197879300112
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DrunkenGrandpa
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _METALLICSPECGLOSSMAP
|
||||
- _NORMALMAP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 0a8ed27d17fe9b085834fba6972c0a8a, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: 6c92883f2935443458f5dadf53dae100, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 0a8ed27d17fe9b085834fba6972c0a8a, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 2800000, guid: bc57aa85d09f3b056ab86a1439ee1e00, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Cull: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.005
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _WorkflowMode: 1
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d74b98a8711ab75e813aea13cb6211e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,130 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a8ed27d17fe9b085834fba6972c0a8a
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+130
@@ -0,0 +1,130 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6c92883f2935443458f5dadf53dae100
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 1
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+130
@@ -0,0 +1,130 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc57aa85d09f3b056ab86a1439ee1e00
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ba8e76344dabbf13af813f7bea7f6e6
|
||||
guid: 89b8ea3befbb7ac3d9998f40fc1bb119
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
internalIDToNameTable: []
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,110 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 332f301c5f054a7df80785fdefd47cb4
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importPhysicalCameras: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 0
|
||||
importLights: 0
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
importBlendShapeDeformPercent: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
Binary file not shown.
Loaded 100 of 182 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user