Aller au contenu principal

Session 132duodecimus (suite 7 etape B + patch) — Plage de frames pour anim de tir

Decouverte importante via dumpWeaponFrames : le rocket launcher a 14 frames
dans son vectobj (vs 2-9 pour les autres armes). Jouer toutes les frames en
bloc donne un resultat visuel incoherent (mix de plusieurs anims).

Solution : plage de frames configurable

Nouvelle methode playFireAnimationRange(start, end, idle, dur) dans
VectObjFrameAnimControl qui ne joue qu’une plage et revient a l’idle a la
fin (au lieu de toujours frame 0).

WeaponDisplayConfig expose deja les champs fireFrameStart, fireFrameEnd,
idleFrame (depuis l’etape A). On les utilise maintenant : si
hasFireAnimation() retourne true, le renderer appelle la version range,
sinon fallback sur playFireAnimation() qui joue tout.

Calibration initiale

Arme Frames Config
shotgun 9 tout (0..8)
plasmagun 2 tout (0..1)
grenadelauncher 4 tout (0..3)
rifle 4 tout (0..3)
blaster 4 tout (0..3)
rocketlauncher 14 fireFrames(0, 5) + idle=0
laser 2 tout (0..1)

Les 8 frames restantes du rocket launcher (6-13) sont probablement une autre
anim (raise/reload) qu’on traitera plus tard a l’etape C.

Fichiers modifies

  • world/VectObjFrameAnimControl.java : ajoute mode rangeMode + champs
    rangeStartFrame/EndFrame/IdleFrame, methode playFireAnimationRange(),
    branche dans controlUpdate() et cloneForSpatial().
  • weapon/WeaponViewAppState.java : playFireAnimation() lit la config et
    delegue a playFireAnimationRange() quand definie. Renomme
    resetAnimationsToFrame0 en resetAnimationsToFrame(int) pour positionner
    sur la frame idle de la config (le rocket launcher pourrait avoir une idle
    != 0 dans le futur).
  • weapon/WeaponType.java : config rocket launcher avec fireFrames(0, 5).
  • tools/diagnose/WeaponFrameDump.java : retire plink (= modele bullet, pas
    une arme).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *