new Hightlight system

This commit is contained in:
2023-12-13 20:01:38 +02:00
parent e1d2951ee0
commit 11c4d217c3
15 changed files with 267 additions and 4426 deletions
+15
View File
@@ -0,0 +1,15 @@
using UnityEditor.SceneManagement;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public class EditorInit
{
static EditorInit()
{
var pathOfFirstScene = EditorBuildSettings.scenes[0].path;
var sceneAsset = AssetDatabase.LoadAssetAtPath<SceneAsset>(pathOfFirstScene);
EditorSceneManager.playModeStartScene = sceneAsset;
Debug.Log(pathOfFirstScene + " was set as default play mode scene");
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: cb12cad0302f6f34486a02a35c89d820
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d4cb350e1f0b83446b6930413e1c6c9a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+48
View File
@@ -0,0 +1,48 @@
using System.Collections.Generic;
using UnityEngine;
public class Hightlight : MonoBehaviour
{
[SerializeField]
private Color color = new Color(147, 142, 142, 1);
private Renderer[] renderers;
//helper list to cache all the materials ofd this object
private List<Material> materials;
//Gets all the materials from each renderer
private void Awake()
{
renderers = GetComponentsInChildren<Renderer>();
materials = new List<Material>();
foreach (var renderer in renderers)
{
//A single child-object might have mutliple materials on it
//that is why we need to all materials with "s"
materials.AddRange(new List<Material>(renderer.materials));
}
}
public void ToggleHighlight(bool val)
{
if (val)
{
foreach (var material in materials)
{
//We need to enable the EMISSION
material.EnableKeyword("_EMISSION");
//before we can set the color
material.SetColor("_EmissionColor", color);
}
}
else
{
foreach (var material in materials)
{
//we can just disable the EMISSION
//if we don't use emission color anywhere else
material.DisableKeyword("_EMISSION");
}
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 58e5a6d4728f393419100a54758a4e62
-5
View File
@@ -1,11 +1,6 @@
using System;
using UnityEngine;
public class OnSelectedObjectChangedEventArgs : EventArgs
{
public BaseInteractableObject SelectedObject;
}
public class OnPlayerMovesEventArgs : EventArgs
{
public Vector3 PointToMove;
@@ -1,43 +0,0 @@
using UnityEngine;
public class SelectedVisual : MonoBehaviour
{
[SerializeField]
private BaseInteractableObject _selectedObject;
[SerializeField]
private GameObject[] visualGameObjectArray;
private void Start()
{
InGameMouseHandler.OnSelectedObjectChanged += Mouse_OnSelectedObjectChanged;
}
private void OnDestroy()
{
InGameMouseHandler.OnSelectedObjectChanged -= Mouse_OnSelectedObjectChanged;
}
private void Mouse_OnSelectedObjectChanged(object sender, OnSelectedObjectChangedEventArgs e)
{
if (e.SelectedObject == _selectedObject)
{
Show();
}
else
{
Hide();
}
}
private void Show()
{
foreach (var visualGameObject in visualGameObjectArray)
visualGameObject.SetActive(true);
}
private void Hide()
{
foreach (var visualGameObject in visualGameObjectArray)
visualGameObject.SetActive(false);
}
}
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 70ee3205d7b15b4449cdacc7a726e220
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,4 +1,3 @@
using System;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
@@ -13,7 +12,6 @@ public class InGameMouseHandler : UnityEngine.Object
private Ray _ray;
private Camera _camera;
public static event EventHandler<OnSelectedObjectChangedEventArgs> OnSelectedObjectChanged;
private BaseInteractableObject _selectedObject;
@@ -65,11 +63,14 @@ public class InGameMouseHandler : UnityEngine.Object
mouseRaycastHit.transform.TryGetComponent(out _selectedObject);
if (_selectedObject != null)
{
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = _selectedObject });
_selectedObject.GetComponent<Hightlight>()?.ToggleHighlight(true);
return;
}
}
_selectedObject = null;
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = null });
if (_selectedObject != null)
{
_selectedObject.GetComponent<Hightlight>()?.ToggleHighlight(false);
_selectedObject = null;
}
}
}
@@ -11,11 +11,9 @@ public class RadialMenuItem : MonoBehaviour
private Button _radialMenuItemPrefab;
private Action<RadialMenuActions> _menuButtonClick=null;
private Dictionary<RadialMenuActions, RadialMenuActionDescription> _actions;
private RadialMenuItem _popupMenu;
public void ShowButtons(RadialMenuItem popupMenu, Dictionary<RadialMenuActions, RadialMenuActionDescription> actions, Action<RadialMenuActions> menuButtonClick)
{
_popupMenu = popupMenu;
_actions = actions;
_menuButtonClick = menuButtonClick;
for (int buttonsCount = 0; buttonsCount < actions.Count; buttonsCount++)