mirror of
https://github.com/nothke/quality-control.git
synced 2025-08-30 15:33:44 +00:00
Added interaction, hand, rigidbody dragging, picking up hammer
This commit is contained in:
95
Assets/Plugins/Interaction/Runtime/UI/ReticleUI.cs
Normal file
95
Assets/Plugins/Interaction/Runtime/UI/ReticleUI.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Nothke.Interaction.UI
|
||||
{
|
||||
public class ReticleUI : MonoBehaviour
|
||||
{
|
||||
static ReticleUI e;
|
||||
private void Awake() { e = this; }
|
||||
|
||||
public bool showIconForNone;
|
||||
|
||||
public Texture icon_none;
|
||||
public Texture icon_generic;
|
||||
public Texture icon_grab;
|
||||
public Texture icon_hold;
|
||||
public Texture icon_take;
|
||||
public Texture icon_slot;
|
||||
|
||||
public Texture icon_ride;
|
||||
public Texture icon_scroll;
|
||||
public Texture icon_grab_knob;
|
||||
public Texture icon_hold_knob;
|
||||
|
||||
public RawImage image;
|
||||
|
||||
public enum State { None, Idle, Grab, Hold, Take, Slot, Ride, Scroll, GrabKnob, HoldKnob }
|
||||
public static State state;
|
||||
static State lastState;
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
||||
private void Init()
|
||||
{
|
||||
state = State.None;
|
||||
lastState = State.None;
|
||||
}
|
||||
|
||||
public static void Hide()
|
||||
{
|
||||
state = State.None;
|
||||
e.SetState();
|
||||
}
|
||||
|
||||
public static void ResetReticlePosition()
|
||||
{
|
||||
if (!e) return;
|
||||
RectTransform t = e.image.GetComponent<RectTransform>();
|
||||
t.anchoredPosition = Vector2.zero;
|
||||
}
|
||||
|
||||
public static void SetReticlePosition(Vector2 screenPos)
|
||||
{
|
||||
if (!e) return;
|
||||
RectTransform t = e.image.GetComponent<RectTransform>();
|
||||
t.position = screenPos;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
SetState();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (state != lastState)
|
||||
SetState();
|
||||
|
||||
lastState = state;
|
||||
}
|
||||
|
||||
void SetState()
|
||||
{
|
||||
if (!showIconForNone)
|
||||
image.enabled = state != State.None;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case State.None: image.texture = icon_none; break;
|
||||
case State.Idle: image.texture = icon_generic; break;
|
||||
case State.Grab: image.texture = icon_grab; break;
|
||||
case State.Hold: image.texture = icon_hold; break;
|
||||
case State.Take: image.texture = icon_take; break;
|
||||
case State.Slot: image.texture = icon_slot; break;
|
||||
|
||||
case State.Ride: image.texture = icon_ride; break;
|
||||
case State.Scroll: image.texture = icon_scroll; break;
|
||||
case State.GrabKnob: image.texture = icon_grab_knob; break;
|
||||
case State.HoldKnob: image.texture = icon_hold_knob; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user