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.
95 lines
2.8 KiB
95 lines
2.8 KiB
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. =========== |
|
|
|
using System; |
|
using UnityEngine; |
|
using UnityEngine.EventSystems; |
|
|
|
namespace HTC.UnityPlugin.Pointer3D |
|
{ |
|
public abstract class BaseFallbackCamRaycaster : BaseMultiMethodRaycaster |
|
{ |
|
[NonSerialized] |
|
private bool isDestroying = false; |
|
[NonSerialized] |
|
private Camera fallbackCam; |
|
|
|
[SerializeField] |
|
private float nearDistance = 0f; |
|
[SerializeField] |
|
private float farDistance = 20f; |
|
|
|
public float NearDistance |
|
{ |
|
get { return nearDistance; } |
|
set |
|
{ |
|
nearDistance = Mathf.Max(0f, value); |
|
if (eventCamera != null) |
|
{ |
|
eventCamera.nearClipPlane = nearDistance; |
|
} |
|
} |
|
} |
|
|
|
public float FarDistance |
|
{ |
|
get { return farDistance; } |
|
set |
|
{ |
|
farDistance = Mathf.Max(0f, nearDistance, value); |
|
if (eventCamera != null) |
|
{ |
|
eventCamera.farClipPlane = farDistance; |
|
} |
|
} |
|
} |
|
|
|
public override Camera eventCamera |
|
{ |
|
get |
|
{ |
|
if (isDestroying) |
|
{ |
|
return null; |
|
} |
|
|
|
if (fallbackCam == null) |
|
{ |
|
var go = new GameObject(name + " FallbackCamera"); |
|
go.SetActive(false); |
|
// place fallback camera at root to preserve world position |
|
go.transform.SetParent(EventSystem.current.transform, false); |
|
go.transform.localPosition = Vector3.zero; |
|
go.transform.localRotation = Quaternion.identity; |
|
go.transform.localScale = Vector3.one; |
|
|
|
fallbackCam = go.AddComponent<Camera>(); |
|
fallbackCam.clearFlags = CameraClearFlags.Nothing; |
|
fallbackCam.cullingMask = 0; |
|
fallbackCam.orthographic = true; |
|
fallbackCam.orthographicSize = 1; |
|
fallbackCam.useOcclusionCulling = false; |
|
#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) |
|
fallbackCam.stereoTargetEye = StereoTargetEyeMask.None; |
|
#endif |
|
fallbackCam.nearClipPlane = nearDistance; |
|
fallbackCam.farClipPlane = farDistance; |
|
} |
|
|
|
return fallbackCam; |
|
} |
|
} |
|
|
|
protected override void OnDestroy() |
|
{ |
|
base.OnDestroy(); |
|
isDestroying = true; |
|
|
|
if (fallbackCam != null) |
|
{ |
|
Destroy(fallbackCam); |
|
fallbackCam = null; |
|
} |
|
} |
|
} |
|
} |