Пример #1
0
        public static EffectParametersEx GetBaseEffectParameters(vJoy.FFB_EFF_REPORT Effect)
        {
            EffectParametersEx effectParameters = new EffectParametersEx();

            if (Effect.Duration == 65535)
            {
                effectParameters.Duration = -1;
            }
            else
            {
                effectParameters.Duration = (int)(Effect.Duration * 1000);
            }
            effectParameters.Gain          = (int)Effect.Gain * 10000 / 255;
            effectParameters.SamplePeriod  = (int)(Effect.SamplePrd * 1000);
            effectParameters.StartDelay    = 0;
            effectParameters.TriggerButton = (int)Effect.TrigerBtn;
            if (Effect.TrigerBtn == 255)
            {
                effectParameters.TriggerButton = -1;
            }
            else
            {
                effectParameters.TriggerButton = (int)Effect.TrigerBtn;
            }
            effectParameters.TriggerRepeatInterval = (int)(Effect.TrigerRpt * 1000);
            effectParameters.Type = VirtualController.virtualEffectGuidMap[Effect.EffectType];
            // effectParameters.AxisSettings = new AxisSettings(2);
            int[] dirs = new int[2];
            int   num  = 0;
            int   num2 = 0;

            if (Effect.Polar)
            {
                Utils.GetDICartesianXY((int)Effect.DirX, ref num, ref num2);
            }
            else
            {
                num  = (int)Effect.DirX;
                num2 = (int)Effect.DirY;
            }
            dirs[0] = num;
            dirs[1] = num2;
            effectParameters.Directions = dirs;
            return(effectParameters);
        }
Пример #2
0
        private bool CreateBaseParams(VirtualFFBPacket Packet)
        {
            if (Packet._FFBPType != FFBPType.PT_EFFREP)
            {
                return(false);
            }
            if (this.DevicePause)
            {
                return(false);
            }
            EffectParametersEx baseEffectParameters = GetBaseEffectParameters(Packet.FFB_EFF_REPORT);
            VirtualFFBEffect   vJoyFFBEffect        = new VirtualFFBEffect();

            vJoyFFBEffect.Parameters = baseEffectParameters;
            vJoyFFBEffect.Index      = Packet.BlockIndex;
            int num = 0;

            for (int i = this.Packets.Count - 1; i >= 0; i--)
            {
                TimeSpan timeSpan = vJoyFFBEffect.CreationTime - this.Packets[i].CreationTime;
                if (this.Packets[i]._FFBPType == FFBPType.PT_EFFREP || timeSpan.TotalSeconds > 5.0)
                {
                    num = i;
                    break;
                }
            }
            bool flag = false;

            //for (int j = num; j < this.Packets.Count; j++) {
            //this.UpdateEnvelopeParams(this.Packets[j], vJoyFFBEffect);
            //if (this.UpdateTypeSpecificParams(this.Packets[j], vJoyFFBEffect)) {
            //    flag = true;
            //}
            //}
            if (flag)
            {
                vJoyFFBEffect.Status = EffectStatus.Idle;
            }
            vJoyFFBEffect.Packet = Packet;
            this.Effects.Add(vJoyFFBEffect);
            Packet.Handled = true;
            return(true);
        }
Пример #3
0
        public VirtualFFBEffect()
        {
            DateTime now = DateTime.Now;

            this.CreationTime   = now;
            this.UpdateTime     = now;
            this.BaseUpdateTime = now;
            this.StartTime      = DateTime.MinValue;
            this.StopTime       = DateTime.MinValue;
            this.Status         = EffectStatus.None;
            this.Downloaded     = false;
            this.Parameters     = new EffectParametersEx();
            this.ConditionX     = false;
            this.ConditionY     = false;
            this.Solo           = false;
            this.LoopCount      = 1;
            this.Packet         = null;

            this.Index = 0;
        }