from github
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
using UnityEngine.XR;
|
||||
|
||||
//this scripts handels the laser pointer (also the network sync for it)
|
||||
|
||||
public class LineRendererActivator : NetworkBehaviour
|
||||
{
|
||||
[SerializeField] public LineRenderer lineRenderer;
|
||||
[SerializeField] public List<InputDevice> mDevice = new List<InputDevice>();
|
||||
|
||||
//network variable to perform the laser pointers sync
|
||||
private NetworkVariable<bool> isRayActive = new NetworkVariable<bool> (writePerm: NetworkVariableWritePermission.Owner);
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
//if the script is attached to the owners player object
|
||||
if (IsOwner)
|
||||
{
|
||||
mDevice.Clear();
|
||||
InputDevices.GetDevicesWithCharacteristics(InputDeviceCharacteristics.Right | InputDeviceCharacteristics.Controller, mDevice);
|
||||
|
||||
// check if any physical controller is connected
|
||||
if (mDevice.Count > 0)
|
||||
{
|
||||
//try to get the input of the right controllers secondary button (B)
|
||||
InputDevice rightController = mDevice[0];
|
||||
rightController.TryGetFeatureValue(CommonUsages.secondaryButton, out bool secondaryDown);
|
||||
|
||||
if (secondaryDown || Input.GetKey(KeyCode.O))
|
||||
{
|
||||
// activate the line renderer while the button is pressed
|
||||
lineRenderer.enabled = true;
|
||||
isRayActive.Value = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// deactivate the line renderer if the button is released
|
||||
lineRenderer.enabled = false;
|
||||
isRayActive.Value = false;
|
||||
}
|
||||
}
|
||||
//for test case with keyboard inputs only
|
||||
else
|
||||
{
|
||||
if (Input.GetKey(KeyCode.O))
|
||||
{
|
||||
// activate the line renderer while the button is pressed
|
||||
lineRenderer.enabled = true;
|
||||
isRayActive.Value = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// deactivate the line renderer if the button is released
|
||||
lineRenderer.enabled = false;
|
||||
isRayActive.Value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//read the activation variable if not owner
|
||||
lineRenderer.enabled = isRayActive.Value;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user