internal override void Apply() { MappingRelevantSettings[] sourceArray = new MappingRelevantSettings[base.targets.Length]; for (int i = 0; i < base.targets.Length; i++) { SerializedObject obj2 = new SerializedObject(base.targets[i]); SerializedProperty property = obj2.FindProperty("m_AnimationType"); SerializedProperty property2 = obj2.FindProperty("m_CopyAvatar"); sourceArray[i].humanoid = property.intValue == 3; sourceArray[i].hasNoAnimation = property.intValue == 0; sourceArray[i].copyAvatar = property2.boolValue; } MappingRelevantSettings[] destinationArray = new MappingRelevantSettings[base.targets.Length]; Array.Copy(sourceArray, destinationArray, base.targets.Length); for (int j = 0; j < base.targets.Length; j++) { if (!this.m_AnimationType.hasMultipleDifferentValues) { destinationArray[j].humanoid = this.m_AnimationType.intValue == 3; } if (!this.m_CopyAvatar.hasMultipleDifferentValues) { destinationArray[j].copyAvatar = this.m_CopyAvatar.boolValue; } } base.serializedObject.ApplyModifiedProperties(); for (int k = 0; k < base.targets.Length; k++) { if (sourceArray[k].usesOwnAvatar && !destinationArray[k].usesOwnAvatar) { SerializedObject serializedObject = new SerializedObject(base.targets[k]); AvatarSetupTool.ClearAll(serializedObject); serializedObject.ApplyModifiedProperties(); } if (!sourceArray[k].usesOwnAvatar && destinationArray[k].usesOwnAvatar) { ModelImporter importer = base.targets[k] as ModelImporter; if (sourceArray[k].hasNoAnimation) { AssetDatabase.ImportAsset(importer.assetPath); } SerializedObject modelImporterSerializedObject = new SerializedObject(base.targets[k]); GameObject original = AssetDatabase.LoadMainAssetAtPath(importer.assetPath) as GameObject; Animator component = original.GetComponent <Animator>(); bool flag = (component != null) && !component.hasTransformHierarchy; if (flag) { original = UnityEngine.Object.Instantiate <GameObject>(original); AnimatorUtility.DeoptimizeTransformHierarchy(original); } AvatarSetupTool.AutoSetupOnInstance(original, modelImporterSerializedObject); this.m_IsBiped = AvatarBipedMapper.IsBiped(original.transform); if (flag) { UnityEngine.Object.DestroyImmediate(original); } modelImporterSerializedObject.ApplyModifiedProperties(); } } }
internal override void Apply() { MappingRelevantSettings[] sourceArray = new MappingRelevantSettings[base.targets.Length]; for (int i = 0; i < base.targets.Length; i++) { SerializedObject obj2 = new SerializedObject(base.targets[i]); SerializedProperty property = obj2.FindProperty("m_AnimationType"); SerializedProperty property2 = obj2.FindProperty("m_CopyAvatar"); sourceArray[i].humanoid = property.intValue == 3; sourceArray[i].hasNoAnimation = property.intValue == 0; sourceArray[i].copyAvatar = property2.boolValue; } MappingRelevantSettings[] destinationArray = new MappingRelevantSettings[base.targets.Length]; Array.Copy(sourceArray, destinationArray, base.targets.Length); for (int j = 0; j < base.targets.Length; j++) { if (!this.m_AnimationType.hasMultipleDifferentValues) { destinationArray[j].humanoid = this.m_AnimationType.intValue == 3; } if (!this.m_CopyAvatar.hasMultipleDifferentValues) { destinationArray[j].copyAvatar = this.m_CopyAvatar.boolValue; } } base.serializedObject.ApplyModifiedProperties(); for (int k = 0; k < base.targets.Length; k++) { if (sourceArray[k].usesOwnAvatar && !destinationArray[k].usesOwnAvatar) { SerializedObject serializedObject = new SerializedObject(base.targets[k]); AvatarSetupTool.ClearAll(serializedObject); serializedObject.ApplyModifiedProperties(); } if (!sourceArray[k].usesOwnAvatar && destinationArray[k].usesOwnAvatar) { ModelImporter importer = base.targets[k] as ModelImporter; if (sourceArray[k].hasNoAnimation) { AssetDatabase.ImportAsset(importer.assetPath); } SerializedObject modelImporterSerializedObject = new SerializedObject(base.targets[k]); GameObject original = AssetDatabase.LoadMainAssetAtPath(importer.assetPath) as GameObject; Animator component = original.GetComponent<Animator>(); bool flag = (component != null) && !component.hasTransformHierarchy; if (flag) { original = UnityEngine.Object.Instantiate<GameObject>(original); AnimatorUtility.DeoptimizeTransformHierarchy(original); } AvatarSetupTool.AutoSetupOnInstance(original, modelImporterSerializedObject); this.m_IsBiped = AvatarBipedMapper.IsBiped(original.transform); if (flag) { UnityEngine.Object.DestroyImmediate(original); } modelImporterSerializedObject.ApplyModifiedProperties(); } } }