forked from cgvr/DeltaVR
WIP: spawn generated model as archery range target
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using _PROJECT.Scripts.Bow;
|
using _PROJECT.Scripts.Bow;
|
||||||
using FishNet.Object;
|
using FishNet.Object;
|
||||||
using FishNet.Object.Synchronizing;
|
using FishNet.Object.Synchronizing;
|
||||||
@@ -36,6 +37,8 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
private float _nextTargetTime;
|
private float _nextTargetTime;
|
||||||
private bool _roundActive;
|
private bool _roundActive;
|
||||||
|
|
||||||
|
private string targetModelName;
|
||||||
|
|
||||||
private readonly List<XROrigin> _presentPlayers = new();
|
private readonly List<XROrigin> _presentPlayers = new();
|
||||||
|
|
||||||
private XROrigin _scoredPlayer;
|
private XROrigin _scoredPlayer;
|
||||||
@@ -112,7 +115,7 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SpawnTarget()
|
async private void SpawnTarget()
|
||||||
{
|
{
|
||||||
if (!IsServer) return;
|
if (!IsServer) return;
|
||||||
|
|
||||||
@@ -122,18 +125,22 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
Random.Range(minRandomOffset.z, maxRandomOffset.z)
|
Random.Range(minRandomOffset.z, maxRandomOffset.z)
|
||||||
);
|
);
|
||||||
|
|
||||||
var target = SpawnTarget(randomPos);
|
var target = await SpawnTarget(randomPos);
|
||||||
_targets.Add(target);
|
_targets.Add(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArcheryTarget SpawnTarget(Vector3 randomPos)
|
async private Task<ArcheryTarget> SpawnTarget(Vector3 randomPos)
|
||||||
{
|
{
|
||||||
var prefab = Instantiate(targetPrefab, randomPos, Quaternion.identity, null);
|
var targetObject = Instantiate(targetPrefab, randomPos, Quaternion.identity, null);
|
||||||
|
GameObject targetReplacement = await PipelineManager.Instance.SpawnModel(targetModelName);
|
||||||
// TODO: replace target prefab's child with the generated model
|
// TODO: replace target prefab's child with the generated model
|
||||||
ArcheryTarget target = prefab.GetComponent<ArcheryTarget>();
|
targetReplacement.transform.parent = targetObject.transform;
|
||||||
|
targetReplacement.transform.position = targetObject.transform.position;
|
||||||
|
|
||||||
|
ArcheryTarget target = targetObject.GetComponent<ArcheryTarget>();
|
||||||
target.endPosition = targetEndPosition.position;
|
target.endPosition = targetEndPosition.position;
|
||||||
target.addScore = AddScore;
|
target.addScore = AddScore;
|
||||||
Spawn(prefab);
|
Spawn(targetObject);
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,9 +183,12 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
SetTimeLeftText("");
|
SetTimeLeftText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartRound()
|
async public void StartRound()
|
||||||
{
|
{
|
||||||
if (!IsServer) return;
|
if (!IsServer) return;
|
||||||
|
|
||||||
|
targetModelName = await PipelineManager.Instance.GenerateModelAsync("unicorn with golden horn and long fluffy tail and butterfly wings");
|
||||||
|
|
||||||
_roundEndTime = Time.time + roundLength;
|
_roundEndTime = Time.time + roundLength;
|
||||||
_nextTargetTime = Time.time;
|
_nextTargetTime = Time.time;
|
||||||
_roundActive = true;
|
_roundActive = true;
|
||||||
|
|||||||
Binary file not shown.
@@ -83,7 +83,6 @@ public class PipelineManager : MonoBehaviour
|
|||||||
{
|
{
|
||||||
GameObject spawnedObject = new GameObject("spawned model");
|
GameObject spawnedObject = new GameObject("spawned model");
|
||||||
|
|
||||||
|
|
||||||
bool spawnSuccess = await gltf.InstantiateMainSceneAsync(spawnedObject.transform);
|
bool spawnSuccess = await gltf.InstantiateMainSceneAsync(spawnedObject.transform);
|
||||||
if (spawnSuccess)
|
if (spawnSuccess)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user