void CheckObjectsInLight() { for (int i = 0; i < casters.Length; i++) { a = casters[i].transform.position.x - transform.position.x; b = casters[i].transform.position.z - transform.position.z; c = Mathf.Sqrt(Mathf.Pow(a, 2) + Mathf.Pow(b, 2)); float degree = 90 - (Mathf.Acos(a / c) * Mathf.Rad2Deg); if (Mathf.Abs(degree) <= light.spotAngle / 2) { if (objInLight.Count == 0) { objInLight.Add(casters[i]); Puppet p = ScriptableObject.CreateInstance <Puppet>(); p.Create(casters[i], transform.position); puppets.Add(p); EdgeCollider2D ec = edgeCollider.AddComponent <EdgeCollider2D>(); ecList.Add(ec); } else if (!objInLight.Contains(casters[i])) { objInLight.Add(casters[i]); Puppet p = ScriptableObject.CreateInstance <Puppet>(); p.Create(casters[i], transform.position); puppets.Add(p); EdgeCollider2D ec = edgeCollider.AddComponent <EdgeCollider2D>(); ecList.Add(ec); } } else if (Mathf.Abs(degree) > light.spotAngle / 2) { if (objInLight.Contains(casters[i])) { int n = objInLight.IndexOf(casters[i]); print(n); objInLight.RemoveAt(n); puppets.RemoveAt(n); Destroy(ecList[n]); ecList.RemoveAt(n); } } } for (int ii = 0; ii < puppets.Count; ii++) { puppets[ii].origin = transform.position; puppets[ii].CreateShadowCollision(); ecList[ii].points = puppets[ii].sortedPoints; } }
void CheckObjectsInLight() { for (int i = 0; i < casters.Length; i++) { if (lC.CheckForInLight(casters[i].transform.position, light)) { if (!objInLight.Contains(casters[i])) { objInLight.Add(casters[i]); Puppet p = new Puppet(); p.Create(casters[i], transform.position); puppets.Add(p); } } else { if (objInLight.Contains(casters[i])) { int n = objInLight.IndexOf(casters[i]); objInLight.RemoveAt(n); puppets.RemoveAt(n); } } } int k = puppets.Count - 1; for (int ii = 0; ii < puppets.Count; k = ii++) { puppets[ii].origin = transform.position; puppets[ii].rayLength = light.range; puppets[ii].GetShadowBounds(); for (int j = 0; j < puppets[k].pointsList.Count; j++) { if (Area.ContainsPoint(puppets[ii].pointsList.ToArray(), puppets[k].pointsList[j])) { Debug.Log("Shadows are touching!"); } // else // { // Debug.Log("outside "+ii+" / "+k+" / "+j); // } } } }