better lab1

This commit is contained in:
MrTorex committed 2026-02-06 13:47:10 +03:00
1 parent 4abec81e5f
commit e2c87a9ec8
4 files changed
+5583 -1

No files matched your search

+218
View File
@@ -0,0 +1,218 @@
using Code.Base;
using Code.Lab1;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace Code.UI
{
public class Lab1Controller : MonoBehaviour
{
[SerializeField] private Agent pursueAgent;
[SerializeField] private Agent evadeAgent;
[SerializeField] private Transform pursueWrapper;
[SerializeField] private Transform evadeWrapper;
[SerializeField] private Button exitButton;
private Slider _pursueMaxPredictionSlider;
private Slider _pursueMaxSpeedSlider;
private Slider _pursueMaxAccelerationSlider;
private Slider _pursueOrientationSlider;
private Slider _evadeMaxPredictionSlider;
private Slider _evadeMaxSpeedSlider;
private Slider _evadeMaxAccelerationSlider;
private Slider _evadeOrientationSlider;
private TMP_Text _pursueRotationVelocityText;
private TMP_Text _evadeRotationVelocityText;
private Pursue _pursueBehaviour;
private Evade _evadeBehaviour;
private void Awake()
{
_pursueMaxPredictionSlider = GetSlider(pursueWrapper, "MaxPredictionSlider");
_pursueMaxSpeedSlider = GetSlider(pursueWrapper, "MaxSpeedSlider");
_pursueMaxAccelerationSlider = GetSlider(pursueWrapper, "MaxAccelerationSlider");
_pursueOrientationSlider = GetSlider(pursueWrapper, "OrientationSlider");
_evadeMaxPredictionSlider = GetSlider(evadeWrapper, "MaxPredictionSlider");
_evadeMaxSpeedSlider = GetSlider(evadeWrapper, "MaxSpeedSlider");
_evadeMaxAccelerationSlider = GetSlider(evadeWrapper, "MaxAccelerationSlider");
_evadeOrientationSlider = GetSlider(evadeWrapper, "OrientationSlider");
_pursueRotationVelocityText = GetText(pursueWrapper, "RotationVelocityText");
_evadeRotationVelocityText = GetText(evadeWrapper, "RotationVelocityText");
_pursueBehaviour = pursueAgent.GetComponent<Pursue>();
_evadeBehaviour = evadeAgent.GetComponent<Evade>();
if (_pursueBehaviour == null)
Debug.LogWarning("PursueBehaviour not found on PursueAgent!");
if (_evadeBehaviour == null)
Debug.LogWarning("EvadeBehaviour not found on EvadeAgent!");
if (exitButton != null)
exitButton.onClick.AddListener(LoadMainMenu);
}
private void Start()
{
UpdatePursueSliders();
UpdateEvadeSliders();
if (_pursueMaxPredictionSlider != null)
_pursueMaxPredictionSlider.onValueChanged.AddListener(OnPursueMaxPredictionChanged);
if (_pursueMaxSpeedSlider != null)
_pursueMaxSpeedSlider.onValueChanged.AddListener(OnPursueMaxSpeedChanged);
if (_pursueMaxAccelerationSlider != null)
_pursueMaxAccelerationSlider.onValueChanged.AddListener(OnPursueMaxAccelerationChanged);
if (_pursueOrientationSlider != null)
_pursueOrientationSlider.onValueChanged.AddListener(OnPursueOrientationChanged);
if (_evadeMaxPredictionSlider != null)
_evadeMaxPredictionSlider.onValueChanged.AddListener(OnEvadeMaxPredictionChanged);
if (_evadeMaxSpeedSlider != null)
_evadeMaxSpeedSlider.onValueChanged.AddListener(OnEvadeMaxSpeedChanged);
if (_evadeMaxAccelerationSlider != null)
_evadeMaxAccelerationSlider.onValueChanged.AddListener(OnEvadeMaxAccelerationChanged);
if (_evadeOrientationSlider != null)
_evadeOrientationSlider.onValueChanged.AddListener(OnEvadeOrientationChanged);
}
private void Update()
{
UpdatePursueSliders();
UpdateEvadeSliders();
}
private static Slider GetSlider(Transform parent, string sliderName)
{
var sliderObj = parent.Find(sliderName);
return sliderObj != null ? sliderObj.GetComponent<Slider>() : null;
}
private static TMP_Text GetText(Transform parent, string textName)
{
var textObj = parent.Find(textName);
return textObj != null ? textObj.GetComponent<TMP_Text>() : null;
}
private void UpdatePursueSliders()
{
if (_pursueBehaviour == null) return;
if (_pursueMaxPredictionSlider != null)
_pursueMaxPredictionSlider.value = _pursueBehaviour.maxPrediction;
if (_pursueMaxSpeedSlider != null)
_pursueMaxSpeedSlider.value = pursueAgent.maxSpeed;
if (_pursueMaxAccelerationSlider != null)
_pursueMaxAccelerationSlider.value = pursueAgent.maxAcceleration;
if (_pursueOrientationSlider != null)
_pursueOrientationSlider.value = pursueAgent.orientation;
if (_pursueRotationVelocityText == null) return;
var rotation = pursueAgent.rotation;
var velocity = pursueAgent.velocity;
_pursueRotationVelocityText.text =
$"Rotation: {rotation:F2}\nVelocity: X {velocity.x:F2} Y {velocity.y:F2} Z {velocity.z:F2}";
}
private void OnPursueMaxPredictionChanged(float value)
{
if (_pursueBehaviour != null) _pursueBehaviour.maxPrediction = value;
}
private void OnPursueMaxSpeedChanged(float value)
{
if (pursueAgent != null) pursueAgent.maxSpeed = value;
}
private void OnPursueMaxAccelerationChanged(float value)
{
if (pursueAgent != null) pursueAgent.maxAcceleration = value;
}
private void OnPursueOrientationChanged(float value)
{
if (pursueAgent != null) pursueAgent.orientation = value % 360f;
}
private void UpdateEvadeSliders()
{
if (_evadeBehaviour == null) return;
if (_evadeMaxPredictionSlider != null)
_evadeMaxPredictionSlider.value = _evadeBehaviour.maxPrediction;
if (_evadeMaxSpeedSlider != null)
_evadeMaxSpeedSlider.value = evadeAgent.maxSpeed;
if (_evadeMaxAccelerationSlider != null)
_evadeMaxAccelerationSlider.value = evadeAgent.maxAcceleration;
if (_evadeOrientationSlider != null)
_evadeOrientationSlider.value = evadeAgent.orientation;
if (_evadeRotationVelocityText == null) return;
var rotation = evadeAgent.rotation;
var velocity = evadeAgent.velocity;
_evadeRotationVelocityText.text =
$"Rotation: {rotation:F2}\nVelocity: X {velocity.x:F2} Y {velocity.y:F2} Z {velocity.z:F2}";
}
private void OnEvadeMaxPredictionChanged(float value)
{
if (_evadeBehaviour != null) _evadeBehaviour.maxPrediction = value;
}
private void OnEvadeMaxSpeedChanged(float value)
{
if (evadeAgent != null) evadeAgent.maxSpeed = value;
}
private void OnEvadeMaxAccelerationChanged(float value)
{
if (evadeAgent != null) evadeAgent.maxAcceleration = value;
}
private void OnEvadeOrientationChanged(float value)
{
if (evadeAgent != null) evadeAgent.orientation = value % 360f;
}
private static void LoadMainMenu()
{
SceneManager.LoadScene("MainMenu");
}
private void OnDestroy()
{
if (_pursueMaxPredictionSlider != null)
_pursueMaxPredictionSlider.onValueChanged.RemoveListener(OnPursueMaxPredictionChanged);
if (_pursueMaxSpeedSlider != null)
_pursueMaxSpeedSlider.onValueChanged.RemoveListener(OnPursueMaxSpeedChanged);
if (_pursueMaxAccelerationSlider != null)
_pursueMaxAccelerationSlider.onValueChanged.RemoveListener(OnPursueMaxAccelerationChanged);
if (_pursueOrientationSlider != null)
_pursueOrientationSlider.onValueChanged.RemoveListener(OnPursueOrientationChanged);
if (_evadeMaxPredictionSlider != null)
_evadeMaxPredictionSlider.onValueChanged.RemoveListener(OnEvadeMaxPredictionChanged);
if (_evadeMaxSpeedSlider != null)
_evadeMaxSpeedSlider.onValueChanged.RemoveListener(OnEvadeMaxSpeedChanged);
if (_evadeMaxAccelerationSlider != null)
_evadeMaxAccelerationSlider.onValueChanged.RemoveListener(OnEvadeMaxAccelerationChanged);
if (_evadeOrientationSlider != null)
_evadeOrientationSlider.onValueChanged.RemoveListener(OnEvadeOrientationChanged);
if (exitButton != null)
exitButton.onClick.RemoveListener(LoadMainMenu);
}
}
}
+3
View File
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8d03987af6a540f7a23ecb4ddd60e518
timeCreated: 1770373802
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -2410,6 +2410,6 @@ SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1045274101}
- {fileID: 559824219}
- {fileID: 330585546}
- {fileID: 1643053284}
- {fileID: 559824219}