/// <summary> /// Removes a body part from the container, including its sprite and Net ID /// </summary> /// <param name="implant">Body Part to remove</param> public void RemoveSpritesNID(BodyPart implant) { foreach (var BodyPart in implant.GetAllBodyPartsAndItself(new List <BodyPart>())) { if (ImplantBaseSpritesDictionary.ContainsKey(BodyPart) == false) { continue; } var oldone = ImplantBaseSpritesDictionary[BodyPart]; foreach (var Sprite in oldone) { InternalNetIDs.Remove(Sprite.GetComponent <NetworkIdentity>().netId); if (BodyPart.IsSurface) { PlayerSprites.SurfaceSprite.Remove(Sprite); } BodyPart.RelatedPresentSprites.Remove(Sprite); PlayerSprites.Addedbodypart.Remove(Sprite); Destroy(Sprite.gameObject); } RootBodyPartController.RequestUpdate(this); ImplantBaseSpritesDictionary.Remove(BodyPart); } }
/// <summary> /// Takes a list and adds this body part to it, all body parts contained within this body part, as well /// as all body parts contained within those body parts, etc. /// </summary> /// <param name="ReturnList">List to be added to</param> /// <returns>The list with added body parts</returns> public List <BodyPart> GetAllBodyPartsAndItself(List <BodyPart> ReturnList) { ReturnList.Add(this); foreach (var BodyPart in ContainBodyParts) { BodyPart.GetAllBodyPartsAndItself(ReturnList); } return(ReturnList); }