From: DeaDDooMER Date: Wed, 13 Apr 2022 18:18:48 +0000 (+0300) Subject: model: use TAnimState for player models X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=ce2ed7fe6da727952c2820ec13fba793620eac4c;p=d2df-sdl.git model: use TAnimState for player models --- diff --git a/src/game/g_playermodel.pas b/src/game/g_playermodel.pas index c2c7d4e..e491560 100644 --- a/src/game/g_playermodel.pas +++ b/src/game/g_playermodel.pas @@ -65,7 +65,7 @@ const type TWeaponPoints = Array [WP_FIRST + 1..WP_LAST, A_STAND..A_LAST, TDirection.D_LEFT..TDirection.D_RIGHT] of Array of TDFPoint; - TModelMatrix = Array [TDirection.D_LEFT..TDirection.D_RIGHT, A_STAND..A_LAST] of TAnimationState; + TModelMatrix = Array [TDirection.D_LEFT..TDirection.D_RIGHT, A_STAND..A_LAST] of TAnimState; TModelTextures = Array [TDirection.D_LEFT..TDirection.D_RIGHT, A_STAND..A_LAST] of record Resource: String; @@ -92,7 +92,7 @@ type FDirection: TDirection; FColor: TRGB; FCurrentAnimation: Byte; - FAnimState: TAnimationState; + FAnimState: TAnimState; FCurrentWeapon: Byte; FFlag: Byte; FFireCounter: Byte; @@ -122,7 +122,7 @@ type public property Color: TRGB read FColor write FColor; - property AnimState: TAnimationState read FAnimState; + property AnimState: TAnimState read FAnimState; property CurrentAnimation: Byte read FCurrentAnimation; property CurrentWeapon: Byte read FCurrentWeapon; property Flag: Byte read FFlag; @@ -668,12 +668,12 @@ end; once := FCurrentAnimation in [A_STAND, A_WALK]; speed := PlayerModelsArray[FID].ModelSpeed[FCurrentAnimation]; count := PlayerModelsArray[FID].Anim[FDirection, FCurrentAnimation].Frames; - FAnimState := TAnimationState.Create(once, speed, count); + FAnimState := TAnimState.Create(once, speed, count); end; destructor TPlayerModel.Destroy(); begin - FAnimState.Free; + FAnimState.Invalidate; inherited; end; @@ -774,7 +774,7 @@ end; procedure TPlayerModel.Update; begin - if FAnimState <> nil then + if FAnimState.IsValid() then FAnimState.Update; if FFireCounter > 0 then Dec(FFireCounter) diff --git a/src/game/opengl/r_playermodel.pas b/src/game/opengl/r_playermodel.pas index b62e321..5ab33e9 100644 --- a/src/game/opengl/r_playermodel.pas +++ b/src/game/opengl/r_playermodel.pas @@ -374,12 +374,12 @@ begin if (pm.Direction = TDirection.D_LEFT) and (Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].base <> 0) then begin FramesID := Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].base; - r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False); + r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False); end else begin FramesID := Models[pm.id].Frames[TDirection.D_RIGHT, pm.CurrentAnimation].base; - r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False); + r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False); end; // Маска модели: @@ -388,12 +388,12 @@ begin if (pm.Direction = TDirection.D_LEFT) and (Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].mask <> 0) then begin FramesID := Models[pm.id].Frames[TDirection.D_LEFT, pm.CurrentAnimation].mask; - r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False); + r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, TMirrorType.None, False); end else begin FramesID := Models[pm.id].Frames[TDirection.D_RIGHT, pm.CurrentAnimation].mask; - r_AnimationState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False); + r_AnimState_Draw(FramesID, pm.AnimState, X, Y, Alpha, Mirror, False); end; e_Colors.R := 255;