Esempio n. 1
0
        public void OnParameterSet(AvatarController.Parameter parameter)
        {
            if (IsDestroyed())
            {
                AvatarController.TEA_ParameterSet -= OnParameterSet;
                return;
            }

            if (this.Control.parameter.name == parameter.name)
            {
                isOn = (this.Control.value == parameter.fVal);
                transform.Find("Toggle").gameObject.SetActive(isOn);
                //Debug.Log($"OnParameter called in [{gameObject.name}], toggled to [{isOn}]");
            }
        }
Esempio n. 2
0
 public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     if (!string.IsNullOrEmpty(debugString))
     {
         Debug.Log($"VRCPlayableLayerControl[{state}] {debugString}");
     }
     foreach (VRC_AvatarParameterDriver.Parameter param in parameters)
     {
         AnimatorControllerParameterType paramType = AvatarController.current.GetParameterType(animator, param.name);
         float value  = param.value;
         bool  bValue = param.value > 0;
         if (VRC_AvatarParameterDriver.ChangeType.Add == param.type)
         {
             value += AvatarController.current.GetParameterValue(animator, param.name);
         }
         else if (VRC_AvatarParameterDriver.ChangeType.Random == param.type)
         {
             System.Random random = new System.Random();
             //NOTE my best guess at what chance means
             if (AnimatorControllerParameterType.Bool == paramType)
             {
                 bool currentBool = AvatarController.current.GetBool(animator, param.name);
                 bValue = random.NextDouble() >= param.chance ? !currentBool : currentBool;
             }
             else
             {
                 value = (float)(random.NextDouble() * (param.valueMax - param.valueMin) + param.valueMin);
             }
         }
         // --- set
         AvatarController.Parameter aParam = new AvatarController.Parameter()
         {
             name    = param.name,
             type    = paramType,
             boolean = bValue,
             fVal    = value,
             iVal    = Mathf.RoundToInt(value)
         };
         AvatarController.current.SetAnimatorParameter(animator, aParam);
     }//for
 }