Skip to content

Commit

Permalink
Merge pull request #37 from raiti-chan/develop
Browse files Browse the repository at this point in the history
Release 1.2.0-bata.3
  • Loading branch information
raiti-chan authored Jul 2, 2024
2 parents 9928748 + 1533ecd commit 1e09297
Show file tree
Hide file tree
Showing 13 changed files with 675 additions and 136 deletions.
12 changes: 11 additions & 1 deletion Packages/packages-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,15 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.postprocessing": {
"version": "3.2.2",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.33",
"depth": 0,
Expand Down Expand Up @@ -183,7 +192,8 @@
"com.unity.mathematics": "1.2.6",
"com.unity.nuget.newtonsoft-json": "3.2.1",
"com.unity.xr.management": "4.3.3",
"com.unity.xr.oculus": "4.0.0"
"com.unity.xr.oculus": "4.0.0",
"com.unity.postprocessing": "3.2.2"
}
},
"com.vrchat.core.vpm-resolver": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Linq;
using nadena.dev.modular_avatar.core;
using nadena.dev.ndmf;
using raitichan.com.modular_avatar.extensions.Editor.ReflectionHelper.ModularAvatar;
using raitichan.com.modular_avatar.extensions.Modules;
using raitichan.com.modular_avatar.extensions.Serializable;
using UnityEditor;
Expand All @@ -28,26 +27,78 @@ public override RuntimeAnimatorController CreateController(BuildContext context)
AnimatorController controller = new AnimatorController();
AssetDatabase.AddObjectToAsset(controller, context.AssetContainer);
string path = MAExAnimatorFactoryUtils.GetBindingPath(this.Target.transform);
if (this.Target.GetComponent<ModularAvatarBoneProxy>() is ModularAvatarBoneProxy boneProxy) {
// BoneProxyがあった場合BoneProxyの参照先をパスにする
// TODO: 通常BoneProxyが解決してくれる筈だけど動かない原因を突き止める
if (boneProxy.target != null) {
path = $"{MAExAnimatorFactoryUtils.GetBindingPath(boneProxy.target)}/{Target.name}";
{
if (this.Target.GetComponent<ModularAvatarBoneProxy>() is { } boneProxy) {
// BoneProxyがあった場合BoneProxyの参照先をパスにする
// TODO: 通常BoneProxyが解決してくれる筈だけど動かない原因を突き止める
if (boneProxy.target != null) {
path = $"{MAExAnimatorFactoryUtils.GetBindingPath(boneProxy.target)}/{Target.name}";
}
}
}

List<string> additionalPaths = new List<string>();
foreach (GameObject additionalTarget in this.Target.additionalToggleObjects) {
if (additionalTarget.GetComponent<ModularAvatarBoneProxy>() is { } boneProxy) {
// BoneProxyがあった場合BoneProxyの参照先をパスにする
// TODO: 通常BoneProxyが解決してくれる筈だけど動かない原因を突き止める
if (boneProxy.target != null) {
additionalPaths.Add($"{MAExAnimatorFactoryUtils.GetBindingPath(boneProxy.target)}/{additionalTarget.name}");
}
} else {
additionalPaths.Add($"{MAExAnimatorFactoryUtils.GetBindingPath(additionalTarget.transform)}");
}
}

List<string> additionalInvertPaths = new List<string>();
foreach (GameObject additionalTarget in this.Target.additionalInvertToggleObjects) {
if (additionalTarget.GetComponent<ModularAvatarBoneProxy>() is { } boneProxy) {
// BoneProxyがあった場合BoneProxyの参照先をパスにする
// TODO: 通常BoneProxyが解決してくれる筈だけど動かない原因を突き止める
if (boneProxy.target != null) {
additionalInvertPaths.Add($"{MAExAnimatorFactoryUtils.GetBindingPath(boneProxy.target)}/{additionalTarget.name}");
}
} else {
additionalInvertPaths.Add($"{MAExAnimatorFactoryUtils.GetBindingPath(additionalTarget.transform)}");
}
}

AnimationClip offClip = new AnimationClip { name = $"{this.Target.parameterName}_OFF" };
AnimationCurve offCurve = new AnimationCurve();
offCurve.AddKey(new Keyframe(0, 0));
offClip.SetCurve(path, typeof(GameObject), "m_IsActive", offCurve);
{
AnimationCurve offCurve = new AnimationCurve();
offCurve.AddKey(new Keyframe(0, 0));
offClip.SetCurve(path, typeof(GameObject), "m_IsActive", offCurve);
}
this.AddBlendShapeCurve(offClip, this.Target.isInvert == this.Target.defaultValue);
foreach (string additionalPath in additionalPaths) {
AnimationCurve offCurve = new AnimationCurve();
offCurve.AddKey(new Keyframe(0, 0));
offClip.SetCurve(additionalPath, typeof(GameObject), "m_IsActive", offCurve);
}
foreach (string additionalInvertPath in additionalInvertPaths) {
AnimationCurve offCurve = new AnimationCurve();
offCurve.AddKey(new Keyframe(0, 1));
offClip.SetCurve(additionalInvertPath, typeof(GameObject), "m_IsActive", offCurve);
}
AssetDatabase.AddObjectToAsset(offClip, controller);

AnimationClip onClip = new AnimationClip { name = $"{this.Target.parameterName}_ON" };
AnimationCurve onCurve = new AnimationCurve();
onCurve.AddKey(new Keyframe(0, 1));
onClip.SetCurve(path, typeof(GameObject), "m_IsActive", onCurve);
{
AnimationCurve onCurve = new AnimationCurve();
onCurve.AddKey(new Keyframe(0, 1));
onClip.SetCurve(path, typeof(GameObject), "m_IsActive", onCurve);
}
this.AddBlendShapeCurve(onClip, this.Target.isInvert != this.Target.defaultValue);
foreach (string additionalPath in additionalPaths) {
AnimationCurve onCurve = new AnimationCurve();
onCurve.AddKey(new Keyframe(0, 1));
onClip.SetCurve(additionalPath, typeof(GameObject), "m_IsActive", onCurve);
}
foreach (string additionalInvertPath in additionalInvertPaths) {
AnimationCurve onCurve = new AnimationCurve();
onCurve.AddKey(new Keyframe(0, 0));
onClip.SetCurve(additionalInvertPath, typeof(GameObject), "m_IsActive", onCurve);
}
AssetDatabase.AddObjectToAsset(onClip, controller);


Expand All @@ -60,6 +111,24 @@ public override RuntimeAnimatorController CreateController(BuildContext context)
public override void PostProcess(BuildContext context) {
GameObject targetObject = this.Target.gameObject;
ModularAvatarMenuInstaller menuInstaller = targetObject.GetComponent<ModularAvatarMenuInstaller>();
if (menuInstaller == null) menuInstaller = targetObject.AddComponent<ModularAvatarMenuInstaller>();
menuInstaller.menuToAppend = null;

ModularAvatarMenuItem menuItem = targetObject.GetComponent<ModularAvatarMenuItem>();
if (menuItem == null && targetObject.GetComponent<ModularAvatarMenuGroup>() == null) {
targetObject.AddComponent<ModularAvatarMenuGroup>();
}

if (menuItem == null) {
GameObject menuItemObject = new GameObject(this.Target.displayName);
menuItemObject.transform.SetParent(targetObject.transform);
menuItem = menuItemObject.AddComponent<ModularAvatarMenuItem>();
}

menuItem.Control.icon = this.Target.menuIcon;
menuItem.Control.type = VRCExpressionsMenu.Control.ControlType.Toggle;
menuItem.Control.parameter = new VRCExpressionsMenu.Control.Parameter { name = this.Target.parameterName };
/*
VRCExpressionsMenu expressionsMenu = ScriptableObject.CreateInstance<VRCExpressionsMenu>();
expressionsMenu.controls.Add(new VRCExpressionsMenu.Control {
name = this.Target.displayName,
Expand All @@ -69,8 +138,10 @@ public override void PostProcess(BuildContext context) {
});
AssetDatabase.AddObjectToAsset(expressionsMenu, context.AssetContainer);
menuInstaller.menuToAppend = expressionsMenu;
*/

ModularAvatarParameters parameters = targetObject.GetComponent<ModularAvatarParameters>();
if (parameters == null) parameters = targetObject.AddComponent<ModularAvatarParameters>();
parameters.parameters.Add(new ParameterConfig {
nameOrPrefix = this.Target.parameterName,
internalParameter = this.Target.isInternal,
Expand All @@ -83,6 +154,14 @@ public override void PostProcess(BuildContext context) {
// デフォルトの状態に設定(Animatorをブロックされている際にもデフォルト状態で表示されるように)
// オブジェクト
targetObject.SetActive(this.Target.isInvert != this.Target.defaultValue);

foreach (GameObject additionalToggleObject in this.Target.additionalToggleObjects) {
additionalToggleObject.SetActive(this.Target.isInvert != this.Target.defaultValue);
}

foreach (GameObject additionalInvertToggleObject in this.Target.additionalInvertToggleObjects) {
additionalInvertToggleObject.SetActive(this.Target.isInvert == this.Target.defaultValue);
}

// ブレンドシェイプは、現在の状態をデフォルトとするのでいらない
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ public class ToggleAnimatorGeneratorEditor : MAExEditorBase {
private SerializedProperty _isInternalProperty;
private SerializedProperty _savedProperty;
private SerializedProperty _defaultValueProperty;
private SerializedProperty _blendShapeDataListProperty;
private SerializedProperty _additionalToggleObjectsProperty;
private SerializedProperty _additionalInvertToggleObjectsProperty;

private void OnEnable() {
this._parameterNameProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.parameterName));
Expand All @@ -18,6 +21,9 @@ private void OnEnable() {
this._isInternalProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.isInternal));
this._savedProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.saved));
this._defaultValueProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.defaultValue));
this._blendShapeDataListProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.blendShapeDataList));
this._additionalToggleObjectsProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.additionalToggleObjects));
this._additionalInvertToggleObjectsProperty = this.serializedObject.FindProperty(nameof(MAExToggleAnimatorGenerator.additionalInvertToggleObjects));
}

