private bool EffectDispose(VirtualFFBPacket Packet, VirtualFFBEffect Effect) { if (Packet.BlockIndex == Effect.Index) { Effect.Dispose(); Effect.Packet = Packet; return(true); } return(false); }
private bool EffectPlayback(VirtualFFBPacket Packet, VirtualFFBEffect Effect) { if (Packet._FFBPType == FFBPType.PT_EFOPREP && (int)Packet.FFB_EFF_OP.EffectBlockIndex == Effect.Index && Effect.Status != EffectStatus.None && Effect.Parameters.TriggerButton == -1) { Effect.UpdateStatus(); switch (Packet.FFB_EFF_OP.EffectOp) { case FFBOP.EFF_START: if (Effect.Status != EffectStatus.Playing) { Effect.LoopCount = (int)Packet.FFB_EFF_OP.LoopCount; Effect.Solo = false; this.StartEffect(Effect); Effect.Packet = Packet; Packet.Handled = true; return(true); } break; case FFBOP.EFF_SOLO: if (Effect.Status != EffectStatus.Playing) { for (int i = 0; i < this.Effects.Count; i++) { if (this.Effects[i] != Effect) { this.StopEffect(this.Effects[i]); this.Effects[i].Packet = Packet; } } Effect.LoopCount = (int)Packet.FFB_EFF_OP.LoopCount; Effect.Solo = true; this.StartEffect(Effect); Effect.Packet = Packet; Packet.Handled = true; return(true); } break; case FFBOP.EFF_STOP: if (Effect.Status == EffectStatus.Playing) { this.StopEffect(Effect); Effect.Packet = Packet; Packet.Handled = true; return(true); } break; } } return(false); }
private static int EffectComparison_UpdateDateTime(VirtualFFBEffect A, VirtualFFBEffect B) { if (A.UpdateTime > B.UpdateTime) { return(1); } if (A.UpdateTime < B.UpdateTime) { return(-1); } return(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); }
private void StartEffect(VirtualFFBEffect Effect) { Effect.Status = EffectStatus.Playing; Effect.StartTime = DateTime.Now; Effect.UpdateTime = DateTime.Now; }
private void StopEffect(VirtualFFBEffect Effect) { Effect.Status = EffectStatus.Stopped; Effect.StopTime = DateTime.Now; Effect.UpdateTime = DateTime.Now; }