diff --git a/Assets/Action.controller b/Assets/Action.controller index 0e343b7..014cf4b 100644 --- a/Assets/Action.controller +++ b/Assets/Action.controller @@ -1032,6 +1032,33 @@ AnimatorTransition: m_Mute: 0 m_IsExit: 1 serializedVersion: 1 +--- !u!1102 &-3280754266949565544 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Emote + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 7037974289639616062} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: d81d85bc25611904381a0e045acf5102, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1101 &-3265485386340023255 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -1467,6 +1494,31 @@ AnimatorTransition: m_Mute: 0 m_IsExit: 1 serializedVersion: 1 +--- !u!1107 &-728177431912190640 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Emote + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 7208050822004214428} + m_Position: {x: 172.43927, y: 206.4577, z: 0} + - serializedVersion: 1 + m_State: {fileID: -3280754266949565544} + m_Position: {x: 280, y: 340, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 7208050822004214428} --- !u!1101 &-712573608483351126 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -1580,91 +1632,91 @@ AnimatorController: m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: Seated m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: InStation m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: NBitVRCEmote m_Type: 3 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: Dummy m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_TRACKING_RECOVERY_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_AFK_LOCOMOTION_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_DANCE_GIMMICK_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX1 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX2 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: EmotePrefab/AFKIndex m_Type: 3 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: EmotePrefab/Next m_Type: 3 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: EmotePrefab/Height m_Type: 1 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX3 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: EmotePrefab/AFKController @@ -1690,6 +1742,18 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} + - serializedVersion: 5 + m_Name: EmotePrefab/PorkerFace + m_StateMachine: {fileID: 2085437582568805299} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} --- !u!1109 &45996868880359724 AnimatorTransition: m_ObjectHideFlags: 1 @@ -2197,6 +2261,29 @@ MonoBehaviour: trackingEyes: 0 trackingMouth: 0 debugString: +--- !u!1107 &2085437582568805299 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EmotePrefab/PorkerFace + m_ChildStates: [] + m_ChildStateMachines: + - serializedVersion: 1 + m_StateMachine: {fileID: -728177431912190640} + m_Position: {x: 133.11935, y: 177.64667, z: 0} + m_AnyStateTransitions: [] + m_EntryTransitions: + - {fileID: 2496871633288796059} + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 7208050822004214428} --- !u!1101 &2103872080703672006 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -2332,6 +2419,20 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1109 &2496871633288796059 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: -728177431912190640} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 --- !u!1101 &2553212659088598743 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -2442,7 +2543,7 @@ MonoBehaviour: destMin: 0 destMax: 0 - type: 3 - name: VRCEmote + name: NBitVRCEmote source: EmotePrefab/Next value: 0 valueMin: 0 @@ -3418,6 +3519,57 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &7037974289639616062 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: CN_IS_ACTION_ACTIVE + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7208050822004214428} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &7208050822004214428 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Normal + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: d81d85bc25611904381a0e045acf5102, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1101 &7243961208248905106 AnimatorStateTransition: m_ObjectHideFlags: 1 diff --git a/Assets/FX.controller b/Assets/FX.controller index dc12eeb..f1185c2 100644 --- a/Assets/FX.controller +++ b/Assets/FX.controller @@ -1417,79 +1417,79 @@ AnimatorController: m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: Seated m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: InStation m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: NBitVRCEmote m_Type: 3 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: Dummy m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_TRACKING_RECOVERY_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_AFK_LOCOMOTION_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: SYNC_CN_DANCE_GIMMICK_ENABLE m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX1 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX2 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: EmotePrefab/FootLock m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} - m_Name: CN_IS_ACTION_ACTIVE_FX3 m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: EmotePrefab/PorkerFace @@ -1578,8 +1578,7 @@ AnimatorState: m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] - m_StateMachineBehaviours: - - {fileID: 4486385858604628382} + m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 m_WriteDefaultValues: 0 @@ -2513,33 +2512,6 @@ AnimatorTransition: m_Mute: 0 m_IsExit: 0 serializedVersion: 1 ---- !u!114 &4486385858604628382 -MonoBehaviour: - m_ObjectHideFlags: 1 - 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: -706344726, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} - m_Name: - m_EditorClassIdentifier: - parameters: - - type: 0 - name: CN_IS_ACTION_ACTIVE_FX1 - source: - value: 1 - valueMin: 0 - valueMax: 0 - chance: 0 - convertRange: 0 - sourceMin: 0 - sourceMax: 0 - destMin: 0 - destMax: 0 - localOnly: 0 - debugString: --- !u!1101 &4704642585726803096 AnimatorStateTransition: m_ObjectHideFlags: 1 diff --git a/Editor/StateMachineWriterEmotePorkerFace.cs b/Editor/StateMachineWriterEmotePorkerFace.cs index cecfc5d..36a7978 100644 --- a/Editor/StateMachineWriterEmotePorkerFace.cs +++ b/Editor/StateMachineWriterEmotePorkerFace.cs @@ -19,32 +19,42 @@ namespace com.github.pandrabox.emoteprefab.editor { public class StateMachineWriterEmotePorkerFace : StateMachineWriterEmote0 { - public StateMachineWriterEmotePorkerFace() : base(FXController, "EmotePrefab/PorkerFace", "Emote", "Prepare standing") + AnimatorState _emoteState; + public StateMachineWriterEmotePorkerFace() : base(ActionController, "EmotePrefab/PorkerFace", "Emote", "Normal") { - } - protected override void CreateState() { } + int[] emotionLayers = new int[]{ 1,2 }; + foreach(int layer in emotionLayers) + { + var beh = _initialState.AddStateMachineBehaviour(); + beh.playable = VRC.SDKBase.VRC_AnimatorLayerControl.BlendableLayer.FX; + beh.layer = layer; + beh.goalWeight = 1; + beh.blendDuration = 0.1f; + } + foreach (int layer in emotionLayers) + { + var beh = _emoteState.AddStateMachineBehaviour(); + beh.playable = VRC.SDKBase.VRC_AnimatorLayerControl.BlendableLayer.FX; + beh.layer = layer; + beh.goalWeight = 0; + beh.blendDuration = 0.1f; + } + } - protected override void CreateStates() + protected override void CreateState() { - if (_clip.PokerFace == null) return; - CreateState(StateName("E", _nEmote, _nChain), _clip.PokerFace); + _emoteState = GetState("Emote"); } + protected override void CreateStates() { } + protected override void CreateTransition() { - if (_clip.PokerFace != null) - { - var currentState = GetState("E", _nEmote, _nChain); - var nextState = GetState("E", _nEmote, _nChain + 1) ?? GetState("Recovery standing"); - StartTransition(_initialState, currentState, _trans.Start); - OneshotTransition(currentState, nextState, _trans.AutoExit); - ManualExitTransition(currentState, nextState, _trans.ManualExit); - ForceExitTransition(currentState, GetState("Force Exit"), _trans.Sit); - } - else + EditorCurveBinding[] curves = AnimationUtility.GetCurveBindings(_clip.Original); + if (curves.Any(c => (c.path.ToLower() == "body" && c.propertyName.StartsWith("blendShape.")))) { - QuickExitTransition(_initialState, _exitState, _trans.Quick); + SetTransition(_initialState, _emoteState, TransitionInfo.Quick).AddCondition(AnimatorConditionMode.Equals, _id, "NBitVRCEmote"); } } }