webviewstream/Assets/Scripts/ConfigureOrbital.cs

68 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Utilities;
using Microsoft.MixedReality.Toolkit.Utilities.Solvers;
public class ConfigureOrbital : MonoBehaviour
{
public GameObject canvas1;
public GameObject canvas2;
private Orbital orbital1;
private Orbital orbital2;
private SolverHandler solverHandler1;
private SolverHandler solverHandler2;
void Start()
{
if (canvas1 != null)
{
orbital1 = canvas1.GetComponent<Orbital>();
solverHandler1 = canvas1.GetComponent<SolverHandler>();
}
if (canvas2 != null)
{
orbital2 = canvas2.GetComponent<Orbital>();
solverHandler2 = canvas2.GetComponent<SolverHandler>();
}
if (orbital1 == null || solverHandler1 == null || orbital2 == null || solverHandler2 == null)
{
Debug.LogError("One or both Canvas objects are missing an Orbital or SolverHandler component.");
}
}
public void ToggleOrbitalScript()
{
ToggleOrbitalForCanvas(orbital1, solverHandler1);
ToggleOrbitalForCanvas(orbital2, solverHandler2);
}
private void ToggleOrbitalForCanvas(Orbital orbital, SolverHandler solverHandler)
{
if (orbital != null && solverHandler != null)
{
orbital.enabled = !orbital.enabled;
if (orbital.enabled)
{
Vector3 headPosition = Camera.main.transform.position;
// Quaternion headRotation = Camera.main.transform.rotation;
// Vector3 relativePosition = Quaternion.Inverse(headRotation) * (orbital.transform.position - headPosition);
Vector3 relativePosition = (orbital.transform.position - headPosition);
orbital.LocalOffset = relativePosition;
solverHandler.UpdateSolvers = true;
}
else
{
solverHandler.UpdateSolvers = false;
}
}
}
}