private void EndRegeneration() { for (var i = groups.Count - 1; i >= 0; i--) { var group = groups[i]; if (group.Stars.Count > 0) { group.Stars.Clear(); // No longer needed, and they've already been pooled in RegenerateMeshes() for (var j = group.Models.Count - 1; j >= 0; j--) { var model = group.Models[j]; if (model.Mesh == null) { SgtStarfieldModel.Pool(model); group.Models.RemoveAt(j); } } } else { SgtStarfieldGroup.Pool(group); groups.RemoveAt(i); } } }
public static void MarkForDestruction(SgtStarfieldGroup group) { if (group != null) { group.Starfield = null; group.gameObject.SetActive(true); } }
protected override void UpdateGroupMaterial(SgtStarfieldGroup group) { if (group.Material == null) { group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "StaticStarfield"); } base.UpdateGroupMaterial(group); }
protected virtual void OnDestroy() { for (var i = groups.Count - 1; i >= 0; i--) { SgtStarfieldGroup.MarkForDestruction(groups[i]); } groups.Clear(); }
public static SgtStarfieldModel Create(SgtStarfieldGroup group) { var model = SgtComponentPool <SgtStarfieldModel> .Pop("Model", group.gameObject.layer, group.transform); model.Group = group; group.Models.Add(model); return(model); }
public static SgtStarfieldModel Create(SgtStarfieldGroup group) { var model = SgtComponentPool<SgtStarfieldModel>.Pop("Model", group.transform); model.Group = group; group.Models.Add(model); return model; }
protected abstract void CalculateStars(out List <SgtStarfieldStar> stars, out bool pool); // pool == true when they are temporary protected virtual void UpdateGroupMaterial(SgtStarfieldGroup group) { var color = SgtHelper.Brighten(Color, Color.a * Brightness); var scale = transform.lossyScale.x; var renderQueue = (int)RenderQueue + RenderQueueOffset; if (group.Material == null) { group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Starfield"); } group.Material.renderQueue = renderQueue; group.Material.SetTexture("_Texture", group.Texture); group.Material.SetColor("_Color", color); group.Material.SetFloat("_Scale", scale); if (AllowPulse == true) { keywords.Add("LIGHT_1"); group.Material.SetFloat("_Age", Age); } if (Softness > 0.0f) { keywords.Add("LIGHT_2"); group.Material.SetFloat("_InvFade", SgtHelper.Reciprocal(Softness)); } if (StretchToObservers == true) { keywords.Add("SGT_C"); } if (FadeNear == true) { keywords.Add("SGT_D"); group.Material.SetFloat("_FadeNearRadius", FadeNearRadius); group.Material.SetFloat("_FadeNearScale", SgtHelper.Reciprocal(FadeNearThickness)); } if (FadeFar == true) { keywords.Add("SGT_E"); group.Material.SetFloat("_FadeFarRadius", FadeFarRadius); group.Material.SetFloat("_FadeFarScale", SgtHelper.Reciprocal(FadeFarThickness)); } }
protected override void UpdateGroupMaterial(SgtStarfieldGroup group) { base.UpdateGroupMaterial(group); if (Wrap3D == true) { keywords.Add("SGT_B"); } else { keywords.Add("SGT_A"); } group.Material.SetVector("_WrapSize", Size); }
public static void Pool(SgtStarfieldGroup group) { if (group != null) { group.Starfield = null; group.Texture = null; group.Material = null; for (var i = group.Models.Count - 1; i >= 0; i--) { SgtStarfieldModel.Pool(group.Models[i]); } group.Models.Clear(); SgtComponentPool<SgtStarfieldGroup>.Add(group); } }
public static void Pool(SgtStarfieldGroup group) { if (group != null) { group.Starfield = null; group.Texture = null; group.Material = null; for (var i = group.Models.Count - 1; i >= 0; i--) { SgtStarfieldModel.Pool(group.Models[i]); } group.Models.Clear(); SgtComponentPool <SgtStarfieldGroup> .Add(group); } }
protected SgtStarfieldGroup GetGroup(Sprite sprite) { var texture = sprite != null ? sprite.texture : null; for (var i = groups.Count - 1; i >= 0; i--) { var group = groups[i]; if (group.Texture == texture) { return(group); } } var newGroup = SgtStarfieldGroup.Create(this); groups.Add(newGroup); newGroup.Texture = texture; return(newGroup); }
protected virtual void UpdateGroupMaterial(SgtStarfieldGroup group) { var color = SgtHelper.Brighten(Color, Color.a * Brightness); var scale = transform.lossyScale.x; var renderQueue = (int)RenderQueue + RenderQueueOffset; if (group.Material == null) group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Starfield"); group.Material.renderQueue = renderQueue; group.Material.SetTexture("_Texture", group.Texture); group.Material.SetColor("_Color", color); group.Material.SetFloat("_Scale", scale); if (AllowPulse == true) { keywords.Add("LIGHT_1"); group.Material.SetFloat("_Age", Age); } if (Softness > 0.0f) { keywords.Add("LIGHT_2"); group.Material.SetFloat("_InvFade", SgtHelper.Reciprocal(Softness)); } if (StretchToObservers == true) { keywords.Add("SGT_C"); } if (FadeNear == true) { keywords.Add("SGT_D"); group.Material.SetFloat("_FadeNearRadius", FadeNearRadius); group.Material.SetFloat("_FadeNearScale", SgtHelper.Reciprocal(FadeNearThickness)); } if (FadeFar == true) { keywords.Add("SGT_E"); group.Material.SetFloat("_FadeFarRadius", FadeFarRadius); group.Material.SetFloat("_FadeFarScale", SgtHelper.Reciprocal(FadeFarThickness)); } }
protected override void UpdateGroupMaterial(SgtStarfieldGroup group) { if (group.Material == null) group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "StaticStarfield"); base.UpdateGroupMaterial(group); }