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(); } } }
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(); } } }