Теперь камера - это стейт-машина
This commit is contained in:
1 parent
db541fed8a
commit
4549617275
31 files changed
+1145
-210
No files matched your search
@@ -1,4 +1,6 @@
|
||||
using Code.App.StateMachine;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Code.StateMachine;
|
||||
@@ -16,8 +18,13 @@ namespace Code.App.AppStates
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
Context.SceneLoaderService.LoadScene((int)SceneIds.Gameplay, SceneLoaded);
|
||||
Context.SceneLoaderService.LoadScene((int)SceneIds.MovementDev, SceneLoaded);
|
||||
Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
Context.UIService.SwitchPanelTo(UIPanel.Gameplay);
|
||||
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.FirstPerson);
|
||||
}
|
||||
|
||||
private void SceneLoaded()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Code.App.StateMachine;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Code.StateMachine;
|
||||
@@ -14,11 +15,18 @@ namespace Code.App.AppStates
|
||||
{
|
||||
Context.SceneLoaderService.LoadScene((int)SceneIds.MainMenu, SceneLoaded);
|
||||
Context.InputService.EnableMap(ActionMappings.MainMenu);
|
||||
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
Context.UIService.SwitchPanelTo(UIPanel.MainMenu);
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame);
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame);
|
||||
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.Static);
|
||||
}
|
||||
|
||||
private void SceneLoaded()
|
||||
{
|
||||
//Context.UIService.LoadingScreen.Hide();
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
|
||||
base.EnterState();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Code.App.StateMachine;
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Character.Camera;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
@@ -32,9 +33,13 @@ namespace Code.App
|
||||
|
||||
private void InitializeCamera(ContainerBuilder containerBuilder, IStaticDataService staticDataService)
|
||||
{
|
||||
CameraService cameraService = Instantiate(staticDataService.CameraConfig.cameraPrefab);
|
||||
containerBuilder.AddSingleton(cameraService);
|
||||
DontDestroyOnLoad(cameraService);
|
||||
// CameraService cameraService = Instantiate(staticDataService.CameraConfig.cameraPrefab);
|
||||
// containerBuilder.AddSingleton(cameraService);
|
||||
// DontDestroyOnLoad(cameraService);
|
||||
|
||||
Camera camera = Instantiate(staticDataService.CameraConfig.cameraPrefab2);
|
||||
DontDestroyOnLoad(camera);
|
||||
containerBuilder.AddSingleton(camera);
|
||||
}
|
||||
|
||||
private void InstallInfrastructureUnit(ContainerBuilder containerBuilder, IStaticDataService staticDataService)
|
||||
@@ -46,6 +51,7 @@ namespace Code.App
|
||||
containerBuilder.AddSingleton(infrastructureUnit.GetComponent<ICoroutineRunner>(),
|
||||
typeof(ICoroutineRunner));
|
||||
containerBuilder.AddSingleton(infrastructureUnit.AddComponent<AppStateMachine>());
|
||||
containerBuilder.AddSingleton(infrastructureUnit.AddComponent<CameraStateMachine>());
|
||||
}
|
||||
|
||||
private void InstallStaticData(ContainerBuilder containerBuilder, out IStaticDataService staticDataService)
|
||||
@@ -67,6 +73,11 @@ namespace Code.App
|
||||
|
||||
AttributeInjector.Inject(appStateMachine.StateMachineContext, container);
|
||||
|
||||
CameraStateMachine cameraStateMachine = container.Resolve<CameraStateMachine>();
|
||||
AttributeInjector.Inject(cameraStateMachine.StateMachineContext, container);
|
||||
|
||||
cameraStateMachine.Initialize();
|
||||
|
||||
// TODO: поменяно для теста
|
||||
appStateMachine
|
||||
.SwitchState(AppState.MovementDev);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Reflex.Attributes;
|
||||
@@ -8,5 +9,8 @@ namespace Code.App.StateMachine
|
||||
{
|
||||
[Inject] public ISceneLoaderService SceneLoaderService;
|
||||
[Inject] public IInputService InputService;
|
||||
[Inject] public IUIService UIService;
|
||||
[Inject] public AppStateMachine StateMachine;
|
||||
[Inject] public CameraStateMachine CameraStateMachine;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Character.Camera;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using UnityEngine;
|
||||
@@ -37,5 +38,6 @@ namespace Code.Configs
|
||||
public Vector3 defaultFollowPosition = Vector3.zero;
|
||||
|
||||
public CameraService cameraPrefab;
|
||||
public Camera cameraPrefab2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fae52abe6b44ad5bdd6e67876fe940a
|
||||
timeCreated: 1761671702
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
namespace Code.Gameplay.Character.Core
|
||||
namespace Code.Gameplay.Camera
|
||||
{
|
||||
/*
|
||||
* Перечисление режимов работы камеры
|
||||
File renamed without changes.
@@ -0,0 +1,23 @@
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Camera.CameraStates;
|
||||
using Code.StateMachine;
|
||||
|
||||
namespace Code.Gameplay.Camera
|
||||
{
|
||||
public class CameraStateMachine : AbstractStateMachine<CameraMode, CameraStateMachineContext>
|
||||
{
|
||||
// Текущий режим работы камеры
|
||||
public override void Initialize()
|
||||
{
|
||||
States.Add(CameraMode.Static, new StaticState(StateMachineContext));
|
||||
States.Add(CameraMode.FirstPerson, new FirstPersonState(StateMachineContext));
|
||||
States.Add(CameraMode.ThirdPerson, new ThirdPersonState(StateMachineContext));
|
||||
}
|
||||
|
||||
|
||||
protected override bool CheckTransitionAllowed(CameraMode nextState) => true;
|
||||
|
||||
protected override void ResetAllowedTransitions()
|
||||
{ }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b220b02510c34ea08257cc951d949fd7
|
||||
timeCreated: 1761671720
|
||||
@@ -0,0 +1,13 @@
|
||||
using Code.Configs;
|
||||
using Code.Input;
|
||||
using Reflex.Attributes;
|
||||
|
||||
namespace Code.Gameplay.Camera
|
||||
{
|
||||
public class CameraStateMachineContext
|
||||
{
|
||||
[Inject] public UnityEngine.Camera Camera;
|
||||
[Inject] public CameraConfig Config;
|
||||
[Inject] public IInputService InputService;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4f18a74bdb8947bebec56115659e5af3
|
||||
timeCreated: 1761671752
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7399e433dff42a185f62d79b546b059
|
||||
timeCreated: 1761671908
|
||||
@@ -0,0 +1,153 @@
|
||||
using System;
|
||||
using Code.Input;
|
||||
using Code.StateMachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Camera.CameraStates
|
||||
{
|
||||
public class FirstPersonState : BaseState<CameraStateMachineContext>
|
||||
{
|
||||
// Параметры загружаются из CameraConfig
|
||||
private float
|
||||
_defaultDistance,
|
||||
_minDistance,
|
||||
_maxDistance,
|
||||
_distanceMovementSpeed,
|
||||
_rotationSpeed,
|
||||
_rotationSharpness,
|
||||
_followSharpness,
|
||||
_minVerticalAngle,
|
||||
_maxVerticalAngle,
|
||||
_defaultVerticalAngle;
|
||||
|
||||
// Трансформ объекта, за которым следует камера (для 1st-person: уровень глаз)
|
||||
private Transform _followTransform;
|
||||
|
||||
// Позиция следования: текущая сглаженная позиция и горизонтальное направление камеры
|
||||
private Vector3 _currentFollowPosition;
|
||||
|
||||
// Fallback-позиция для режимов без цели (например, MainMenu)
|
||||
private Vector3 _defaultFollowPosition;
|
||||
|
||||
// Целевой вертикальный угол камеры (наклон вверх/вниз)
|
||||
private float _targetVerticalAngle;
|
||||
|
||||
// Текущая и целевая дистанция камеры от цели
|
||||
private float _currentDistance, _targetDistance;
|
||||
|
||||
// Исходные значения дистанции для восстановления после FirstPerson режима
|
||||
private float _originalDefaultDistance, _originalMinDistance, _originalMaxDistance;
|
||||
|
||||
// Горизонтальное направление камеры (проекция forward на плоскость)
|
||||
public Vector3 PlanarDirection { get; private set; }
|
||||
|
||||
private IInputService _inputService;
|
||||
private UnityEngine.Camera _camera;
|
||||
public FirstPersonState(CameraStateMachineContext context) : base(context)
|
||||
{
|
||||
_inputService = context.InputService;
|
||||
// Загрузка значений из конфига
|
||||
|
||||
_defaultDistance = context.Config.defaultDistance;
|
||||
_minDistance = context.Config.minDistance;
|
||||
_maxDistance = context.Config.maxDistance;
|
||||
_distanceMovementSpeed = context.Config.distanceMovementSpeed;
|
||||
_rotationSpeed = context.Config.rotationSpeed;
|
||||
_rotationSharpness = context.Config.rotationSharpness;
|
||||
_followSharpness = context.Config.followSharpness;
|
||||
_minVerticalAngle = context.Config.minVerticalAngle;
|
||||
_maxVerticalAngle = context.Config.maxVerticalAngle;
|
||||
_defaultVerticalAngle = context.Config.defaultVerticalAngle;
|
||||
_defaultFollowPosition = context.Config.defaultFollowPosition;
|
||||
|
||||
// Валидация значений (на случай ручного редактирования конфига)
|
||||
_defaultDistance = Mathf.Clamp(_defaultDistance, _minDistance, _maxDistance);
|
||||
_defaultVerticalAngle = Mathf.Clamp(_defaultVerticalAngle, _minVerticalAngle, _maxVerticalAngle);
|
||||
|
||||
// Сохраняем оригинальные значения для восстановления
|
||||
_originalDefaultDistance = _defaultDistance;
|
||||
_originalMinDistance = _minDistance;
|
||||
_originalMaxDistance = _maxDistance;
|
||||
|
||||
// Инициализация состояния камеры
|
||||
_currentDistance = _defaultDistance;
|
||||
_targetDistance = _currentDistance;
|
||||
_targetVerticalAngle = _defaultVerticalAngle;
|
||||
PlanarDirection = Vector3.forward; // Начальное направление - вперед по оси Z
|
||||
_currentFollowPosition = _defaultFollowPosition;
|
||||
}
|
||||
public override void EnterState()
|
||||
{
|
||||
// В FirstPerson режиме дистанция всегда равна 0
|
||||
_minDistance = 0f;
|
||||
_maxDistance = 0f;
|
||||
_defaultDistance = 0f;
|
||||
_targetDistance = 0f;
|
||||
_currentDistance = 0f;
|
||||
|
||||
_camera = Context.Camera;
|
||||
}
|
||||
|
||||
public override void LateTick()
|
||||
{
|
||||
|
||||
UpdateWithInput(Time.deltaTime,_inputService.ZoomInput, _inputService.LookInput);
|
||||
}
|
||||
// Обработка вращения камеры на основе пользовательского ввода
|
||||
private void HandleRotationInput(float deltaTime, Vector3 rotationInput, out Quaternion targetRotation)
|
||||
{
|
||||
// Вращение вокруг вертикальной оси (горизонтальный поворот)
|
||||
var rotationFromInput = Quaternion.Euler(_followTransform.up * (rotationInput.x * _rotationSpeed));
|
||||
PlanarDirection = rotationFromInput * PlanarDirection;
|
||||
var planarRotation = Quaternion.LookRotation(PlanarDirection, _followTransform.up);
|
||||
|
||||
// Вращение вокруг горизонтальной оси (вертикальный наклон)
|
||||
_targetVerticalAngle -= rotationInput.y * _rotationSpeed;
|
||||
_targetVerticalAngle = Math.Clamp(_targetVerticalAngle, _minVerticalAngle, _maxVerticalAngle);
|
||||
var verticalRotation = Quaternion.Euler(_targetVerticalAngle, 0, 0);
|
||||
|
||||
// Интерполяция к целевому вращению для плавности
|
||||
targetRotation = Quaternion.Slerp(_camera.transform.rotation, planarRotation * verticalRotation, deltaTime * _rotationSharpness);
|
||||
|
||||
|
||||
Debug.Log(_camera.transform.rotation.eulerAngles);
|
||||
// Применение финального вращения
|
||||
_camera.transform.rotation = targetRotation;
|
||||
Debug.Log(_camera.transform.rotation.eulerAngles);
|
||||
}
|
||||
|
||||
// Обработка позиционирования камеры и зума с учетом текущего режима
|
||||
private void HandlePosition(float deltaTime, float zoomInput, Quaternion targetRotation)
|
||||
{
|
||||
// Плавное следование за целью с использованием экспоненциального сглаживания
|
||||
_currentFollowPosition = Vector3.Lerp(_currentFollowPosition, _followTransform.position, 1f - Mathf.Exp(-_followSharpness * deltaTime));
|
||||
|
||||
// Вычисление целевой позиции камеры с учетом текущего режима
|
||||
Vector3 targetPosition;
|
||||
// В FirstPerson режиме камера находится прямо на позиции цели
|
||||
targetPosition = _currentFollowPosition;
|
||||
|
||||
// Установка финальной позиции камеры
|
||||
_camera.transform.position = targetPosition;
|
||||
}
|
||||
|
||||
// Основной метод обновления камеры, вызываемый извне каждый кадр
|
||||
public void UpdateWithInput(float deltaTime, float zoomInput, Vector3 rotationInput)
|
||||
{
|
||||
// Проверка наличия цели для следования и проверка на режим главного меню
|
||||
if (!_followTransform) return;
|
||||
|
||||
// Обработка ввода и позиционирования
|
||||
HandleRotationInput(deltaTime, rotationInput, out var targetRotation);
|
||||
HandlePosition(deltaTime, zoomInput, targetRotation);
|
||||
}
|
||||
|
||||
// Установка цели для следования камеры
|
||||
public void SetFollowTransform(Transform t)
|
||||
{
|
||||
_followTransform = t;
|
||||
_currentFollowPosition = t.position;
|
||||
PlanarDirection = t.forward; // Начальное направление совпадает с направлением цели
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bd4b9c56b1e435d8699160bc950994c
|
||||
timeCreated: 1761672032
|
||||
@@ -0,0 +1,23 @@
|
||||
using Code.StateMachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Camera.CameraStates
|
||||
{
|
||||
public class StaticState : BaseState<CameraStateMachineContext>
|
||||
{
|
||||
private Transform _target;
|
||||
private Transform _position;
|
||||
private UnityEngine.Camera _camera;
|
||||
public StaticState(CameraStateMachineContext context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
_camera = Context.Camera;
|
||||
|
||||
base.EnterState();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ddbcc6a073b744a08ce31c0607c1e9e9
|
||||
timeCreated: 1761671944
|
||||
@@ -0,0 +1,164 @@
|
||||
using System;
|
||||
using Code.Input;
|
||||
using Code.StateMachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Camera.CameraStates
|
||||
{
|
||||
public class ThirdPersonState : BaseState<CameraStateMachineContext>
|
||||
{
|
||||
// Параметры загружаются из CameraConfig
|
||||
private float
|
||||
_defaultDistance,
|
||||
_minDistance,
|
||||
_maxDistance,
|
||||
_distanceMovementSpeed,
|
||||
_rotationSpeed,
|
||||
_rotationSharpness,
|
||||
_followSharpness,
|
||||
_minVerticalAngle,
|
||||
_maxVerticalAngle,
|
||||
_defaultVerticalAngle;
|
||||
|
||||
// Трансформ объекта, за которым следует камера (для 1st-person: уровень глаз)
|
||||
private Transform _followTransform;
|
||||
|
||||
// Позиция следования: текущая сглаженная позиция и горизонтальное направление камеры
|
||||
private Vector3 _currentFollowPosition;
|
||||
|
||||
// Fallback-позиция для режимов без цели (например, MainMenu)
|
||||
private Vector3 _defaultFollowPosition;
|
||||
|
||||
// Целевой вертикальный угол камеры (наклон вверх/вниз)
|
||||
private float _targetVerticalAngle;
|
||||
|
||||
// Текущая и целевая дистанция камеры от цели
|
||||
private float _currentDistance, _targetDistance;
|
||||
|
||||
// Исходные значения дистанции для восстановления после FirstPerson режима
|
||||
private float _originalDefaultDistance, _originalMinDistance, _originalMaxDistance;
|
||||
|
||||
// Горизонтальное направление камеры (проекция forward на плоскость)
|
||||
public Vector3 PlanarDirection { get; private set; }
|
||||
|
||||
private IInputService _inputService;
|
||||
private UnityEngine.Camera _camera;
|
||||
|
||||
public ThirdPersonState(CameraStateMachineContext context) : base(context)
|
||||
{
|
||||
_inputService = context.InputService;
|
||||
// Загрузка значений из конфига
|
||||
|
||||
_defaultDistance = context.Config.defaultDistance;
|
||||
_minDistance = context.Config.minDistance;
|
||||
_maxDistance = context.Config.maxDistance;
|
||||
_distanceMovementSpeed = context.Config.distanceMovementSpeed;
|
||||
_rotationSpeed = context.Config.rotationSpeed;
|
||||
_rotationSharpness = context.Config.rotationSharpness;
|
||||
_followSharpness = context.Config.followSharpness;
|
||||
_minVerticalAngle = context.Config.minVerticalAngle;
|
||||
_maxVerticalAngle = context.Config.maxVerticalAngle;
|
||||
_defaultVerticalAngle = context.Config.defaultVerticalAngle;
|
||||
_defaultFollowPosition = context.Config.defaultFollowPosition;
|
||||
|
||||
// Валидация значений (на случай ручного редактирования конфига)
|
||||
_defaultDistance = Mathf.Clamp(_defaultDistance, _minDistance, _maxDistance);
|
||||
_defaultVerticalAngle = Mathf.Clamp(_defaultVerticalAngle, _minVerticalAngle, _maxVerticalAngle);
|
||||
|
||||
// Сохраняем оригинальные значения для восстановления
|
||||
_originalDefaultDistance = _defaultDistance;
|
||||
_originalMinDistance = _minDistance;
|
||||
_originalMaxDistance = _maxDistance;
|
||||
|
||||
// Инициализация состояния камеры
|
||||
_currentDistance = _defaultDistance;
|
||||
_targetDistance = _currentDistance;
|
||||
_targetVerticalAngle = _defaultVerticalAngle;
|
||||
PlanarDirection = Vector3.forward; // Начальное направление - вперед по оси Z
|
||||
_currentFollowPosition = _defaultFollowPosition;
|
||||
}
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
// Восстанавливаем исходные значения дистанции
|
||||
_minDistance = _originalMinDistance;
|
||||
_maxDistance = _originalMaxDistance;
|
||||
_defaultDistance = _originalDefaultDistance;
|
||||
_targetDistance = _defaultDistance;
|
||||
|
||||
_camera = Context.Camera;
|
||||
}
|
||||
|
||||
public override void LateTick()
|
||||
{
|
||||
UpdateWithInput(Time.deltaTime, _inputService.ZoomInput, _inputService.LookInput);
|
||||
}
|
||||
|
||||
// Основной метод обновления камеры, вызываемый извне каждый кадр
|
||||
public void UpdateWithInput(float deltaTime, float zoomInput, Vector3 rotationInput)
|
||||
{
|
||||
// Проверка наличия цели для следования и проверка на режим главного меню
|
||||
if (!_followTransform) return;
|
||||
|
||||
// Обработка ввода и позиционирования
|
||||
HandleRotationInput(deltaTime, rotationInput, out var targetRotation);
|
||||
HandlePosition(deltaTime, zoomInput, targetRotation);
|
||||
}
|
||||
|
||||
// Обработка вращения камеры на основе пользовательского ввода
|
||||
private void HandleRotationInput(float deltaTime, Vector3 rotationInput, out Quaternion targetRotation)
|
||||
{
|
||||
// Вращение вокруг вертикальной оси (горизонтальный поворот)
|
||||
var rotationFromInput = Quaternion.Euler(_followTransform.up * (rotationInput.x * _rotationSpeed));
|
||||
PlanarDirection = rotationFromInput * PlanarDirection;
|
||||
var planarRotation = Quaternion.LookRotation(PlanarDirection, _followTransform.up);
|
||||
|
||||
// Вращение вокруг горизонтальной оси (вертикальный наклон)
|
||||
_targetVerticalAngle -= rotationInput.y * _rotationSpeed;
|
||||
_targetVerticalAngle = Math.Clamp(_targetVerticalAngle, _minVerticalAngle, _maxVerticalAngle);
|
||||
var verticalRotation = Quaternion.Euler(_targetVerticalAngle, 0, 0);
|
||||
|
||||
// Интерполяция к целевому вращению для плавности
|
||||
targetRotation = Quaternion.Slerp(_camera.transform.rotation, planarRotation * verticalRotation,
|
||||
deltaTime * _rotationSharpness);
|
||||
|
||||
// Применение финального вращения
|
||||
_camera.transform.rotation = targetRotation;
|
||||
}
|
||||
|
||||
// Обработка позиционирования камеры и зума с учетом текущего режима
|
||||
private void HandlePosition(float deltaTime, float zoomInput, Quaternion targetRotation)
|
||||
{
|
||||
// Обновление целевой дистанции на основе ввода зума
|
||||
_targetDistance += zoomInput * _distanceMovementSpeed;
|
||||
_targetDistance = Mathf.Clamp(_targetDistance, _minDistance, _maxDistance);
|
||||
|
||||
// Плавное следование за целью с использованием экспоненциального сглаживания
|
||||
_currentFollowPosition = Vector3.Lerp(_currentFollowPosition, _followTransform.position,
|
||||
1f - Mathf.Exp(-_followSharpness * deltaTime));
|
||||
|
||||
// Вычисление целевой позиции камеры с учетом текущего режима
|
||||
Vector3 targetPosition;
|
||||
|
||||
// В ThirdPerson режиме камера отодвинута на расстояние от цели
|
||||
targetPosition = _currentFollowPosition - targetRotation * Vector3.forward * _currentDistance;
|
||||
|
||||
// Плавное изменение текущей дистанции к целевой (только для ThirdPerson)
|
||||
|
||||
_currentDistance = Mathf.Lerp(_currentDistance, _targetDistance,
|
||||
1f - Mathf.Exp(-_distanceMovementSpeed * deltaTime));
|
||||
|
||||
|
||||
// Установка финальной позиции камеры
|
||||
_camera.transform.position = targetPosition;
|
||||
}
|
||||
|
||||
// Установка цели для следования камеры
|
||||
public void SetFollowTransform(Transform t)
|
||||
{
|
||||
_followTransform = t;
|
||||
_currentFollowPosition = t.position;
|
||||
PlanarDirection = t.forward; // Начальное направление совпадает с направлением цели
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ec6778ceb9854ff8af7cba4f6285c370
|
||||
timeCreated: 1761672071
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using Code.Configs;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using Code.StaticData;
|
||||
using Reflex.Attributes;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using KinematicCharacterController;
|
||||
using UnityEngine;
|
||||
using Code.Gameplay.Character.Core;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Character.Controller.Abilities;
|
||||
using Code.Gameplay.Character.Controller.Input;
|
||||
using Code.Gameplay.Character.Controller.Movement;
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using UnityEngine;
|
||||
using Code.Gameplay.Character.Core;
|
||||
using KinematicCharacterController;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Camera.CameraStates;
|
||||
using Code.Gameplay.Character.Camera;
|
||||
using Code.Gameplay.Character.Controller;
|
||||
using Code.Input;
|
||||
@@ -15,7 +17,7 @@ namespace Code.Gameplay.Character.Core
|
||||
*/
|
||||
public class Character : MonoBehaviour
|
||||
{
|
||||
[Inject] private CameraService _cameraService; // Компонент камеры персонажа
|
||||
[Inject] private CameraStateMachine _cameraService; // Компонент камеры персонажа
|
||||
[SerializeField] private CustomCharacterController customCharacterController; // Компонент управления персонажем
|
||||
[SerializeField] private Transform cameraFollowPoint; // Точка следования камеры (уровень глаз для FirstPerson)
|
||||
|
||||
@@ -28,25 +30,12 @@ namespace Code.Gameplay.Character.Core
|
||||
private void Start()
|
||||
{
|
||||
// Настройка камеры для следования за точкой камеры
|
||||
_cameraService.SetFollowTransform(cameraFollowPoint);
|
||||
_cameraService.SetCameraMode(CameraMode.FirstPerson);
|
||||
((FirstPersonState)_cameraService.CurrentBaseState).SetFollowTransform(cameraFollowPoint);
|
||||
|
||||
// Включение Gameplay мапа ввода
|
||||
_inputService.EnableMap(ActionMappings.Gameplay);
|
||||
}
|
||||
|
||||
// Обработка ввода для камеры (вращение и зум)
|
||||
private void HandleCameraInput()
|
||||
{
|
||||
// Получаем данные ввода из Input System
|
||||
var lookInput = _inputService.LookInput;
|
||||
var scrollInput = _inputService.ZoomInput;
|
||||
|
||||
// Передаем данные в камеру
|
||||
_cameraService.UpdateWithInput(Time.deltaTime, scrollInput,
|
||||
new Vector3(lookInput.x, lookInput.y, 0));
|
||||
}
|
||||
|
||||
// Обработка ввода для движения персонажа
|
||||
private void HandleCharacterInput()
|
||||
{
|
||||
@@ -63,8 +52,6 @@ namespace Code.Gameplay.Character.Core
|
||||
|
||||
// Передаем информацию о камере для адаптивного поведения
|
||||
inputs.CameraRotation = _cameraService.transform.rotation;
|
||||
inputs.CameraMode = _cameraService.CurrentMode;
|
||||
inputs.CameraPlanarDirection = _cameraService.PlanarDirection;
|
||||
|
||||
// Передаем ввод в контроллер персонажа
|
||||
customCharacterController.SetInputs(ref inputs);
|
||||
@@ -80,7 +67,7 @@ namespace Code.Gameplay.Character.Core
|
||||
{
|
||||
// Обрабатываем нажатие только один раз при первом обнаружении
|
||||
case true when !_cameraModeToggleHandled:
|
||||
ToggleCameraMode();
|
||||
// ToggleCameraMode();
|
||||
_cameraModeToggleHandled = true;
|
||||
break;
|
||||
// Сбрасываем флаг когда кнопка отпущена
|
||||
@@ -90,15 +77,6 @@ namespace Code.Gameplay.Character.Core
|
||||
}
|
||||
}
|
||||
|
||||
// Метод для переключения режимов камеры
|
||||
private void ToggleCameraMode()
|
||||
{
|
||||
var currentMode = _cameraService.CurrentMode;
|
||||
var newMode = currentMode == CameraMode.FirstPerson ? CameraMode.ThirdPerson : CameraMode.FirstPerson;
|
||||
|
||||
_cameraService.SetCameraMode(newMode);
|
||||
}
|
||||
|
||||
// Обновление логики каждый кадр
|
||||
private void Update()
|
||||
{
|
||||
@@ -112,8 +90,6 @@ namespace Code.Gameplay.Character.Core
|
||||
// Обновление после всех вычислений (идеально для камеры)
|
||||
private void LateUpdate()
|
||||
{
|
||||
// Обработка ввода для камеры в LateUpdate (после движения персонажа)
|
||||
HandleCameraInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using Code.Gameplay.Camera;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Character.Core
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -7,6 +8,7 @@ namespace Code.StateMachine
|
||||
: MonoBehaviour
|
||||
where TStateMachineContext : new()
|
||||
{
|
||||
public TStateEnum CurrentState { get; private set; }
|
||||
public BaseState<TStateMachineContext> CurrentBaseState { get; private set; }
|
||||
private BaseState<TStateMachineContext> _previousBaseState;
|
||||
|
||||
@@ -20,6 +22,10 @@ namespace Code.StateMachine
|
||||
CurrentBaseState.Tick();
|
||||
}
|
||||
|
||||
protected void LateUpdate()
|
||||
{
|
||||
CurrentBaseState.LateTick();
|
||||
}
|
||||
public abstract void Initialize();
|
||||
|
||||
// Костыли 2 шт. для флагового енама в шаблонах
|
||||
@@ -53,6 +59,8 @@ namespace Code.StateMachine
|
||||
CurrentBaseState.EnterState();
|
||||
}
|
||||
|
||||
CurrentState = nextState;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace Code.StateMachine
|
||||
public virtual void EnterState() => OnEntered?.Invoke();
|
||||
|
||||
public virtual void Tick(){}
|
||||
public virtual void LateTick(){}
|
||||
|
||||
public virtual void ExitState() => OnExited?.Invoke();
|
||||
}
|
||||
|
||||
@@ -25,3 +25,4 @@ MonoBehaviour:
|
||||
defaultCameraMode: 0
|
||||
defaultFollowPosition: {x: 0, y: 0, z: 0}
|
||||
cameraPrefab: {fileID: 4646144043143727929, guid: 8b8bf5712dc5a42c7bd8e22cddb884c3, type: 3}
|
||||
cameraPrefab2: {fileID: 374984699890489845, guid: 8b8bf5712dc5a42c7bd8e22cddb884c3, type: 3}
|
||||
@@ -91,7 +91,6 @@ GameObject:
|
||||
- component: {fileID: 374984699890489845}
|
||||
- component: {fileID: 4075496901397588323}
|
||||
- component: {fileID: 7468744325105696788}
|
||||
- component: {fileID: 4646144043143727929}
|
||||
m_Layer: 0
|
||||
m_Name: Camera
|
||||
m_TagString: Untagged
|
||||
@@ -218,15 +217,3 @@ MonoBehaviour:
|
||||
m_VarianceClampScale: 0.9
|
||||
m_ContrastAdaptiveSharpening: 0
|
||||
m_Version: 2
|
||||
--- !u!114 &4646144043143727929
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6099115053225634464}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f1d98e6c5419411098391c07861e627e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Gameplay.Character.Camera.CameraService
|
||||
@@ -208,166 +208,6 @@ MeshFilter:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 55880351}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!1 &338454659
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 338454662}
|
||||
- component: {fileID: 338454661}
|
||||
- component: {fileID: 338454660}
|
||||
- component: {fileID: 338454663}
|
||||
- component: {fileID: 338454664}
|
||||
m_Layer: 0
|
||||
m_Name: CharacterCamera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &338454660
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 338454659}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &338454661
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 338454659}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_Iso: 200
|
||||
m_ShutterSpeed: 0.005
|
||||
m_Aperture: 16
|
||||
m_FocusDistance: 10
|
||||
m_FocalLength: 50
|
||||
m_BladeCount: 5
|
||||
m_Curvature: {x: 2, y: 11}
|
||||
m_BarrelClipping: 0.25
|
||||
m_Anamorphism: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &338454662
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 338454659}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &338454663
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 338454659}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData
|
||||
m_RenderShadows: 1
|
||||
m_RequiresDepthTextureOption: 2
|
||||
m_RequiresOpaqueTextureOption: 2
|
||||
m_CameraType: 0
|
||||
m_Cameras: []
|
||||
m_RendererIndex: -1
|
||||
m_VolumeLayerMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 1
|
||||
m_VolumeTrigger: {fileID: 0}
|
||||
m_VolumeFrameworkUpdateModeOption: 2
|
||||
m_RenderPostProcessing: 0
|
||||
m_Antialiasing: 0
|
||||
m_AntialiasingQuality: 2
|
||||
m_StopNaN: 0
|
||||
m_Dithering: 0
|
||||
m_ClearDepth: 1
|
||||
m_AllowXRRendering: 1
|
||||
m_AllowHDROutput: 1
|
||||
m_UseScreenCoordOverride: 0
|
||||
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_RequiresDepthTexture: 0
|
||||
m_RequiresColorTexture: 0
|
||||
m_TaaSettings:
|
||||
m_Quality: 3
|
||||
m_FrameInfluence: 0.1
|
||||
m_JitterScale: 1
|
||||
m_MipBias: 0
|
||||
m_VarianceClampScale: 0.9
|
||||
m_ContrastAdaptiveSharpening: 0
|
||||
m_Version: 2
|
||||
--- !u!114 &338454664
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 338454659}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f1d98e6c5419411098391c07861e627e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Gameplay.Player.PlayerCamera
|
||||
defaultDistance: 6
|
||||
minDistance: 3
|
||||
maxDistance: 10
|
||||
distanceMovementSpeed: 5
|
||||
rotationSpeed: 0.3
|
||||
rotationSharpness: 100
|
||||
followSharpness: 100
|
||||
minVerticalAngle: -70
|
||||
maxVerticalAngle: 70
|
||||
defaultVerticalAngle: 10
|
||||
--- !u!1 &453575297
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -904,7 +744,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 9f2cdbe59523ace7ab0d8dfc36b4eb02, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Player
|
||||
characterCamera: {fileID: 338454664}
|
||||
customCharacterController: {fileID: 1696686258}
|
||||
cameraFollowPoint: {fileID: 453575298}
|
||||
--- !u!114 &1696686256
|
||||
@@ -1044,7 +883,6 @@ Transform:
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 338454662}
|
||||
- {fileID: 1959874991}
|
||||
- {fileID: 1696686254}
|
||||
- {fileID: 481156070}
|
||||
|
||||
@@ -0,0 +1,690 @@
|
||||
%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: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
m_Name: SOUTHGHETTO SDF
|
||||
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TMP_FontAsset
|
||||
m_Version: 1.1.0
|
||||
m_FaceInfo:
|
||||
m_FaceIndex: 0
|
||||
m_FamilyName: SouthGhetto
|
||||
m_StyleName: Regular
|
||||
m_PointSize: 90
|
||||
m_Scale: 1
|
||||
m_UnitsPerEM: 1000
|
||||
m_LineHeight: 99
|
||||
m_AscentLine: 67.5
|
||||
m_CapLine: 63
|
||||
m_MeanLine: 63
|
||||
m_Baseline: 0
|
||||
m_DescentLine: -22.5
|
||||
m_SuperscriptOffset: 67.5
|
||||
m_SuperscriptSize: 0.5
|
||||
m_SubscriptOffset: -22.5
|
||||
m_SubscriptSize: 0.5
|
||||
m_UnderlineOffset: -11.25
|
||||
m_UnderlineThickness: 4.5
|
||||
m_StrikethroughOffset: 25.2
|
||||
m_StrikethroughThickness: 4.5
|
||||
m_TabWidth: 23
|
||||
m_Material: {fileID: 1091306912205572362}
|
||||
m_SourceFontFileGUID: 4c18ae64a0f1d59239a927890bc9aa3f
|
||||
m_CreationSettings:
|
||||
sourceFontFileName:
|
||||
sourceFontFileGUID: 4c18ae64a0f1d59239a927890bc9aa3f
|
||||
faceIndex: 0
|
||||
pointSizeSamplingMode: 0
|
||||
pointSize: 90
|
||||
padding: 9
|
||||
paddingMode: 2
|
||||
packingMode: 0
|
||||
atlasWidth: 1024
|
||||
atlasHeight: 1024
|
||||
characterSetSelectionMode: 7
|
||||
characterSequence:
|
||||
referencedFontAssetGUID:
|
||||
referencedTextAssetGUID:
|
||||
fontStyle: 0
|
||||
fontStyleModifier: 0
|
||||
renderMode: 4165
|
||||
includeFontFeatures: 0
|
||||
m_SourceFontFile: {fileID: 12800000, guid: 4c18ae64a0f1d59239a927890bc9aa3f, type: 3}
|
||||
m_SourceFontFilePath:
|
||||
m_AtlasPopulationMode: 1
|
||||
InternalDynamicOS: 0
|
||||
m_GlyphTable:
|
||||
- m_Index: 30
|
||||
m_Metrics:
|
||||
m_Width: 51.296875
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 56.703125
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 10
|
||||
m_Width: 52
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 60
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 92
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 67
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 174
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 64
|
||||
m_Metrics:
|
||||
m_Width: 31.40625
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 36.8125
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 256
|
||||
m_Width: 33
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 77
|
||||
m_Metrics:
|
||||
m_Width: 53.09375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 58.5
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 338
|
||||
m_Width: 54
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 73
|
||||
m_Metrics:
|
||||
m_Width: 52.203125
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 55.984375
|
||||
m_GlyphRect:
|
||||
m_X: 62
|
||||
m_Y: 256
|
||||
m_Width: 53
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 94
|
||||
m_Metrics:
|
||||
m_Width: 51.296875
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 56.703125
|
||||
m_GlyphRect:
|
||||
m_X: 79
|
||||
m_Y: 92
|
||||
m_Width: 52
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 121
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 81
|
||||
m_Y: 10
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 134
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 79
|
||||
m_Y: 174
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 118
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 420
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 136
|
||||
m_Metrics:
|
||||
m_Width: 51.296875
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 56.703125
|
||||
m_GlyphRect:
|
||||
m_X: 10
|
||||
m_Y: 502
|
||||
m_Width: 52
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 146
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 79
|
||||
m_Y: 420
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 88
|
||||
m_Metrics:
|
||||
m_Width: 49.234375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 54.625
|
||||
m_GlyphRect:
|
||||
m_X: 83
|
||||
m_Y: 338
|
||||
m_Width: 50
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 145
|
||||
m_Metrics:
|
||||
m_Width: 66.59375
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 72
|
||||
m_GlyphRect:
|
||||
m_X: 134
|
||||
m_Y: 256
|
||||
m_Width: 68
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 127
|
||||
m_Metrics:
|
||||
m_Width: 51.296875
|
||||
m_Height: 81.359375
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 81.359375
|
||||
m_HorizontalAdvance: 56.703125
|
||||
m_GlyphRect:
|
||||
m_X: 150
|
||||
m_Y: 10
|
||||
m_Width: 52
|
||||
m_Height: 82
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
- m_Index: 126
|
||||
m_Metrics:
|
||||
m_Width: 51.296875
|
||||
m_Height: 63
|
||||
m_HorizontalBearingX: 2.703125
|
||||
m_HorizontalBearingY: 63
|
||||
m_HorizontalAdvance: 56.703125
|
||||
m_GlyphRect:
|
||||
m_X: 148
|
||||
m_Y: 174
|
||||
m_Width: 52
|
||||
m_Height: 63
|
||||
m_Scale: 1
|
||||
m_AtlasIndex: 0
|
||||
m_ClassDefinitionType: 0
|
||||
m_CharacterTable:
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 68
|
||||
m_GlyphIndex: 30
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 101
|
||||
m_GlyphIndex: 60
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 108
|
||||
m_GlyphIndex: 67
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 105
|
||||
m_GlyphIndex: 64
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 118
|
||||
m_GlyphIndex: 77
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 114
|
||||
m_GlyphIndex: 73
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1048
|
||||
m_GlyphIndex: 94
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1075
|
||||
m_GlyphIndex: 121
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1088
|
||||
m_GlyphIndex: 134
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1072
|
||||
m_GlyphIndex: 118
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1090
|
||||
m_GlyphIndex: 136
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1100
|
||||
m_GlyphIndex: 146
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1042
|
||||
m_GlyphIndex: 88
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1099
|
||||
m_GlyphIndex: 145
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1081
|
||||
m_GlyphIndex: 127
|
||||
m_Scale: 1
|
||||
- m_ElementType: 1
|
||||
m_Unicode: 1080
|
||||
m_GlyphIndex: 126
|
||||
m_Scale: 1
|
||||
m_AtlasTextures:
|
||||
- {fileID: 688428377202190775}
|
||||
m_AtlasTextureIndex: 0
|
||||
m_IsMultiAtlasTexturesEnabled: 0
|
||||
m_GetFontFeatures: 1
|
||||
m_ClearDynamicDataOnBuild: 1
|
||||
m_AtlasWidth: 1024
|
||||
m_AtlasHeight: 1024
|
||||
m_AtlasPadding: 9
|
||||
m_AtlasRenderMode: 4165
|
||||
m_UsedGlyphRects:
|
||||
- m_X: 0
|
||||
m_Y: 0
|
||||
m_Width: 71
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 82
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 164
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 246
|
||||
m_Width: 52
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 328
|
||||
m_Width: 73
|
||||
m_Height: 82
|
||||
- m_X: 52
|
||||
m_Y: 246
|
||||
m_Width: 72
|
||||
m_Height: 82
|
||||
- m_X: 69
|
||||
m_Y: 82
|
||||
m_Width: 71
|
||||
m_Height: 82
|
||||
- m_X: 71
|
||||
m_Y: 0
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 69
|
||||
m_Y: 164
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 410
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 0
|
||||
m_Y: 492
|
||||
m_Width: 71
|
||||
m_Height: 82
|
||||
- m_X: 69
|
||||
m_Y: 410
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 73
|
||||
m_Y: 328
|
||||
m_Width: 69
|
||||
m_Height: 82
|
||||
- m_X: 124
|
||||
m_Y: 246
|
||||
m_Width: 87
|
||||
m_Height: 82
|
||||
- m_X: 140
|
||||
m_Y: 0
|
||||
m_Width: 71
|
||||
m_Height: 101
|
||||
- m_X: 138
|
||||
m_Y: 164
|
||||
m_Width: 71
|
||||
m_Height: 82
|
||||
m_FreeGlyphRects:
|
||||
- m_X: 0
|
||||
m_Y: 574
|
||||
m_Width: 1023
|
||||
m_Height: 449
|
||||
- m_X: 71
|
||||
m_Y: 492
|
||||
m_Width: 952
|
||||
m_Height: 531
|
||||
- m_X: 138
|
||||
m_Y: 410
|
||||
m_Width: 885
|
||||
m_Height: 613
|
||||
- m_X: 142
|
||||
m_Y: 328
|
||||
m_Width: 881
|
||||
m_Height: 695
|
||||
- m_X: 211
|
||||
m_Y: 0
|
||||
m_Width: 812
|
||||
m_Height: 1023
|
||||
- m_X: 140
|
||||
m_Y: 101
|
||||
m_Width: 883
|
||||
m_Height: 63
|
||||
- m_X: 209
|
||||
m_Y: 101
|
||||
m_Width: 814
|
||||
m_Height: 145
|
||||
m_FontFeatureTable:
|
||||
m_MultipleSubstitutionRecords: []
|
||||
m_LigatureSubstitutionRecords: []
|
||||
m_GlyphPairAdjustmentRecords: []
|
||||
m_MarkToBaseAdjustmentRecords: []
|
||||
m_MarkToMarkAdjustmentRecords: []
|
||||
m_ShouldReimportFontFeatures: 0
|
||||
m_FallbackFontAssetTable: []
|
||||
m_FontWeightTable:
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
fontWeights: []
|
||||
normalStyle: 0
|
||||
normalSpacingOffset: 0
|
||||
boldStyle: 0.75
|
||||
boldSpacing: 7
|
||||
italicStyle: 35
|
||||
tabSize: 10
|
||||
m_fontInfo:
|
||||
Name:
|
||||
PointSize: 0
|
||||
Scale: 0
|
||||
CharacterCount: 0
|
||||
LineHeight: 0
|
||||
Baseline: 0
|
||||
Ascender: 0
|
||||
CapHeight: 0
|
||||
Descender: 0
|
||||
CenterLine: 0
|
||||
SuperscriptOffset: 0
|
||||
SubscriptOffset: 0
|
||||
SubSize: 0
|
||||
Underline: 0
|
||||
UnderlineThickness: 0
|
||||
strikethrough: 0
|
||||
strikethroughThickness: 0
|
||||
TabWidth: 0
|
||||
Padding: 0
|
||||
AtlasWidth: 0
|
||||
AtlasHeight: 0
|
||||
m_glyphInfoList: []
|
||||
m_KerningTable:
|
||||
kerningPairs: []
|
||||
fallbackFontAssets: []
|
||||
atlas: {fileID: 0}
|
||||
--- !u!28 &688428377202190775
|
||||
Texture2D:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SOUTHGHETTO Atlas
|
||||
m_ImageContentsHash:
|
||||
serializedVersion: 2
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 4
|
||||
m_Width: 1024
|
||||
m_Height: 1024
|
||||
m_CompleteImageSize: 1048576
|
||||
m_MipsStripped: 0
|
||||
m_TextureFormat: 1
|
||||
m_MipCount: 1
|
||||
m_IsReadable: 1
|
||||
m_IsPreProcessed: 0
|
||||
m_IgnoreMipmapLimit: 1
|
||||
m_MipmapLimitGroupName:
|
||||
m_StreamingMipmaps: 0
|
||||
m_StreamingMipmapsPriority: 0
|
||||
m_VTOnly: 0
|
||||
m_AlphaIsTransparency: 0
|
||||
m_ImageCount: 1
|
||||
m_TextureDimension: 2
|
||||
m_TextureSettings:
|
||||
serializedVersion: 2
|
||||
m_FilterMode: 1
|
||||
m_Aniso: 1
|
||||
m_MipBias: 0
|
||||
m_WrapU: 0
|
||||
m_WrapV: 0
|
||||
m_WrapW: 0
|
||||
m_LightmapFormat: 0
|
||||
m_ColorSpace: 1
|
||||
m_PlatformBlob:
|
||||
image data: 1048576
|
||||
_typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313131313131313131212121212121212121212121212121212121212110f0d0a0706040100000000000000000000000000000000000000000000000000000407090a1313131313131313131313130e0d0b07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a13131313131313131313131311070604000000000000000000000000000000000001070b0f111213131313131313131313131313120f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416172020202020202020202020201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c1a171413110d080100000000000000000000000000000000000000000000050b101416172020202020202020202020201a1a17130e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416172020202020202020202020201e1413100c070100000000000000000000000000050c12171b1d1e202020202020202020202020201e1b16100901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
m_StreamData:
|
||||
serializedVersion: 2
|
||||
offset: 0
|
||||
size: 0
|
||||
path:
|
||||
--- !u!21 &1091306912205572362
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SOUTHGHETTO Atlas Material
|
||||
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Cube:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _FaceTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 688428377202190775}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OutlineTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _Ambient: 0.5
|
||||
- _Bevel: 0.5
|
||||
- _BevelClamp: 0
|
||||
- _BevelOffset: 0
|
||||
- _BevelRoundness: 0
|
||||
- _BevelWidth: 0
|
||||
- _BumpFace: 0
|
||||
- _BumpOutline: 0
|
||||
- _ColorMask: 15
|
||||
- _CullMode: 0
|
||||
- _Diffuse: 0.5
|
||||
- _FaceDilate: 0
|
||||
- _FaceUVSpeedX: 0
|
||||
- _FaceUVSpeedY: 0
|
||||
- _GlowInner: 0.05
|
||||
- _GlowOffset: 0
|
||||
- _GlowOuter: 0.05
|
||||
- _GlowPower: 0.75
|
||||
- _GradientScale: 10
|
||||
- _LightAngle: 3.1416
|
||||
- _MaskSoftnessX: 0
|
||||
- _MaskSoftnessY: 0
|
||||
- _OutlineSoftness: 0
|
||||
- _OutlineUVSpeedX: 0
|
||||
- _OutlineUVSpeedY: 0
|
||||
- _OutlineWidth: 0
|
||||
- _PerspectiveFilter: 0.875
|
||||
- _Reflectivity: 10
|
||||
- _ScaleRatioA: 0.9
|
||||
- _ScaleRatioB: 0.73125
|
||||
- _ScaleRatioC: 0.73125
|
||||
- _ScaleX: 1
|
||||
- _ScaleY: 1
|
||||
- _ShaderFlags: 0
|
||||
- _Sharpness: 0
|
||||
- _SpecularPower: 2
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _TextureHeight: 1024
|
||||
- _TextureWidth: 1024
|
||||
- _UnderlayDilate: 0
|
||||
- _UnderlayOffsetX: 0
|
||||
- _UnderlayOffsetY: 0
|
||||
- _UnderlaySoftness: 0
|
||||
- _VertexOffsetX: 0
|
||||
- _VertexOffsetY: 0
|
||||
- _WeightBold: 0.75
|
||||
- _WeightNormal: 0
|
||||
m_Colors:
|
||||
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
|
||||
- _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _FaceColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
|
||||
- _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
|
||||
- _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
Reference in new issue
Block a user