forked from cgvr/DeltaVR
61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
using Unity.XR.CoreUtils;
|
|
using UnityEngine;
|
|
|
|
public class ModelGenerationBox : MonoBehaviour
|
|
{
|
|
public Material inactiveMaterial;
|
|
public Material loadingMaterial;
|
|
|
|
public Transform modelSpawnPoint;
|
|
public VoiceTranscriptionBox voiceTranscriptionTestBox;
|
|
|
|
private MeshRenderer meshRenderer;
|
|
private bool isLoading;
|
|
|
|
private string lastModelPath;
|
|
public string LastModelPath
|
|
{
|
|
get {
|
|
return lastModelPath;
|
|
}
|
|
}
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
meshRenderer = GetComponent<MeshRenderer>();
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
async void OnTriggerEnter(Collider other)
|
|
{
|
|
if (isLoading) return;
|
|
|
|
KbmController controller = other.GetComponent<KbmController>();
|
|
XROrigin playerOrigin = other.GetComponent<XROrigin>();
|
|
if (controller != null || playerOrigin != null)
|
|
{
|
|
string inputPrompt = voiceTranscriptionTestBox.LastTextOutput;
|
|
|
|
isLoading = true;
|
|
meshRenderer.material = loadingMaterial;
|
|
|
|
string modelPath = await PipelineManager.Instance.GenerateModelAsync(inputPrompt);
|
|
lastModelPath = modelPath;
|
|
|
|
GameObject spawnedObject = await PipelineManager.Instance.SpawnModel(modelPath);
|
|
spawnedObject.AddComponent<Rigidbody>();
|
|
spawnedObject.transform.parent = modelSpawnPoint;
|
|
spawnedObject.transform.position = modelSpawnPoint.position;
|
|
|
|
isLoading = false;
|
|
meshRenderer.material = inactiveMaterial;
|
|
}
|
|
}
|
|
}
|