亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dxinput.pas

?? 雙人對戰 俄羅斯訪快
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
constructor TForceFeedbackEffect.Create(AParent: TForceFeedbackEffect);
begin
  inherited Create;
  FParent := AParent;
  FList := TList.Create;

  if FParent<>nil then
  begin
    FParent.FList.Add(Self);
    FRoot := FParent.FRoot;
  end else
  begin
    FName := 'Effects';
    FRoot := Self as TForceFeedbackEffects;
  end;

  FObject := TForceFeedbackEffectObject.Create;
  FObject2 := TForceFeedbackEffectObject.Create;

  AttackTime := 0;
  Constant := Point(0, 0);
  EffectType := etNone;
  FadeTime := 0;
  Period := 50;
  Power := 10000;
  Time := 1000;
end;

destructor TForceFeedbackEffect.Destroy;
begin
  Clear;
  FObject.Free;
  FObject2.Free;
  FList.Free;
  if FParent<>nil then
    FParent.FList.Remove(Self);
  inherited Destroy;
end;

function TForceFeedbackEffect.GetOwner: TPersistent;
begin
  Result := Parent;
end;

procedure TForceFeedbackEffect.Assign(Source: TPersistent);
var
  i: Integer;
begin
  if Source is TForceFeedbackEffect then
  begin
    if Source<>Self then
    begin
      Clear;

      EffectType := etNone;

      Name := TForceFeedbackEffect(Source).Name;

      AttackLevel := TForceFeedbackEffect(Source).AttackLevel;
      AttackTime := TForceFeedbackEffect(Source).AttackTime;
      Constant := TForceFeedbackEffect(Source).Constant;
      Condition := TForceFeedbackEffect(Source).Condition;
      EffectType := TForceFeedbackEffect(Source).EffectType;
      FadeLevel := TForceFeedbackEffect(Source).FadeLevel;
      FadeTime := TForceFeedbackEffect(Source).FadeTime;
      Period := TForceFeedbackEffect(Source).Period;
      Power := TForceFeedbackEffect(Source).Power;
      Time := TForceFeedbackEffect(Source).Time;
      StartDelayTime := TForceFeedbackEffect(Source).StartDelayTime;

      EffectType := TForceFeedbackEffect(Source).EffectType;

      for i:=0 to TForceFeedbackEffect(Source).Count-1 do
        TForceFeedbackEffect.Create(Self).Assign(TForceFeedbackEffect(Source)[i]);
    end;
  end else
    inherited Assign(Source);
end;

procedure TForceFeedbackEffect.Acquire;
var
  i: Integer;
begin
  if Playing and (Time=-1) then
    Start;

  for i:=0 to Count-1 do
    Effects[i].Initialize;
end;

procedure TForceFeedbackEffect.Clear;
begin
  while Count>0 do
    Effects[Count-1].Free;
end;

procedure TForceFeedbackEffect.Initialize;
var
  i: Integer;
begin
  CreateEffect;
  for i:=0 to Count-1 do
    Effects[i].Initialize;
end;

procedure TForceFeedbackEffect.Finalize;
var
  i: Integer;
begin
  try
    Stop;
    FObject.Release;
    FObject2.Release;
  finally
    for i:=0 to Count-1 do
      Effects[i].Finalize;
  end;
end;

function TForceFeedbackEffect.Find(const Name: string): TForceFeedbackEffect;
var
  i, p: Integer;
  Effect: TForceFeedbackEffect;
  AName: string;
begin
  AName := Name;
  Effect := Self;

  p := AnsiPos('.', AName);
  while p<>0 do
  begin
    i := Effect.IndexOf(AName);
    if i<>-1 then
    begin
      Result := Effect[i];
      Exit;
    end else
    begin
      i := Effect.IndexOf(Copy(Name, 1, p-1));
      if i=-1 then
        raise EForceFeedbackEffectError.CreateFmt(SEffectNotFound, [Name]);
      Effect := Effect[i];
      AName := Copy(Name, p+1, MaxInt);
      p := AnsiPos('.', AName);
    end;
  end;

  i := Effect.IndexOf(Name);
  if i=-1 then
    raise EForceFeedbackEffectError.CreateFmt(SEffectNotFound, [Name]);
  Result := Effect[i];
