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); }
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); }
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; }