protected override void GetUndoObjects(System.Collections.Generic.List <Object> list)
        {
            base.GetUndoObjects(list);

            for (int i = 0; i < m_Parts.Count; i++)
            {
                var item = m_Parts[i];
                if (item)
                {
                    list.Add(item);
                    if (item.Collider)
                    {
                        list.Add(item.Collider);
                        list.Add(item.Collider.gameObject);  // For layer changes.
                    }
                    if (item.Rigidbody)
                    {
                        list.Add(item.Rigidbody);
                    }
                }
            }

            foreach (var item in m_Accessories)
            {
                if (item)
                {
                    Accessory.UnsafeGetUndoObjects(item, list);
                }
            }

            if (m_BlendRenderer)
            {
                list.Add(m_BlendRenderer);
            }

            for (int i = 0; i < m_OutfitMaterialTargets.Count; i++)
            {
                var item = m_OutfitMaterialTargets[i];

                if (item.Target != null && item.Target.Renderer)
                {
                    list.Add(item.Target.Renderer);
                }
            }
        }
Esempio n. 2
0
        protected override void GetUndoObjects(System.Collections.Generic.List <Object> list)
        {
            Initialize();

            for (int i = 0; i < Observers.Count; i++)
            {
                var item = Observers[i];

                if (item != null)
                {
                    list.Add(item as Object);
                }
            }

            if (DefaultMotionRoot != transform)
            {
                list.Add(DefaultMotionRoot);
            }

            list.Add(AccessoriesLocal);  // Property causes initialization.
            for (int i = 0; i < AccessoriesLocal.Count; i++)
            {
                var info = AccessoriesLocal[i];

                // Only include stored.  The outfit is responsible for including its accessories.
                if (info.Accessory && info.Accessory.Status == AccessoryStatus.Stored)
                {
                    Accessory.UnsafeGetUndoObjects(info.Accessory);
                }
            }

            if (m_Outfit)
            {
                Outfit.UnsafeGetUndoObjects(m_Outfit, list);
            }

            list.Add(transform);  // For completeness
            list.Add(gameObject); // For completeness
            list.Add(this);
        }