end;

function TForceFeedbackEffect.IndexOf(const Name: string): Integer;
var
  i: Integer;
begin
  Result := -1;
  for i:=0 to Count-1 do
    if Effects[i].Name=Name then
    begin
      Result := i;
      Break;
    end;
end;

function TForceFeedbackEffect.HasInterface: Boolean;
begin
  Result := (FEffectType<>etNone) and ((FObject.FEffect<>nil) or (FObject2.FEffect<>nil));
end;

procedure TForceFeedbackEffect.MakeEff;
var
  Constant2: TPoint;
begin
  FObject.Clear;
  FObject2.Clear;

  with Constant2 do
  begin
    X := -FConstant.X;
    Y := -FConstant.Y;
  end;

  case FEffectType of
    etConstantForce:  { etConstantForce }
        begin
          with FObject do
          begin
            FDirections[0] := Constant2.X;
            FDirections[1] := Constant2.Y;

            FAxesCount := 2;
            FAxes[0] := DIJOFS_X;
            FAxes[1] := DIJOFS_Y;

            with Constant2 do
              FConstantForce.lMagnitude := Trunc(Sqrt(X*X+Y*Y));

            Init(Self);
            with Feff do
            begin
              cbTypeSpecificParams := SizeOf(FConstantForce);
              lpvTypeSpecificParams := @FConstantForce;
            end;
          end;
        end;
    etPeriodic:       { etPeriodic }
        begin
          with FObject do
          begin
            FDirections[0] := Constant2.X;
            FDirections[1] := Constant2.Y;

            FAxesCount := 2;
            FAxes[0] := DIJOFS_X;
            FAxes[1] := DIJOFS_Y;

            with FPeriodic do
            begin
              with Constant2 do
                dwMagnitude := Trunc(Sqrt(X*X+Y*Y));
              lOffset := 0;
              dwPhase := 0;
              dwPeriod := ConvertTime(FPeriod);
            end;

            Init(Self);
            with Feff do
            begin
              cbTypeSpecificParams := SizeOf(FPeriodic);
              lpvTypeSpecificParams := @FPeriodic;
            end;
          end;
        end;
    etCondition:      { etCondition }
        begin
          with FObject do
          begin
            FillChar(FDirections, SizeOf(FDirections), 0);

            FAxesCount := 1;
            FAxes[0] := DIJOFS_X;
                    
            with FCondition do
            begin
              lOffset := -Constant2.X;
              lPositiveCoefficient := Self.FCondition.X;
              lNegativeCoefficient := -Self.FCondition.X;
              dwPositiveSaturation := 0;
              dwNegativeSaturation := 0;
              lDeadBand := 0;
            end;

            Init(Self);
            with Feff do
            begin
              cbTypeSpecificParams := SizeOf(FCondition);
              lpvTypeSpecificParams := @FCondition;
            end;
          end;

          with FObject2 do
          begin
            FillChar(FDirections, SizeOf(FDirections), 0);

            FAxesCount := 1;
            FAxes[0] := DIJOFS_Y;

            with FCondition do
            begin
              lOffset := -Constant2.Y;
              lPositiveCoefficient := Self.FCondition.Y;
              lNegativeCoefficient := -Self.FCondition.Y;
              dwPositiveSaturation := 0;
              dwNegativeSaturation := 0;
              lDeadBand := 0;
            end;

            Init(Self);
            with Feff do
            begin
              cbTypeSpecificParams := SizeOf(FCondition);
              lpvTypeSpecificParams := @FCondition;
            end;
          end;
        end;
  end;
end;

