private void onFrame(object sender, FrameEventArgs args)
    {
        Frame currentFrame = args.frame;

        if (currentFrame.Hands.Count != 0)
        {
            if (currentFrame.Hands.Count > 1)
            {
                Hand hand1 = currentFrame.Hands[0];
                Hand hand2 = currentFrame.Hands[1];
            }
            else
            {
                Hand hand = currentFrame.Hands[0];

                grabStrength = hand.GrabStrength;
                visualEffect.SetFloat("Turbulence", hand.GrabStrength);

                Vector3 newPos = new Vector3(-Leap.Unity.UnityVectorExtension.ToVector3(hand.PalmPosition).x / 1000, -Leap.Unity.UnityVectorExtension.ToVector3(hand.PalmPosition).z / 1000, Leap.Unity.UnityVectorExtension.ToVector3(hand.PalmPosition).y / 1000);
                if (hand.IsLeft)
                {
                    leftPos.SetActive(true); rightPos.SetActive(false);
                    leftPos.transform.localPosition = newPos;
                }
                else
                {
                    leftPos.SetActive(false); rightPos.SetActive(true);
                    rightPos.transform.localPosition = newPos;
                }
            }
        }
    }
    void Update()
    {
        if (_vfxGraph != null)
        {
            var noiseTime = Time.time * 0.5f;
            _currentEmitterPosition = (new Vector3(
                                           Mathf.PerlinNoise(1, noiseTime),
                                           Mathf.PerlinNoise(2, noiseTime),
                                           Mathf.PerlinNoise(3, noiseTime)
                                           ) - Vector3.one * 0.5f) * EmitterPositionNoiseRadius + EmitterPositionCenter;

            var emitterDirection = _currentEmitterPosition - _previousEmitterPosition;

            _vfxGraph.SetVector3("EmitterPosition", _currentEmitterPosition);
            _vfxGraph.SetVector3("EmitterDirection", emitterDirection);

            var emitRate = EmitRateAmplitude * Mathf.PerlinNoise(0, Time.time * 0.5f);
            _vfxGraph.SetFloat("EmitRate", emitRate);


            _previousEmitterPosition = _currentEmitterPosition;
        }
    }