private void SetupIconPreview(CustomPreviewEditor preview) { iconWindow.OnPreviewCreated -= SetupIconPreview; ModularCharacterManager iconCharacter = preview.TargetObject.GetComponent <ModularCharacterManager>(); iconCharacter.SwapGender(currentGender); iconCharacter.ToggleBaseBodyDisplay(false); foreach (var part in armorParts) { if (part.partID > -1) { iconCharacter.ActivatePart(part.bodyType, part.partID); for (int i = 0; i < armorColors.Length; i++) { iconCharacter.SetPartColor(part.bodyType, part.partID, armorColors[i].property, armorColors[i].color); } } else { iconCharacter.DeactivatePart(part.bodyType); } } }
private void OnGUI() { GUILayout.BeginArea(new Rect(previewRect.x + windowPadding.x, previewRect.y + windowPadding.y, previewRect.width - windowPadding.x, previewRect.height - windowPadding.y)); if (previewPrefab != null) { if (previewEditor == null) { previewEditor = Editor.CreateEditor(previewPrefab, typeof(CustomPreviewEditor)) as CustomPreviewEditor; previewEditor.OnPreviewObjectInstantiated += LoadPreviewObject; previewEditor.TargetAsset = previewPrefab; } else { if (characterManager == null) { LoadPreviewObject(previewEditor.TargetObject); } } if (previewEditor.HasPreviewGUI()) { previewEditor.OnInteractivePreviewGUI(new Rect(0, 0, previewRect.width - windowPadding.x, previewRect.height - windowPadding.y), null); } } GUILayout.EndArea(); GUILayout.BeginArea(new Rect(bodyOptionsRect.x + windowPadding.x, bodyOptionsRect.y + windowPadding.y, bodyOptionsRect.width - windowPadding.x, bodyOptionsRect.height - windowPadding.y)); GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Male")) { characterManager.SwapGender(Gender.Male); currentGender = Gender.Male; } if (GUILayout.Button("Female")) { characterManager.SwapGender(Gender.Female); currentGender = Gender.Female; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("ShowBody")) { characterManager.ToggleBaseBodyDisplay(true); } if (GUILayout.Button("HideBody")) { characterManager.ToggleBaseBodyDisplay(false); } GUILayout.EndHorizontal(); if (GUILayout.Button("Reset")) { ResetAll(); } GUILayout.Label("Existing Modular Armor Asset"); EditorGUI.BeginChangeCheck(); existingArmor = EditorGUILayout.ObjectField(existingArmor, typeof(ModularArmor), false) as ModularArmor; if (EditorGUI.EndChangeCheck()) { if (existingArmor != null) { armorName = existingArmor.name; ResetParts(); SetupPartsFromExisting(); SetMaterialColorsToExisting(); characterManager.SetAllPartsMaterial(previewMaterial); InitializeColors(); } else { ResetAll(); } } GUILayout.EndVertical(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(armorOptionsRect.x + windowPadding.x, armorOptionsRect.y + windowPadding.y, armorOptionsRect.width - windowPadding.x, armorOptionsRect.height - windowPadding.y)); EditorGUI.BeginChangeCheck(); armorTypeIndex = EditorGUILayout.Popup(armorTypeIndex, Array.ConvertAll <ModularArmorType, string>(armorTypes, x => x.ToString()), GUILayout.Width(340)); if (EditorGUI.EndChangeCheck()) { ResetParts(); armorParts = GetArmorParts(armorTypes[armorTypeIndex]); SetupParts(); } GUILayout.BeginVertical(); armorScrollView = GUILayout.BeginScrollView(armorScrollView); if (armorParts.Count > 0) { for (int i = 0; i < armorParts.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label(armorParts[i].bodyType.ToString()); EditorGUI.BeginChangeCheck(); int maxPartID = -1; if (characterManager != null) { maxPartID = characterManager.GetCharacterBody()[armorParts[i].bodyType].Length - 1; } activePartID[i] = EditorGUILayout.IntSlider(activePartID[i], -1, maxPartID); if (EditorGUI.EndChangeCheck()) { if (activePartID[i] > -1) { characterManager.ActivatePart(armorParts[i].bodyType, activePartID[i]); } else { characterManager.DeactivatePart(armorParts[i].bodyType); } armorParts[i].partID = activePartID[i]; } GUILayout.EndHorizontal(); } } GUILayout.EndScrollView(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(colorOptionsRect.x + windowPadding.x, colorOptionsRect.y + windowPadding.y, colorOptionsRect.width - windowPadding.x, colorOptionsRect.height - windowPadding.y)); foreach (var armorColor in armorColors) { SetupColorFields(ref armorColor.color, armorColor.property, armorColor.property); } GUILayout.EndArea(); GUILayout.EndVertical(); GUILayout.BeginArea(new Rect(armorNameRect.x + windowPadding.x, armorNameRect.y + windowPadding.y, armorNameRect.width - windowPadding.x, armorNameRect.height - windowPadding.y)); GUILayout.BeginHorizontal(); GUILayout.Label("Armor Name: ", GUILayout.Width(75)); armorName = GUILayout.TextField(armorName, GUILayout.Width(260)); GUILayout.EndHorizontal(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(saveButtonRect.x + windowPadding.x, saveButtonRect.y + windowPadding.y, saveButtonRect.width - windowPadding.x, saveButtonRect.height - windowPadding.y)); GUILayout.BeginHorizontal(); if (GUILayout.Button("Save as New")) { SaveDataToAsset(true); } if (GUILayout.Button("Overwrite Existing")) { SaveDataToAsset(false); } GUILayout.EndHorizontal(); if (GUILayout.Button("Create Icon")) { iconWindow = EditorWindow.GetWindow <IconCreatorWindow>(); iconWindow.Show(); if (iconWindow.PreviewEditor != null) { DestroyImmediate(iconWindow.PreviewEditor); } iconWindow.TargetObject = previewPrefab; iconWindow.OnPreviewCreated += SetupIconPreview; } GUILayout.EndArea(); }