E_ElecCompetition/Electrical_inspectionCompet.../Assets/Plugins/HighlightingSystemDemo/Scripts/Advanced/HighlighterInteractionDemo.cs

83 lines
1.8 KiB
C#

using System;
using UnityEngine;
using HighlightingSystem;
namespace HighlightingSystem.Demo
{
public class HighlighterInteractionDemo : MonoBehaviour
{
// Hover color
public Color hoverColor = Color.red;
// Button names (for Input Manager)
static private readonly string buttonFire1 = "Fire1";
static private readonly string buttonFire2 = "Fire2";
//
void Update()
{
ProcessControls();
}
// RaycastController should trigger this method via onHover event
public void OnHover(RaycastHit hitInfo)
{
Transform tr = hitInfo.collider.transform;
if (tr == null) { return; }
var highlighter = tr.GetComponentInParent<Highlighter>();
if (highlighter == null) { return; }
// Hover
highlighter.Hover(hoverColor);
// Switch tween
if (Input.GetButtonDown(buttonFire1))
{
highlighter.tween = !highlighter.tween;
}
// Toggle overlay
if (Input.GetButtonUp(buttonFire2))
{
highlighter.overlay = !highlighter.overlay;
}
}
//
private void ProcessControls()
{
// Fade in/out constant highlighting
//if (Input.GetKeyDown(KeyCode.Alpha1)) { TriggerAll(0); }
//// Turn on/off constant highlighting
//if (Input.GetKeyDown(KeyCode.Alpha2)) { TriggerAll(1); }
//// Turn off all highlighting modes
//if (Input.GetKeyDown(KeyCode.Alpha3)) { TriggerAll(2); }
}
//
private void TriggerAll(int action)
{
var highlighters = HighlighterCore.highlighters;
for (int i = 0; i < highlighters.Count; i++)
{
var highlighter = highlighters[i] as Highlighter;
if (highlighter != null)
{
switch (action)
{
case 0:
highlighter.ConstantSwitch();
break;
case 1:
highlighter.ConstantSwitchImmediate();
break;
case 2:
highlighter.Off();
break;
}
}
}
}
}
}