private void FillObjects() { _badObjects = new List <BadObjectsInfo>(); BadObjectsInfo temp; var objects = FindObjectsOfType <BadObjects>(); Bounds bound; for (int i = objects.Length - 1; i >= 0; --i) { temp = new BadObjectsInfo(); temp.Obj = objects[i]; temp.Points = objects[i].GetComponent <BadObjects>().GetPointsToCheck(); _badObjects.Add(temp); } }
private bool CheckIfAllObjectsHidden() { bool hitAnyObject = false; int layerToCheck = 1 << LayerMask.NameToLayer(LayerReference.ActiveObjects) | 1 << LayerMask.NameToLayer(LayerReference.StaticObjects) | 1 << LayerMask.NameToLayer(LayerReference.ToHide); Vector3 cameraPosition = Camera.main.transform.position; Ray ray = new Ray(cameraPosition, Vector3.forward); RaycastHit hitInfo; for (int i = _badObjects.Count - 1; !hitAnyObject && i >= 0; --i) { if (!_badObjects[i].Obj.isActiveAndEnabled) { continue; } for (int j = _badObjects[i].Points.Count - 1; !hitAnyObject && j >= 0; --j) { ray.direction = _badObjects[i].Points[j] - cameraPosition; if (Physics.Raycast(ray, out hitInfo, float.MaxValue, layerToCheck)) { if (hitInfo.collider.gameObject.layer == LayerMask.NameToLayer(LayerReference.ToHide)) { hitAnyObject = true; _lastObjectDetected = _badObjects[i]; } } } } return(!hitAnyObject); }