forked from cgvr/DeltaVR
shape scanner supports multiple object scanning, always destroys colliding objects on config completion
This commit is contained in:
@@ -10,11 +10,13 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
|
||||
private ShapeScanner _scanner;
|
||||
private MeshRenderer[] meshRenderers;
|
||||
private HashSet<GameObject> collidingObjects;
|
||||
private bool _collisionRequired;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
meshRenderers = GetComponentsInChildren<MeshRenderer>();
|
||||
collidingObjects = new HashSet<GameObject>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -40,18 +42,23 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
{
|
||||
if (other.gameObject.tag == scannableTag)
|
||||
{
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
collidingObjects.Add(other.gameObject);
|
||||
// Only activate when this was the first object that entered collision
|
||||
if (collidingObjects.Count == 1)
|
||||
{
|
||||
meshRenderer.material = _activeMaterial;
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
{
|
||||
meshRenderer.material = _activeMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
}
|
||||
else
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
} else
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,17 +66,27 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
{
|
||||
if (other.gameObject.tag == "ShapeScannable")
|
||||
{
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
collidingObjects.Remove(other.gameObject);
|
||||
if (collidingObjects.Count == 0)
|
||||
{
|
||||
meshRenderer.material = _passiveMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
} else
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
{
|
||||
meshRenderer.material = _passiveMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
else
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public HashSet<GameObject> GetCollidingObjects()
|
||||
{
|
||||
return collidingObjects;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user