new Hightlight system
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb12cad0302f6f34486a02a35c89d820
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4cb350e1f0b83446b6930413e1c6c9a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 58e5a6d4728f393419100a54758a4e62
|
||||
@@ -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++)
|
||||
|
||||
Reference in New Issue
Block a user