public void Add(S d) { var category = categorize(d); List <S> cage; if (!dataInCategory.TryGetValue(category, out cage)) { dataInCategory[category] = cage = cagePool.New(); } cage.Add(d); }
public void AddInWorldSpace(Vector3 worldPos, Vector2 worldSize, params object[] data) { validator.Invalidate(); var forward = targetCamera.transform.forward; var near = targetCamera.nearClipPlane; worldPos = Vector3.ProjectOnPlane(worldPos - plane, plane) + plane; worldPos += forward * (2f * near * 2f + 0.5f * length); var c = pool.New(); c.transform.SetParent(transform, false); c.transform.position = worldPos; c.transform.rotation = targetCamera.transform.rotation; c.transform.localScale = new Vector3(worldSize.x, worldSize.y, length); c.Data = data; colliders.Add(c); c.gameObject.SetActive(true); }