public void Update()
        {
            bool flag  = false;
            bool flag2 = true;

            for (int i = 0; i < children.GetLength(0); i++)
            {
                for (int j = 0; j < children.GetLength(1); j++)
                {
                    AvatarViewDistinctChild avatarViewDistinctChild = children[i, j];
                    if (avatarViewDistinctChild != null)
                    {
                        flag  |= avatarViewDistinctChild.IsBusy;
                        flag2 &= avatarViewDistinctChild.IsReady;
                    }
                }
            }
            if (flag && !base.IsBusy)
            {
                startWork();
            }
            else if (!flag && base.IsBusy)
            {
                stopWork();
            }
            else if (flag2 && !base.IsReady)
            {
                startWork();
                stopWork();
            }
        }
 public override Bounds GetBounds()
 {
     if (boundsIsDirty)
     {
         Debug.Log("CARL: UPDATING");
         cachedBounds = new Bounds(base.transform.position, Vector3.zero);
         for (int i = 0; i < children.GetLength(0); i++)
         {
             for (int j = 0; j < children.GetLength(1); j++)
             {
                 AvatarViewDistinctChild avatarViewDistinctChild = children[i, j];
                 if (avatarViewDistinctChild != null)
                 {
                     cachedBounds.Encapsulate(avatarViewDistinctChild.Renderer.bounds);
                 }
             }
         }
         boundsIsDirty = false;
     }
     return(cachedBounds);
 }
        private void applyPart(int slotIndex, int partIndex, AvatarModel.Part newPart)
        {
            AvatarViewDistinctChild avatarViewDistinctChild = children[slotIndex, partIndex];

            if (avatarViewDistinctChild == null && newPart != null)
            {
                string text = Model.Definition.Slots[slotIndex].Name;
                if (partIndex > 0)
                {
                    text = text + "_" + AvatarDefinition.PartTypeStrings[partIndex];
                }
                GameObject gameObject = new GameObject(text);
                gameObject.transform.SetParent(base.transform, worldPositionStays: false);
                gameObject.layer = base.gameObject.layer;
                gameObject.SetActive(value: false);
                avatarViewDistinctChild           = gameObject.AddComponent <AvatarViewDistinctChild>();
                avatarViewDistinctChild.SlotIndex = slotIndex;
                avatarViewDistinctChild.PartIndex = partIndex;
                avatarViewDistinctChild.Model     = Model;
                avatarViewDistinctChild.Rig       = rig;
                gameObject.SetActive(value: true);
                children[slotIndex, partIndex] = avatarViewDistinctChild;
                if (this.OnChildAdded != null)
                {
                    this.OnChildAdded(avatarViewDistinctChild);
                }
            }
            boundsIsDirty = true;
            if (avatarViewDistinctChild != null)
            {
                avatarViewDistinctChild.Apply(newPart);
                if (avatarViewDistinctChild.IsBusy && !base.IsBusy)
                {
                    startWork();
                }
            }
        }