protected void DestroyHidden(GameObject go, bool forceImmediate) { if (forceImmediate) { GameObject.DestroyImmediate(go); } else { MadGameObject.SafeDestroy(go); } }
protected override void Rebuild() { base.Rebuild(); // remove all hidden child sprites var hidden = MadTransform.FindChildren<MadSprite>( transform, (s) => s.gameObject.hideFlags == HideFlags.HideInHierarchy); for (int i = 0; i < hidden.Count; ++i) { MadGameObject.SafeDestroy(hidden[i].gameObject); } int nextDepth = guiDepth * DepthSpace; // build background nextDepth = BuildBackgroundTextures(nextDepth); // build the bar if (textureBar != null) { if (effectBurn) { spriteBurnBar = CreateHidden<MadSprite>("bar_effect_burn"); spriteBurnBar.guiDepth = nextDepth++; if (TextureValid(effectBurnTextureBar, atlasEffectBurnTextureBarGUID)) { SetTexture(spriteBurnBar, effectBurnTextureBar, atlasEffectBurnTextureBarGUID); } else { SetTexture(spriteBurnBar, textureBar, atlasTextureBarGUID); } spriteBurnBar.fillType = ToFillType(growDirection); spriteBurnBar.radialFillOffset = radialOffset; spriteBurnBar.radialFillLength = radialLength; } spriteBar = CreateHidden<MadSprite>("bar"); spriteBar.guiDepth = nextDepth++; SetTexture(spriteBar, textureBar, atlasTextureBarGUID); spriteBar.fillType = ToFillType(growDirection); spriteBar.radialFillOffset = radialOffset; spriteBar.radialFillLength = radialLength; } // build foreground textures nextDepth = BuildForegroundTextures(nextDepth); // follow effect if (effectFollow) { if (effectFollowObject != null && effectFollowObject is Texture2D) { effectFollowSprite = CreateHidden<MadSprite>("bar_effect_follow"); effectFollowSprite.texture = effectFollowObject as Texture2D; effectFollowSprite.guiDepth = nextDepth++; } } nextDepth = RebuildLabel(nextDepth); UpdateContainer(); }
protected override void Rebuild() { base.Rebuild(); // remove used sprites if (objectSprite != null) { MadGameObject.SafeDestroy(objectSprite.gameObject); } int nextDepth = guiDepth * DepthSpace; nextDepth = BuildBackgroundTextures(nextDepth); nextDepth = BuildObject(nextDepth); nextDepth = BuildForegroundTextures(nextDepth); nextDepth = RebuildLabel(nextDepth); UpdateContainer(); }
protected void RemoveCreatedChildren() { for (int i = 0; i < createdChildren.Count; ++i) { MadGameObject.SafeDestroy(createdChildren[i]); } // scan for generated children that were not removed // this is needed when user performs an undo operation var existingChildren = MadTransform.FindChildren<Transform>(transform, c => c.name.StartsWith("generated_"), 0); for (int i = 0; i < existingChildren.Count; i++) { var child = existingChildren[i]; MadGameObject.SafeDestroy(child.gameObject); } createdChildren.Clear(); backgroundBinds.Clear(); foregroundBinds.Clear(); }
protected virtual void Rebuild() { #if MAD_DEBUG Debug.Log("rebuilding " + this, this); #endif spriteObjectsBg.Clear(); spriteObjectsFg.Clear(); DestroyAllHidden(); // as a precaution I will search for hidden sprites at level 0 var hidden = MadTransform.FindChildren<MadSprite>(transform, (s) => (s.hideFlags | HideFlags.HideInHierarchy) != 0, 0); if (hidden.Count > 0) { Debug.Log("There were " + hidden.Count + " hidden unmanaged sprites under this bar. I will remove them."); for (int i = 0; i < hidden.Count; ++i) { MadGameObject.SafeDestroy(hidden[i].gameObject); } } }
protected int RebuildLabel(int depth) { if (labelSprite != null) { MadGameObject.SafeDestroy(labelSprite.gameObject); } if (labelEnabled && labelFont != null) { labelSprite = MadTransform.CreateChild<MadText>(transform, "label"); labelSprite.font = labelFont; labelSprite.guiDepth = depth++; #if !MAD_DEBUG labelSprite.gameObject.hideFlags = HideFlags.HideInHierarchy; #endif } // after build we must update label at least once to make it visible UpdateLabel(); return depth; }
protected virtual void Rebuild() { #if MAD_DEBUG Debug.Log("rebuilding " + this, this); #endif if (spriteObjectsBg.Count == 0 && spriteObjectsFg.Count == 0) { // in previous version sprites were created without reference in spriteObjects // is spriteObjects is empty it's better to assume, that references are not created yet // and background objects may exist var children = MadTransform.FindChildren<MadSprite>(transform, (s) => s.name.StartsWith("bg_") || s.name.StartsWith("fg_") || s.name == "label", 0); foreach (var child in children) { MadGameObject.SafeDestroy(child.gameObject); } } else { spriteObjectsBg.Clear(); spriteObjectsFg.Clear(); } DestroyAllHidden(); }
void RemoveSprite(MadSprite sprite) { if (sprite != null) { MadGameObject.SafeDestroy(sprite.gameObject); } }
void Rebuild() { #if MAD_DEBUG Debug.Log("rebuilding " + this, this); #endif if (spriteObjectsBg.Count == 0 && spriteObjectsFg.Count == 0) { // in previous version sprites were created without reference in spriteObjects // is spriteObjects is empty it's better to assume, that references are not created yet // and background objects may exist var children = MadTransform.FindChildren<MadSprite>(transform, (s) => s.name.StartsWith("bg_") || s.name.StartsWith("fg_") || s.name == "label", 0); foreach (var child in children) { MadGameObject.SafeDestroy(child.gameObject); } } else { foreach (var sprite in spriteObjectsBg) { if (sprite != null) { MadGameObject.SafeDestroy(sprite.gameObject); } } foreach (var sprite in spriteObjectsFg) { if (sprite != null) { MadGameObject.SafeDestroy(sprite.gameObject); } } spriteObjectsBg.Clear(); spriteObjectsFg.Clear(); } if (spriteBar != null) { MadGameObject.SafeDestroy(spriteBar.gameObject); } if (spriteBurnBar != null) { MadGameObject.SafeDestroy(spriteBurnBar.gameObject); } if (effectFollowSprite != null) { MadGameObject.SafeDestroy(effectFollowSprite.gameObject); } int nextDepth = BuildTextures(texturesBackground, "bg_", guiDepth * DepthSpace, ref spriteObjectsBg); if (textureBar != null) { if (effectBurn) { spriteBurnBar = MadTransform.CreateChild<MadSprite>(transform, "bar_effect_burn"); #if !MAD_DEBUG spriteBurnBar.gameObject.hideFlags = HideFlags.HideInHierarchy; #endif spriteBurnBar.guiDepth = nextDepth++; spriteBurnBar.texture = textureBar; spriteBurnBar.fillType = ToFillType(growDirection); } spriteBar = MadTransform.CreateChild<MadSprite>(transform, "bar"); #if !MAD_DEBUG spriteBar.gameObject.hideFlags = HideFlags.HideInHierarchy; #endif spriteBar.guiDepth = nextDepth++; spriteBar.texture = textureBar; spriteBar.fillType = ToFillType(growDirection); } nextDepth = BuildTextures(texturesForeground, "fg_", nextDepth, ref spriteObjectsFg); if (effectFollow) { if (effectFollowObject != null && effectFollowObject is Texture2D) { effectFollowSprite = MadTransform.CreateChild<MadSprite>(transform, "bar_effect_follow"); effectFollowSprite.texture = effectFollowObject as Texture2D; effectFollowSprite.guiDepth = nextDepth++; #if !MAD_DEBUG effectFollowSprite.gameObject.hideFlags = HideFlags.HideInHierarchy; #endif } } nextDepth = RebuildLabel(nextDepth); }