protected override void OnInnerInspectorGUI() {
Expand All @@ -29,6 +35,10 @@ protected override void OnInnerInspectorGUI() {
EditorGUILayout.PropertyField(this._isInternalProperty);
EditorGUILayout.PropertyField(this._savedProperty);
EditorGUILayout.PropertyField(this._defaultValueProperty);
// TODO: ブレンドシェイプのUIを作る
EditorGUILayout.PropertyField(this._blendShapeDataListProperty);
EditorGUILayout.PropertyField(this._additionalToggleObjectsProperty);
EditorGUILayout.PropertyField(this._additionalInvertToggleObjectsProperty);

this.serializedObject.ApplyModifiedProperties();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
using System.Collections.Generic;
using nadena.dev.modular_avatar.core;
using raitichan.com.modular_avatar.extensions.Serializable;
using UnityEngine;

namespace raitichan.com.modular_avatar.extensions.Modules {
[DisallowMultipleComponent]
[RequireComponent(typeof(ModularAvatarMenuInstaller))]
[RequireComponent(typeof(ModularAvatarParameters))]
[AddComponentMenu("Modular Avatar/MAEx Toggle Animator Generator")]
public class MAExToggleAnimatorGenerator : MAExAnimatorGeneratorModuleBase<MAExToggleAnimatorGenerator> {
public string displayName;
Expand All @@ -18,5 +15,7 @@ public class MAExToggleAnimatorGenerator : MAExAnimatorGeneratorModuleBase<MAExT
public bool defaultValue;
// デフォルトの状態とは反対になった場合に機能するブレンドシェイプ
public List<BlendShapeData> blendShapeDataList;
public List<GameObject> additionalToggleObjects;
public List<GameObject> additionalInvertToggleObjects;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "raitichan.com.modular-avatar.extensions",
"rootNamespace": "",
"references": [
"GUID:fe747755f7b44e048820525b07f9b956",
"GUID:fc900867c0f47cd49b6e2ae4ef907300"
Expand Down
4 changes: 2 additions & 2 deletions Packages/raitichan.com.modular-avatar.extensions/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "raitichan.com.modular-avatar.extensions",
"displayName": "Modular Avatar Extensions",
"version": "1.2.0-bata.2",
"version": "1.2.0-bata.3",
"unity": "2022.3",
"description": "Extend Modular Avatar and add various modules.",
"author": {
"name": "Raitichan",
"email": "",
"url": "https://github.com/raiti-chan"
},
"url": "https://github.com/raiti-chan/modular-avatar-extensions/releases/download/1.2.0-bata.2/raitichan.com.modular-avatar.extensions-1.2.0-bata.2.zip",
"url": "https://github.com/raiti-chan/modular-avatar-extensions/releases/download/1.2.0-bata.3/raitichan.com.modular-avatar.extensions-1.2.0-bata.3.zip",
"repo": "https://raw.githubusercontent.com/raiti-chan/modular-avatar-extensions/master/vpm.json",
"vpmDependencies": {
"com.vrchat.avatars": ">=3.5.0",
Expand Down
45 changes: 24 additions & 21 deletions Packages/vpm-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
"com.vrchat.core.vpm-resolver": {
"version": "0.1.17"
},
"nadena.dev.modular-avatar": {
"version": "1.5.1"
},
"jp.lilxyzw.liltoon": {
"version": "1.4.0"
},
Expand All @@ -17,22 +14,21 @@
},
"com.vrchat.avatars": {
"version": "3.5.0"
},
"nadena.dev.ndmf": {
"version": "1.4.1"
},
"nadena.dev.modular-avatar": {
"version": "1.9.13"
}
},
"locked": {
"com.vrchat.core.vpm-resolver": {
"version": "0.1.27",
"version": "0.1.28",
"dependencies": {}
},
"nadena.dev.modular-avatar": {
"version": "1.8.3",
"dependencies": {
"com.vrchat.avatars": ">=3.2.0",
"nadena.dev.ndmf": ">=1.2.5 <2.0.0-a"
}
},
"jp.lilxyzw.liltoon": {
"version": "1.4.1",
"version": "1.7.2",
"dependencies": {}
},
"vrchat.blackstartx.gesture-manager": {
Expand All @@ -42,24 +38,31 @@
}
},
"lyuma.av3emulator": {
"version": "3.2.4",
"version": "3.3.1",
"dependencies": {
"com.vrchat.avatars": ">=3.1.0 <3.5.0"
"com.vrchat.avatars": ">=3.1.0 <3.6.0"
}
},
"nadena.dev.ndmf": {
"version": "1.2.5",
"dependencies": {}
},
"com.vrchat.avatars": {
"version": "3.5.0",
"version": "3.5.1",
"dependencies": {
"com.vrchat.base": "3.5.0"
"com.vrchat.base": "3.5.1"
}
},
"com.vrchat.base": {
"version": "3.5.0",
"version": "3.5.1",
"dependencies": {}
},
"nadena.dev.ndmf": {
"version": "1.4.1",
"dependencies": {}
},
"nadena.dev.modular-avatar": {
"version": "1.9.13",
"dependencies": {
"com.vrchat.avatars": ">=3.4.0",
"nadena.dev.ndmf": ">=1.4.1 <2.0.0-a"
}
}
}
}
14 changes: 9 additions & 5 deletions ProjectSettings/GraphicsSettings.asset
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
--- !u!30 &1
GraphicsSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
serializedVersion: 15
m_Deferred:
m_Mode: 1
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
Expand All @@ -13,9 +13,6 @@ GraphicsSettings:
m_ScreenSpaceShadows:
m_Mode: 1
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
m_LegacyDeferred:
m_Mode: 1
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
m_DepthNormals:
m_Mode: 1
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
Expand All @@ -28,8 +25,10 @@ GraphicsSettings:
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_VideoShadersIncludeMode: 2
m_AlwaysIncludedShaders: []
m_PreloadedShaders: []
m_PreloadShadersBatchTimeLimit: -1
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}
m_CustomRenderPipeline: {fileID: 0}
Expand All @@ -41,6 +40,7 @@ GraphicsSettings:
m_LightmapStripping: 0
m_FogStripping: 0
m_InstancingStripping: 0
m_BrgStripping: 0
m_LightmapKeepPlain: 1
m_LightmapKeepDirCombined: 1
m_LightmapKeepDynamicPlain: 1
Expand All @@ -53,5 +53,9 @@ GraphicsSettings:
m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 1
m_LightsUseColorTemperature: 1
m_DefaultRenderingLayerMask: 1
m_LogWhenShaderIsCompiled: 0
m_AllowEnlightenSupportForUpgradedProject: 0
m_SRPDefaultSettings: {}
m_LightProbeOutsideHullStrategy: 0
m_CameraRelativeLightCulling: 0
m_CameraRelativeShadowCulling: 0
Loading

0 comments on commit 1e09297

Please sign in to comment.