public RadialPage(RadialMenu radialMenu, VRCExpressionsMenu menu, Vrc3Param param, float value) { _radialMenu = radialMenu; _menu = menu; Param = param; Value = value; }
private void AvatarParameterDriverSettings(VRC_AvatarParameterDriver driver, Animator animator) { if (!_hooked || animator != AvatarAnimator) { return; } foreach (var parameter in driver.parameters) { var param = RadialMenu.GetParam(parameter.name); if (param == null) { continue; } switch (parameter.type) { case VRC_AvatarParameterDriver.ChangeType.Set: param.Set(RadialMenu, parameter.value); break; case VRC_AvatarParameterDriver.ChangeType.Add: param.Add(RadialMenu, parameter.value); break; case VRC_AvatarParameterDriver.ChangeType.Random: param.Random(RadialMenu, parameter.valueMin, parameter.valueMax, parameter.chance); break; default: throw new ArgumentOutOfRangeException(); } } }
public override void EditorContent(VisualElement element) { GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.Label("Left Hand", GestureManagerStyles.GuiHandTitle); Manager.left = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Left, Manager.left, position => 0); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Right Hand", GestureManagerStyles.GuiHandTitle); Manager.right = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Right, Manager.right, position => 0); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.Space(4); GmgLayoutHelper.Divisor(1); GUILayout.Label("Radial Menu", GestureManagerStyles.GuiHandTitle); GUILayout.Label("", GUILayout.ExpandWidth(true), GUILayout.Height(RadialMenu.Size)); var extraSize = RadialMenu.Render(element, GmgLayoutHelper.GetLastRect(ref _rect)) - RadialMenu.Size; if (extraSize > 0) { GUILayout.Label("", GUILayout.ExpandWidth(true), GUILayout.Height(extraSize)); } if (_radialDescription != null) { ShowRadialDescription(); } }
public static RadialMenuItem RadialFromParam(RadialMenu menu, string name, Vrc3Param param) { return(new RadialMenuControl(menu, name, null, ControlType.RadialPuppet, 1f, null, new[] { param }, null, null)); }
public static RadialMenuControl AxisFromParams(RadialMenu menu, string name, Vrc3Param xParam, Vrc3Param yParam) { var subLabels = new VRCExpressionsMenu.Control.Label[4]; return(new RadialMenuControl(menu, name, null, ControlType.TwoAxisPuppet, 1f, null, new[] { xParam, yParam }, null, subLabels)); }
public static RadialMenuControl ParamStateToggle(RadialMenu menu, string name, Vrc3Param param, float activeValue) { return(new RadialMenuControl(menu, name, null, ControlType.Toggle, activeValue, param, new Vrc3Param[0], null, null)); }
public static RadialMenuControl ToggleFromParam(RadialMenu menu, string name, Vrc3Param param) { return(ParamStateToggle(menu, name, param, 1f)); }
public RadialPage(RadialMenu radialMenu, IReadOnlyList <RadialMenuItem> controls) { _radialMenu = radialMenu; _controls = controls; }
public override void InitForAvatar() { StartVrcHooks(); AvatarAnimator.applyRootMotion = false; AvatarAnimator.runtimeAnimatorController = null; AvatarAnimator.updateMode = AnimatorUpdateMode.Normal; AvatarAnimator.cullingMode = AnimatorCullingMode.CullCompletely; DestroyGraphs(); var layerList = _avatarDescriptor.baseAnimationLayers.ToList(); layerList.AddRange(_avatarDescriptor.specialAnimationLayers); layerList.Sort(ModuleVrc3Styles.Data.LayerSort); _playableGraph = PlayableGraph.Create("Gesture Manager 3.1"); var externalOutput = AnimationPlayableOutput.Create(_playableGraph, "Gesture Manager", AvatarAnimator); var playableMixer = AnimationLayerMixerPlayable.Create(_playableGraph, layerList.Count + 1); externalOutput.SetSourcePlayable(playableMixer); _fromBlend.Clear(); _avatarClips.Clear(); _weightControllers = new RadialWeightController[layerList.Count]; _humanAnimatorPlayables = new AnimatorControllerPlayable[layerList.Count]; for (var i = 0; i < layerList.Count; i++) { var vrcAnimLayer = layerList[i]; var iGraph = i + 1; if (vrcAnimLayer.animatorController) { foreach (var clip in vrcAnimLayer.animatorController.animationClips) { _avatarClips.Add(clip); } } var isFx = vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.FX; var isAdd = vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.Additive; var isPose = vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.IKPose || vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.TPose; var isAction = vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.Sitting || vrcAnimLayer.type == VRCAvatarDescriptor.AnimLayerType.Action; var limit = isPose || isAction; var controller = vrcAnimLayer.animatorController ? vrcAnimLayer.animatorController : ModuleVrc3Styles.Data.ControllerOf[vrcAnimLayer.type]; var mask = vrcAnimLayer.isDefault || isFx ? ModuleVrc3Styles.Data.MaskOf[vrcAnimLayer.type] : vrcAnimLayer.mask; if (!controller) { continue; } _humanAnimatorPlayables[i] = AnimatorControllerPlayable.Create(_playableGraph, Vrc3ProxyOverride.OverrideController(controller)); _weightControllers[i] = new RadialWeightController(playableMixer, iGraph); for (var j = 0; j < _humanAnimatorPlayables[i].GetLayerCount(); j++) { _humanAnimatorPlayables[i].SetLayerWeight(j, 1f); } playableMixer.ConnectInput(iGraph, _humanAnimatorPlayables[i], 0, 1); _fromBlend[vrcAnimLayer.type] = _weightControllers[i]; if (limit) { playableMixer.SetInputWeight(iGraph, 0f); } if (isAdd) { playableMixer.SetLayerAdditive((uint)iGraph, true); } if (mask) { playableMixer.SetLayerMaskFromAvatarMask((uint)iGraph, mask); } } _playableGraph.SetTimeUpdateMode(DirectorUpdateMode.GameTime); _playableGraph.Play(); _playableGraph.Evaluate(0f); RadialMenu.Set(AvatarAnimator, Menu, Parameters, _humanAnimatorPlayables); RadialMenu.GetParam("TrackingType")?.InternalSet(1f); RadialMenu.GetParam("Upright")?.InternalSet(1f); RadialMenu.GetParam("Grounded")?.InternalSet(1f); RadialMenu.GetParam("VelocityX")?.Amplify(-7f); RadialMenu.GetParam("VelocityZ")?.Amplify(7f); RadialMenu.GetParam("AvatarVersion")?.InternalSet(3f); RadialMenu.GetParam("Seated")?.OnChange(OnSeatedModeChange); }
private void ForgetAvatar() { AvatarAnimator.Rebind(); RadialMenu.ForgetParams(); DestroyGraphs(); }