Exemple #1
0
        public static void DestroyComponentsMatching(GameObject dst, IsDesiredComponent componentFilter)
        {
            var dstComponents = new List <Component>();

            dst.GetComponents(dstComponents);
            dstComponents.RemoveAll(x => !componentFilter(x));
            DestroyComponents(dstComponents);
        }
Exemple #2
0
        public static void ReplaceComponentsIfDifferent(GameObject src, GameObject dst, IsDesiredComponent componentFilter)
        {
            var srcComponents = new List <Component>();

            src.GetComponents(srcComponents);
            srcComponents.RemoveAll(x => !componentFilter(x));

            var dstComponents = new List <Component>();

            dst.GetComponents(dstComponents);
            dstComponents.RemoveAll(x => !componentFilter(x));

            // Generate components
            if (!CompareComponentOrderAndTypes(srcComponents, dstComponents))
            {
                DestroyComponents(dstComponents);

                // Add src components to dst
                dstComponents.Clear();
                for (int i = 0; i != srcComponents.Count; i++)
                {
                    Component com = dst.AddComponent(srcComponents[i].GetType());
                    dstComponents.Add(com);
                }
            }

            // Copy Data to components
            for (int i = 0; i != srcComponents.Count; i++)
            {
                UnityEditor.EditorUtility.CopySerializedIfDifferent(srcComponents[i], dstComponents[i]);
            }
        }
 public static void DestroyComponentsMatching(GameObject dst, IsDesiredComponent componentFilter)
 {