private void CreateShadowHandler(List <MeshRenderer> renderers, int tag) { bool inNeed = false; var count = renderers.Count; var handler = _shadowPool.Get(); for (int i = 0; i < count; i++) { var val = renderers[i].shadowCastingMode == ShadowCastingMode.On; inNeed = inNeed || val; if (val) { handler.Add(renderers[i]); } } if (inNeed) { OverwriteHead(handler); if (MultiTagHelper.InDoor(tag)) { handler.Category = DistCullingCat.Detail; } else { handler.Category = DistCullingCat.Median; } } else { handler.Free(); } }
public static GameObject FindParentWithTag(this Transform t, string stag) { while (t != null) { if (MultiTagHelper.HasTag(t, stag)) { return(t.gameObject); } t = t.parent; } return(null); }
public static IEnumerable <GameObject> FindAllWithMultiTag(this GameObject go, string tag) { if (MultiTagHelper.HasTag(go)) { yield return(go); } foreach (var child in go.transform.IterateAllChildren()) { if (MultiTagHelper.HasTag(child.gameObject, tag)) { yield return(child.gameObject); } } }
public static GameObject FindWithMultiTag(this GameObject go, string tag) { if (MultiTagHelper.HasTag(go, tag)) { return(go); } foreach (var child in go.transform.IterateAllChildren()) { if (MultiTagHelper.HasTag(child.gameObject, tag)) { return(child.gameObject); } } return(null); }
private void CreateProbeHandler(List <MeshRenderer> renderers, int tag) { bool inNeed = false; var count = renderers.Count; var handler = _probePool.Get(); for (int i = 0; i < count; i++) { var val = renderers[i].lightProbeUsage == LightProbeUsage.BlendProbes; inNeed = inNeed || val; if (val) { handler.AddLightprobe(renderers[i]); } val = renderers[i].reflectionProbeUsage == ReflectionProbeUsage.BlendProbes; inNeed = inNeed || val; if (val) { handler.AddReflectionProbe(renderers[i]); } } if (inNeed) { OverwriteHead(handler); if (MultiTagHelper.InDoor(tag)) { handler.Category = DistCullingCat.Detail; } else { handler.Category = DistCullingCat.Near; } } else { handler.Free(); } }
public static GameObject FindTrueRoot(this Component c) { if (c == null) { return(null); } var t = c.transform; while (t != null) { if (MultiTagHelper.HasTag(t, SPConstants.TAG_ROOT)) { return(t.gameObject); } t = t.parent; } return(null); }
/** * HasTrueRoot */ /// <summary> /// Returns true if /// </summary> /// <param name="go"></param> /// <returns></returns> public static bool HasTrueRoot(this GameObject go) { if (go == null) { return(false); } var t = go.transform; while (t != null) { if (MultiTagHelper.HasTag(t.gameObject, SPConstants.TAG_ROOT)) { return(true); } } return(false); }