forked from cgvr/DeltaVR
fixed bug with shape scanner destroying not whole scannable object, deleted Parent-GeneratedModel objects from scene
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -51,7 +51,7 @@ public class Printer3D : MonoBehaviour
|
||||
|
||||
private void InitializeSpawnedObject(GameObject spawnedObject)
|
||||
{
|
||||
GameObject spawnedObjectParent = new GameObject("SpawnedModelParent");
|
||||
GameObject spawnedObjectParent = new("SpawnedModelParent");
|
||||
spawnedObjectParent.transform.parent = spawnPoint;
|
||||
spawnedObjectParent.transform.position = spawnPoint.transform.position;
|
||||
spawnedObjectParent.layer = ignorePlayerCollisionLayer;
|
||||
|
||||
@@ -131,7 +131,7 @@ public class ShapeScanner : MonoBehaviour
|
||||
UpdateDisplay(percentage);
|
||||
}
|
||||
|
||||
private void OnConfigurationComplete()
|
||||
private async void OnConfigurationComplete()
|
||||
{
|
||||
// Destroy colliding scannable objects
|
||||
HashSet<GameObject> allCollidingObjects = new();
|
||||
@@ -145,17 +145,19 @@ public class ShapeScanner : MonoBehaviour
|
||||
var grab = collidingObject.GetComponent<XRGrabInteractable>();
|
||||
if (grab != null && grab.isSelected)
|
||||
{
|
||||
var interactor = grab.firstInteractorSelecting; // the hand/controller currently holding it
|
||||
if (interactor != null)
|
||||
var interactors = new List<IXRSelectInteractor>(grab.interactorsSelecting); // the controllers currently holding it
|
||||
foreach (var interactor in interactors)
|
||||
{
|
||||
// Transfer ownership: tell the manager to stop the selection
|
||||
interactionManager.SelectExit(interactor, grab);
|
||||
grab.enabled = false;
|
||||
}
|
||||
}
|
||||
collidingObject.transform.position = Vector3.zero;
|
||||
Destroy(collidingObject);
|
||||
}
|
||||
|
||||
await Task.Delay(100);
|
||||
// Destroy all existing rays
|
||||
foreach (ShapeScannerRay ray in existingRays)
|
||||
{
|
||||
|
||||
@@ -40,9 +40,10 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == scannableTag)
|
||||
if (other.gameObject.CompareTag(scannableTag))
|
||||
{
|
||||
collidingObjects.Add(other.gameObject);
|
||||
GameObject parent = other.transform.parent.gameObject;
|
||||
collidingObjects.Add(parent);
|
||||
// Only activate when this was the first object that entered collision
|
||||
if (collidingObjects.Count == 1)
|
||||
{
|
||||
@@ -64,9 +65,10 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == "ShapeScannable")
|
||||
if (other.gameObject.CompareTag(scannableTag))
|
||||
{
|
||||
collidingObjects.Remove(other.gameObject);
|
||||
GameObject parent = other.transform.parent.gameObject;
|
||||
collidingObjects.Remove(parent);
|
||||
if (collidingObjects.Count == 0)
|
||||
{
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
|
||||
Reference in New Issue
Block a user