private static void PopulatePrefabSerializedProgramAssetReferences(string prefabPath)
        {
            using (EditPrefabAssetScope editScope = new EditPrefabAssetScope(prefabPath))
            {
                if (!editScope.IsEditable)
                {
                    return;
                }

                UdonBehaviour[] udonBehaviours = editScope.PrefabRoot.GetComponentsInChildren <UdonBehaviour>();
                if (udonBehaviours.Length <= 0)
                {
                    return;
                }

                bool dirty = false;
                foreach (UdonBehaviour udonBehaviour in udonBehaviours)
                {
                    if (PopulateSerializedProgramAssetReference(udonBehaviour))
                    {
                        dirty = true;
                    }
                }

                if (dirty)
                {
                    editScope.MarkDirty();
                }
            }
        }
예제 #2
0
        private static void PopulatePrefabSerializedProgramAssetReferences(string prefabPath)
        {
            using (EditPrefabAssetScope editScope = new EditPrefabAssetScope(prefabPath))
            {
                if (!editScope.IsEditable)
                {
                    return;
                }

                editScope.PrefabRoot.GetComponentsInChildren(prefabBehavioursTempList);
                if (prefabBehavioursTempList.Count < 1)
                {
                    return;
                }

                bool dirty = false;
                foreach (UdonBehaviour udonBehaviour in prefabBehavioursTempList)
                {
                    if (PopulateSerializedProgramAssetReference(udonBehaviour))
                    {
                        dirty = true;
                    }
                }

                if (dirty)
                {
                    editScope.MarkDirty();
                }
            }
        }
        private static void RefreshPrefabUdonBehaviours(List <string> prefabAssetPaths)
        {
            if (prefabAssetPaths.Count == 0)
            {
                return;
            }

            foreach ((string prefabPath, int index) in prefabAssetPaths.Select((item, index) => (item, index)))
            {
                using (EditPrefabAssetScope editScope = new EditPrefabAssetScope(prefabPath))
                {
                    if (!editScope.IsEditable)
                    {
                        continue;
                    }

                    UdonBehaviour[] udonBehaviours = editScope.PrefabRoot.GetComponentsInChildren <UdonBehaviour>();
                    if (udonBehaviours.Length <= 0)
                    {
                        continue;
                    }

                    foreach (UdonBehaviour udonBehaviour in udonBehaviours)
                    {
                        udonBehaviour.RefreshProgram();
                    }

                    editScope.MarkDirty();
                }
            }
        }