procedure TForceFeedbackEffect.CreateEffect;
                                            
  function FindEffectCallBack(const pdei: TDIEffectInfoA;
    pvRef: Pointer): HRESULT; stdcall;
  begin
    with TForceFeedbackEffect(pvRef) do
    begin
      FFindEffectFlag := True;
      FFindEffectGUID := pdei.guid;
    end;

    Result := DIENUM_STOP;
  end;

  procedure CreateIEffectGuid(const GUID: TGUID;
    EffectObject: TForceFeedbackEffectObject);
  begin
    if EffectObject.Feff.dwSize=0 then Exit;

    if FRoot.FInput.FDevice2<>nil then
      FRoot.FInput.FDevice2.CreateEffect(GUID, EffectObject.Feff, EffectObject.FEffect, nil);
  end;

  procedure CreateIEffect(dwFlags: DWORD;
    EffectObject: TForceFeedbackEffectObject);
  begin
    if EffectObject.Feff.dwSize=0 then Exit;

    if FRoot.FInput.FDevice2<>nil then
    begin
      FFindEffectFlag := False;
      FRoot.FInput.FDevice2.EnumEffects(@FindEffectCallBack,
        Self, dwFlags);
      if FFindEffectFlag then
        CreateIEffectGuid(FFindEffectGUID, EffectObject);
    end;
  end;

begin
  FObject.Release;
  FObject2.Release;

  if (FRoot.FInput=nil) or (FRoot.FInput.FDevice2=nil) or
    (not FRoot.FInput.FForceFeedbackDevice) or
    (not FRoot.FInput.FForceFeedback) then Exit;

  if FEffectType=etNone then Exit;

  MakeEff;
  case FEffectType of
    etConstantForce:
        begin
          CreateIEffectGUID(GUID_ConstantForce, FObject);
        end;
    etPeriodic:
        begin
          CreateIEffect(DIEFT_PERIODIC, FObject);
        end;
    etCondition:
        begin
          CreateIEffect(DIEFT_CONDITION, FObject);
          CreateIEffect(DIEFT_CONDITION, FObject2);
        end;
  end;

  if Playing and (Time=-1) then
    Start;
end;

procedure TForceFeedbackEffect.ChangeEffect;
var
  dwFlags: DWORD;
begin
  if HasInterface then
  begin
    MakeEff;

    dwFlags := DIEP_DIRECTION or DIEP_DURATION or DIEP_ENVELOPE or
      DIEP_GAIN or DIEP_SAMPLEPERIOD or DIEP_TRIGGERBUTTON or
      DIEP_TRIGGERREPEATINTERVAL or DIEP_TYPESPECIFICPARAMS;

    if Playing then
      dwFlags := dwFlags or DIEP_START;

    if FObject.FEffect<>nil then FObject.FEffect.SetParameters(FObject.Feff, dwFlags);
    if FObject2.FEffect<>nil then FObject2.FEffect.SetParameters(FObject2.Feff, dwFlags);
  end;
end;

function TForceFeedbackEffect.GetPlaying: Boolean;
var
  dwFlags: DWORD;
begin
  Result := False;

  if not FPlaying then Exit;

  if FPlaying and (FTime=-1) then
  begin
    Result := True;
    Exit;
  end;

  if FObject.FEffect<>nil then
  begin
    dwFlags := 0;
    FObject.FEffect.GetEffectStatus(dwFlags);
    if dwFlags and DIEGES_PLAYING<>0 then
    begin
      Result := True;
      Exit;
    end;
  end;

  if FObject2.FEffect<>nil then
  begin
    dwFlags := 0;
    FObject2.FEffect.GetEffectStatus(dwFlags);
    if dwFlags and DIEGES_PLAYING<>0 then
    begin
      Result := True;
      Exit;
    end;
  end;

  if not Result then
    FPlaying := False;
end;

function TForceFeedbackEffect.GetCount: Integer;
begin
  Result := FList.Count;
end;

function TForceFeedbackEffect.GetEffect(Index: Integer): TForceFeedbackEffect;
begin
  Result :=FList[Index];
