2021년 4학년 1학기 기업연계프로젝트2
컴퓨터소프트웨어공학과 <원광투어팀>
팀장 : 송유진
팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Highlights the controller when hovering over interactables
//
//=============================================================================
using UnityEngine;using System.Collections;
namespace Valve.VR.InteractionSystem{ //-------------------------------------------------------------------------
public class ControllerHoverHighlight : MonoBehaviour { public Material highLightMaterial; public bool fireHapticsOnHightlight = true;
protected Hand hand;
protected RenderModel renderModel;
protected SteamVR_Events.Action renderModelLoadedAction;
protected void Awake() { hand = GetComponentInParent<Hand>(); }
protected void OnHandInitialized(int deviceIndex) { GameObject renderModelGameObject = GameObject.Instantiate(hand.renderModelPrefab); renderModelGameObject.transform.parent = this.transform; renderModelGameObject.transform.localPosition = Vector3.zero; renderModelGameObject.transform.localRotation = Quaternion.identity; renderModelGameObject.transform.localScale = hand.renderModelPrefab.transform.localScale;
renderModel = renderModelGameObject.GetComponent<RenderModel>();
renderModel.SetInputSource(hand.handType); renderModel.OnHandInitialized(deviceIndex); renderModel.SetMaterial(highLightMaterial);
hand.SetHoverRenderModel(renderModel); renderModel.onControllerLoaded += RenderModel_onControllerLoaded; renderModel.Hide(); }
private void RenderModel_onControllerLoaded() { renderModel.Hide(); }
//-------------------------------------------------
protected void OnParentHandHoverBegin(Interactable other) { if (!this.isActiveAndEnabled) { return; }
if (other.transform.parent != transform.parent) { ShowHighlight(); } }
//-------------------------------------------------
private void OnParentHandHoverEnd(Interactable other) { HideHighlight(); }
//-------------------------------------------------
private void OnParentHandInputFocusAcquired() { if (!this.isActiveAndEnabled) { return; }
if (hand.hoveringInteractable && hand.hoveringInteractable.transform.parent != transform.parent) { ShowHighlight(); } }
//-------------------------------------------------
private void OnParentHandInputFocusLost() { HideHighlight(); }
//-------------------------------------------------
public void ShowHighlight() { if (renderModel == null) { return; }
if (fireHapticsOnHightlight) { hand.TriggerHapticPulse(500); }
renderModel.Show(); }
//-------------------------------------------------
public void HideHighlight() { if (renderModel == null) { return; }
if (fireHapticsOnHightlight) { hand.TriggerHapticPulse(300); }
renderModel.Hide(); } }}
|