mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2024-12-29 18:55:06 +08:00
feat: unified clothing menu
This commit is contained in:
parent
5a45c2b04f
commit
d8cab10a3d
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f64854e011ac2dd49b84527e3cfcfd62
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -54,7 +54,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static bool nowProcessing = false;
|
private static bool nowProcessing = false;
|
||||||
|
|
||||||
public delegate void AvatarProcessorCallback(GameObject obj);
|
internal delegate void AvatarProcessorCallback(GameObject obj, BuildContext context);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This API is NOT stable. Do not use it yet.
|
/// This API is NOT stable. Do not use it yet.
|
||||||
@ -114,7 +114,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
BuildReport.Clear();
|
BuildReport.Clear();
|
||||||
|
|
||||||
ProcessAvatar(avatar);
|
ProcessAvatar(avatar);
|
||||||
Selection.objects = new Object[] { avatar };
|
Selection.objects = new Object[] {avatar};
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -204,11 +204,11 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
new BlendshapeSyncAnimationProcessor().OnPreprocessAvatar(avatarGameObject, context);
|
new BlendshapeSyncAnimationProcessor().OnPreprocessAvatar(avatarGameObject, context);
|
||||||
PhysboneBlockerPass.Process(avatarGameObject);
|
PhysboneBlockerPass.Process(avatarGameObject);
|
||||||
|
|
||||||
|
AfterProcessing?.Invoke(avatarGameObject, context);
|
||||||
|
|
||||||
context.AnimationDatabase.Commit();
|
context.AnimationDatabase.Commit();
|
||||||
|
|
||||||
new GCGameObjectsPass(context, avatarGameObject).OnPreprocessAvatar();
|
new GCGameObjectsPass(context, avatarGameObject).OnPreprocessAvatar();
|
||||||
|
|
||||||
AfterProcessing?.Invoke(avatarGameObject);
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -333,13 +333,13 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
var animator = avatarGameObject.GetComponent<Animator>();
|
var animator = avatarGameObject.GetComponent<Animator>();
|
||||||
var builder = ty_VRCSdkControlPanelAvatarBuilder3A.GetConstructor(Type.EmptyTypes)
|
var builder = ty_VRCSdkControlPanelAvatarBuilder3A.GetConstructor(Type.EmptyTypes)
|
||||||
.Invoke(Array.Empty<object>());
|
.Invoke(Array.Empty<object>());
|
||||||
var perfStats = ty_AvatarPerformanceStats.GetConstructor(new[] { typeof(bool) })
|
var perfStats = ty_AvatarPerformanceStats.GetConstructor(new[] {typeof(bool)})
|
||||||
.Invoke(new object[] { false });
|
.Invoke(new object[] {false});
|
||||||
ty_VRCSdkControlPanelAvatarBuilder3A
|
ty_VRCSdkControlPanelAvatarBuilder3A
|
||||||
.GetMethod("RegisterBuilder", BindingFlags.Public | BindingFlags.Instance)
|
.GetMethod("RegisterBuilder", BindingFlags.Public | BindingFlags.Instance)
|
||||||
.Invoke(builder, new object[] { tempControlPanel });
|
.Invoke(builder, new object[] {tempControlPanel});
|
||||||
ty_VRCSdkControlPanelAvatarBuilder3A.GetMethod("ValidateFeatures").Invoke(
|
ty_VRCSdkControlPanelAvatarBuilder3A.GetMethod("ValidateFeatures").Invoke(
|
||||||
builder, new object[] { avatar, animator, perfStats }
|
builder, new object[] {avatar, animator, perfStats}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@ -354,4 +354,4 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,19 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using VRC.Core;
|
||||||
|
using VRC.SDK3.Avatars.ScriptableObjects;
|
||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
public class EasySetupOutfit
|
public class EasySetupOutfit
|
||||||
{
|
{
|
||||||
|
private static readonly ControlGroup CLOTHING_GROUP
|
||||||
|
= Util.LoadAssetByGuid<GameObject>("e451e988456f35b49a3d011d780bda07")?.GetComponent<ControlGroup>();
|
||||||
|
|
||||||
|
private static readonly VRCExpressionsMenu CLOTHING_MENU
|
||||||
|
= Util.LoadAssetByGuid<VRCExpressionsMenu>("2fe0aa7ecd6bc4443bade672c978f59d");
|
||||||
|
|
||||||
private const int PRIORITY = 49;
|
private const int PRIORITY = 49;
|
||||||
|
|
||||||
[MenuItem("GameObject/[ModularAvatar] Setup Outfit", false, PRIORITY)]
|
[MenuItem("GameObject/[ModularAvatar] Setup Outfit", false, PRIORITY)]
|
||||||
@ -18,13 +26,38 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
var avatarArmature = avatarHips.transform.parent;
|
var avatarArmature = avatarHips.transform.parent;
|
||||||
var outfitArmature = outfitHips.transform.parent;
|
var outfitArmature = outfitHips.transform.parent;
|
||||||
|
|
||||||
if (outfitArmature.GetComponent<ModularAvatarMergeArmature>() != null) return;
|
if (outfitArmature.GetComponent<ModularAvatarMergeArmature>() == null)
|
||||||
|
{
|
||||||
|
var merge = Undo.AddComponent<ModularAvatarMergeArmature>(outfitArmature.gameObject);
|
||||||
|
merge.mergeTarget = new AvatarObjectReference();
|
||||||
|
merge.mergeTarget.referencePath = RuntimeUtil.RelativePath(avatarRoot, avatarArmature.gameObject);
|
||||||
|
merge.InferPrefixSuffix();
|
||||||
|
HeuristicBoneMapper.RenameBonesByHeuristic(merge);
|
||||||
|
}
|
||||||
|
|
||||||
var merge = Undo.AddComponent<ModularAvatarMergeArmature>(outfitArmature.gameObject);
|
if (CLOTHING_MENU == null || CLOTHING_GROUP == null) return;
|
||||||
merge.mergeTarget = new AvatarObjectReference();
|
|
||||||
merge.mergeTarget.referencePath = RuntimeUtil.RelativePath(avatarRoot, avatarArmature.gameObject);
|
var outfitObject = (GameObject) cmd.context;
|
||||||
merge.InferPrefixSuffix();
|
|
||||||
HeuristicBoneMapper.RenameBonesByHeuristic(merge);
|
if (outfitObject.GetComponent<ModularAvatarMenuInstaller>() == null)
|
||||||
|
{
|
||||||
|
var installer = Undo.AddComponent<ModularAvatarMenuInstaller>(outfitObject);
|
||||||
|
installer.installTargetMenu = CLOTHING_MENU;
|
||||||
|
|
||||||
|
var menuItem = Undo.AddComponent<ModularAvatarMenuItem>(outfitObject);
|
||||||
|
menuItem.Control.type = VRCExpressionsMenu.Control.ControlType.Toggle;
|
||||||
|
menuItem.controlGroup = CLOTHING_GROUP;
|
||||||
|
|
||||||
|
var action = Undo.AddComponent<ActionToggleObject>(outfitObject);
|
||||||
|
action.Objects.Add(new ActionToggleObject.ObjectEntry()
|
||||||
|
{
|
||||||
|
target = new AvatarObjectReference()
|
||||||
|
{
|
||||||
|
referencePath = RuntimeUtil.AvatarRootPath(outfitObject)
|
||||||
|
},
|
||||||
|
Active = true
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[MenuItem("GameObject/[ModularAvatar] Setup Outfit", true, PRIORITY)]
|
[MenuItem("GameObject/[ModularAvatar] Setup Outfit", true, PRIORITY)]
|
||||||
|
@ -24,6 +24,60 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void OnPreprocessAvatar(VRCAvatarDescriptor avatar)
|
public void OnPreprocessAvatar(VRCAvatarDescriptor avatar)
|
||||||
|
{
|
||||||
|
List<Action> revertChangesActions = new List<Action>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ApplyControlGroupOverrides(revertChangesActions, avatar);
|
||||||
|
Generate(avatar);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
foreach (var action in revertChangesActions)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
action();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ApplyControlGroupOverrides(List<Action> revertChangesActions, VRCAvatarDescriptor avatar)
|
||||||
|
{
|
||||||
|
foreach (var groupOverride in avatar.GetComponentsInChildren<SetGroupDefaults>(true))
|
||||||
|
{
|
||||||
|
var target = groupOverride.targetControlGroup;
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool oldSynced = target.isSynced;
|
||||||
|
bool oldSaved = target.isSaved;
|
||||||
|
var oldDefault = target.defaultValue;
|
||||||
|
|
||||||
|
revertChangesActions.Add(() =>
|
||||||
|
{
|
||||||
|
if (target == null) return;
|
||||||
|
|
||||||
|
target.isSynced = oldSynced;
|
||||||
|
target.isSaved = oldSaved;
|
||||||
|
target.defaultValue = oldDefault;
|
||||||
|
});
|
||||||
|
|
||||||
|
target.isSynced = groupOverride.isSynced;
|
||||||
|
target.isSaved = groupOverride.isSaved;
|
||||||
|
target.defaultValue = groupOverride.defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Generate(VRCAvatarDescriptor avatar)
|
||||||
{
|
{
|
||||||
// Locate MenuActions
|
// Locate MenuActions
|
||||||
var actionMenus = avatar.GetComponentsInChildren<MenuAction>(true)
|
var actionMenus = avatar.GetComponentsInChildren<MenuAction>(true)
|
||||||
|
@ -262,5 +262,13 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
return path.Contains("/AV3 Demo Assets/Animation/ProxyAnim/proxy")
|
return path.Contains("/AV3 Demo Assets/Animation/ProxyAnim/proxy")
|
||||||
|| path.Contains("/VRCSDK/Examples3/Animation/ProxyAnim/proxy");
|
|| path.Contains("/VRCSDK/Examples3/Animation/ProxyAnim/proxy");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static T LoadAssetByGuid<T>(string guid) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||||
|
if (string.IsNullOrWhiteSpace(path)) return null;
|
||||||
|
|
||||||
|
return AssetDatabase.LoadAssetAtPath<T>(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
[assembly: InternalsVisibleTo("net.fushizen.xdress")]
|
||||||
|
[assembly: InternalsVisibleTo("net.fushizen.xdress.editor")]
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 13191adee0f6404897a89756755f1857
|
||||||
|
timeCreated: 1683259670
|
@ -11,7 +11,5 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
[DisallowMultipleComponent]
|
[DisallowMultipleComponent]
|
||||||
public abstract class ActionController : AvatarTagComponent
|
public abstract class ActionController : AvatarTagComponent
|
||||||
{
|
{
|
||||||
internal abstract bool isSyncedProp { get; }
|
|
||||||
internal abstract bool isSavedProp { get; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,7 +3,7 @@
|
|||||||
namespace nadena.dev.modular_avatar.core
|
namespace nadena.dev.modular_avatar.core
|
||||||
{
|
{
|
||||||
[AddComponentMenu("Modular Avatar/MA Control Group")]
|
[AddComponentMenu("Modular Avatar/MA Control Group")]
|
||||||
public class ControlGroup : AvatarTagComponent
|
public class ControlGroup : ActionController
|
||||||
{
|
{
|
||||||
public bool isSynced = true;
|
public bool isSynced = true;
|
||||||
public bool isSaved = true;
|
public bool isSaved = true;
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
namespace nadena.dev.modular_avatar.core
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Tag class which overrides the default configuration of a control group. This is primarily used for asset-based
|
||||||
|
/// shared control groups which can't be configured in place.
|
||||||
|
/// </summary>
|
||||||
|
public class SetGroupDefaults : AvatarTagComponent
|
||||||
|
{
|
||||||
|
public bool isSynced;
|
||||||
|
public bool isSaved;
|
||||||
|
public ModularAvatarMenuItem defaultValue;
|
||||||
|
public ControlGroup targetControlGroup;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a6629f9f600742c5856a09779ca0bf12
|
||||||
|
timeCreated: 1683264633
|
@ -30,9 +30,6 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
|
|
||||||
public bool isSaved = true;
|
public bool isSaved = true;
|
||||||
|
|
||||||
internal override bool isSyncedProp => isSynced;
|
|
||||||
internal override bool isSavedProp => isSaved;
|
|
||||||
|
|
||||||
protected override void OnValidate()
|
protected override void OnValidate()
|
||||||
{
|
{
|
||||||
base.OnValidate();
|
base.OnValidate();
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a588d47980ee09a4ebc7e3b2411b2222
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,112 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1080921226743144895
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 570747844396393361}
|
||||||
|
- component: {fileID: 8592491745236883318}
|
||||||
|
- component: {fileID: 8665741192270437505}
|
||||||
|
- component: {fileID: 778752409363411128}
|
||||||
|
- component: {fileID: 1787808300107497781}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: BaseOutfit
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &570747844396393361
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1080921226743144895}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: -3.1377757, y: -1.206413, z: -5.7641807}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &8592491745236883318
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1080921226743144895}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 7ef83cb0c23d4d7c9d41021e544a1978, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
menuToAppend: {fileID: 0}
|
||||||
|
installTargetMenu: {fileID: 11400000, guid: 2fe0aa7ecd6bc4443bade672c978f59d, type: 2}
|
||||||
|
--- !u!114 &8665741192270437505
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1080921226743144895}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3b29d45007c5493d926d2cd45a489529, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Control:
|
||||||
|
name:
|
||||||
|
icon: {fileID: 0}
|
||||||
|
type: 102
|
||||||
|
parameter:
|
||||||
|
name:
|
||||||
|
value: 1
|
||||||
|
style: 0
|
||||||
|
subMenu: {fileID: 0}
|
||||||
|
subParameters: []
|
||||||
|
labels: []
|
||||||
|
MenuSource: 0
|
||||||
|
menuSource_otherObjectChildren: {fileID: 0}
|
||||||
|
controlGroup: {fileID: 2600055823091535516, guid: e451e988456f35b49a3d011d780bda07,
|
||||||
|
type: 3}
|
||||||
|
isSynced: 1
|
||||||
|
isSaved: 1
|
||||||
|
--- !u!114 &778752409363411128
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1080921226743144895}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fcac4d9412424173bd294ffd5fc5f9db, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Objects:
|
||||||
|
- target:
|
||||||
|
referencePath:
|
||||||
|
Active: 1
|
||||||
|
--- !u!114 &1787808300107497781
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1080921226743144895}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a6629f9f600742c5856a09779ca0bf12, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
isSynced: 1
|
||||||
|
isSaved: 1
|
||||||
|
defaultValue: {fileID: 8665741192270437505}
|
||||||
|
targetControlGroup: {fileID: 2600055823091535516, guid: e451e988456f35b49a3d011d780bda07,
|
||||||
|
type: 3}
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b784af569c82a4845807cfe1775b4d2f
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,182 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &4243820046722602069
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4243820046722602068}
|
||||||
|
- component: {fileID: 4243820046722602075}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Outfits
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &4243820046722602068
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4243820046722602069}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 4243820047656436306}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4243820046722602075
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4243820046722602069}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3b29d45007c5493d926d2cd45a489529, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Control:
|
||||||
|
name:
|
||||||
|
icon: {fileID: 0}
|
||||||
|
type: 103
|
||||||
|
parameter:
|
||||||
|
name:
|
||||||
|
value: 1
|
||||||
|
style: 0
|
||||||
|
subMenu: {fileID: 11400000, guid: 2fe0aa7ecd6bc4443bade672c978f59d, type: 2}
|
||||||
|
subParameters: []
|
||||||
|
labels: []
|
||||||
|
MenuSource: 0
|
||||||
|
menuSource_otherObjectChildren: {fileID: 0}
|
||||||
|
controlGroup: {fileID: 0}
|
||||||
|
isSynced: 1
|
||||||
|
isSaved: 1
|
||||||
|
--- !u!1 &4243820047656436300
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4243820047656436306}
|
||||||
|
- component: {fileID: 4243820047656436307}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: ClothingMenu
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &4243820047656436306
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4243820047656436300}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -3.1377757, y: -1.206413, z: -5.7641807}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1425964763638874286}
|
||||||
|
- {fileID: 4243820046722602068}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4243820047656436307
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4243820047656436300}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 97e46a47dd8a425eb4ce9411defe313d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
targetObject: {fileID: 4243820047656436300}
|
||||||
|
--- !u!1001 &1450650863557829439
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
m_TransformParent: {fileID: 4243820047656436306}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_RootOrder
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -3.1377757
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: -1.206413
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: -5.7641807
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1080921226743144895, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: BaseOutfit
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: b784af569c82a4845807cfe1775b4d2f, type: 3}
|
||||||
|
--- !u!4 &1425964763638874286 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 570747844396393361, guid: b784af569c82a4845807cfe1775b4d2f,
|
||||||
|
type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 1450650863557829439}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2097228906bdff44fb40a3d9f39cf599
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3376212393282143958
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8419335417409494192}
|
||||||
|
- component: {fileID: 2600055823091535516}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Modular Avatar Clothing Group
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8419335417409494192
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3376212393282143958}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -3.1377757, y: -1.206413, z: -5.7641807}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &2600055823091535516
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3376212393282143958}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 99c60d83ad614e81a0488d98b83b5c1c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
isSynced: 1
|
||||||
|
isSaved: 1
|
||||||
|
defaultValue: {fileID: 0}
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e451e988456f35b49a3d011d780bda07
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name: Modular Avatar Clothing Menu Contents
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
controls: []
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2fe0aa7ecd6bc4443bade672c978f59d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,4 +1,6 @@
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("nadena.dev.modular-avatar.core.editor")]
|
[assembly: InternalsVisibleTo("nadena.dev.modular-avatar.core.editor")]
|
||||||
|
[assembly: InternalsVisibleTo("net.fushizen.xdress")]
|
||||||
|
[assembly: InternalsVisibleTo("net.fushizen.xdress.editor")]
|
||||||
[assembly: InternalsVisibleTo("Tests")]
|
[assembly: InternalsVisibleTo("Tests")]
|
Loading…
Reference in New Issue
Block a user