end;

function TForceFeedbackEffect.GetIndex: Integer;
begin
  if FParent<>nil then
    Result := FParent.FList.IndexOf(Self)
  else
    Result := 0;
end;

procedure TForceFeedbackEffect.SetIndex(Value: Integer);
begin
  if FParent<>nil then
  begin
    FParent.FList.Remove(Self);
    FParent.FList.Insert(Value, Self);
  end;
end;

procedure TForceFeedbackEffect.SetParent(Value: TForceFeedbackEffect);
begin
  if Parent<>Value then
  begin
    if (Value=nil) or (FRoot<>Value.FRoot) then
      raise EForceFeedbackEffectError.CreateFmt(SCannotChanged, ['Parent']);

    FParent.FList.Remove(Self);
    FParent := Value;
    FParent.FList.Add(Self);
  end;
end;

procedure TForceFeedbackEffect.SetAttackLevel(Value: Integer);
begin
  if Value<0 then Value := 0;
  if Value>10000 then Value := 10000;

  if FAttackLevel<>Value then
  begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩va欧美va亚洲va久久| 亚洲自拍偷拍九九九| 亚洲三级免费观看| 在线观看91视频| 91麻豆国产在线观看| 美国三级日本三级久久99| 五月天亚洲婷婷| 色狠狠色噜噜噜综合网| 亚洲一区在线免费观看| 欧美亚洲免费在线一区| 日韩在线观看一区二区| 日韩欧美的一区| 婷婷久久综合九色综合伊人色| 日韩精品在线一区二区| 午夜欧美大尺度福利影院在线看 | 91小视频在线| 国产日产亚洲精品系列| 国产超碰在线一区| 久久久久免费观看| 国产一区美女在线| 91精品国产入口在线| 免费高清不卡av| 国产日韩欧美在线一区| 成人白浆超碰人人人人| 一区2区3区在线看| 精品免费一区二区三区| a级高清视频欧美日韩| 亚洲福利一区二区三区| 国产亚洲午夜高清国产拍精品 | 欧美丰满少妇xxxbbb| 国产一区二区三区在线观看免费| 国产欧美日韩视频在线观看| 欧美三级中文字幕在线观看| 久久97超碰国产精品超碰| 亚洲制服丝袜av| 中日韩免费视频中文字幕| 麻豆久久久久久久| 制服丝袜亚洲播放| 一区二区成人在线| 9i在线看片成人免费| 亚洲视频香蕉人妖| 成人中文字幕合集| 欧美国产精品专区| 亚洲免费伊人电影| 久久国产成人午夜av影院| 亚洲va欧美va人人爽午夜| 日韩av一区二区三区| 成人av小说网| 日韩免费电影一区| 亚洲福中文字幕伊人影院| 成人开心网精品视频| 欧美精品黑人性xxxx| 国产日韩三级在线| 久久夜色精品一区| 亚洲一级二级三级| 黄色小说综合网站| 欧美视频一区二区三区四区| 欧美精品一区二区久久久| 亚洲成人在线观看视频| 99久久婷婷国产综合精品电影 | 亚洲国产精品久久人人爱蜜臀| 蜜桃传媒麻豆第一区在线观看| 黄页网站大全一区二区| 欧美探花视频资源| 亚洲欧洲精品天堂一级| 欧美成人综合网站| 精品va天堂亚洲国产| 日韩色在线观看| 久久五月婷婷丁香社区| 丝袜亚洲精品中文字幕一区| 色婷婷av久久久久久久| 亚洲人成人一区二区在线观看| 国产成人精品亚洲午夜麻豆| 精品国产99国产精品| 美国毛片一区二区三区| 欧美一区二区视频在线观看| 亚洲成人tv网| 欧美区在线观看| 日韩影院免费视频| 欧美成人欧美edvon| 黑人巨大精品欧美一区| 精品久久久久久久久久久久久久久| 三级不卡在线观看| 欧美日韩日日夜夜| 亚洲国产成人av好男人在线观看| 欧美日韩亚洲不卡| 色综合天天视频在线观看| 91精品国产高清一区二区三区| **性色生活片久久毛片| 国产高清一区日本| 亚洲国产高清在线| 99这里只有精品| 亚洲精品高清在线观看| 欧洲精品中文字幕| 天堂精品中文字幕在线| 日韩女优电影在线观看| 从欧美一区二区三区| 亚洲乱码精品一二三四区日韩在线| av成人老司机| 亚洲制服丝袜在线| 日韩精品影音先锋| 99久久久久久| 午夜精品久久久| 精品国产乱码久久久久久久| 国产 日韩 欧美大片| 亚洲精品久久7777| 欧美一级爆毛片| 丁香婷婷综合网| 一个色综合网站| 精品国产一区二区亚洲人成毛片| 丁香一区二区三区| 日韩电影在线免费看| 中文字幕一区二区三区av| 欧美日韩精品免费| caoporm超碰国产精品| 三级一区在线视频先锋| 国产精品视频yy9299一区| 欧美日韩精品一区二区在线播放| 国产麻豆视频一区| 亚洲一二三区不卡| 国产精品丝袜在线| 在线播放视频一区| 99精品视频在线播放观看| 久久精品国产亚洲aⅴ| 亚洲免费观看高清完整版在线观看 | 欧美三级韩国三级日本一级| 国产精品一线二线三线| 亚洲欧美国产高清| 久久久久久久久久久久久夜| 欧美久久婷婷综合色| 99v久久综合狠狠综合久久| 毛片av一区二区| 亚洲精品成人悠悠色影视| 3d动漫精品啪啪1区2区免费| 日本成人中文字幕在线视频| 久久久精品tv| 亚洲欧洲无码一区二区三区| 欧美日韩在线三级| 成人一道本在线| 国模套图日韩精品一区二区| 婷婷一区二区三区| 亚洲男人的天堂网| 国产精品免费网站在线观看| 久久综合九色综合欧美亚洲| 欧美一级爆毛片| 日韩一级精品视频在线观看| 欧美色精品在线视频| 欧美又粗又大又爽| 91视视频在线观看入口直接观看www | 韩国成人福利片在线播放| 日韩电影在线一区二区| 日日欢夜夜爽一区| 欧美三级在线看| 欧美国产日韩一二三区| 麻豆久久久久久久| 一区二区成人在线观看| 亚洲激情图片一区| 国产精品久久久久久久久图文区| 精品剧情v国产在线观看在线| 欧美精品aⅴ在线视频| 欧美日产在线观看| 777a∨成人精品桃花网| 日韩三级在线观看| 欧美成人精品二区三区99精品| 欧美精品久久久久久久多人混战| 91精品蜜臀在线一区尤物| 欧美肥大bbwbbw高潮| 日韩精品一区二区三区中文不卡 | 国产一区中文字幕| 国产乱码精品一区二区三区忘忧草| 精品一区二区av| 国产夫妻精品视频| 91日韩精品一区| 在线成人av影院| www激情久久| 中文字幕综合网| 日韩国产精品久久久| 国产一区视频网站| 日本黄色一区二区| 欧美变态tickle挠乳网站| 国产精品毛片大码女人| 亚洲国产日日夜夜| 国产原创一区二区| 欧美偷拍一区二区| 久久久久久日产精品| 一区二区三区丝袜| 国产一区欧美二区| 欧美三区免费完整视频在线观看| 亚洲精品在线网站| 亚洲蜜臀av乱码久久精品蜜桃| 视频一区免费在线观看| 风间由美中文字幕在线看视频国产欧美| 99久久久久免费精品国产| 日韩午夜在线观看视频| 日韩久久一区二区| 国产一区二区三区精品视频| 欧美曰成人黄网| 中文字幕乱码亚洲精品一区| 日本一区中文字幕| 色香蕉成人二区免费|