refactor: drop unused VFX scaffolding, single-line English doc, reduce debug logs
- Remove unused chain/ParticleTrail and chain/VolumeCurve (dead since the EntityEffect pivot replaced the per-particle emit path) plus their test suites. - Drop Vec3.lerp (only consumer was ParticleTrail). - Strip step-by-step "[N/9]" debug logs from the orchestrator and per-entity logs from HytaleEntitySource / HytalePlayerRayCaster / ChainDamageApplier; keep one summary log per click and warnings on failure. - Extract resolveChain and tryEmitVfx helpers in ChainLightningSceptreInteraction so firstRun reads top-down (cooldown gate -> resolve -> damage -> vfx -> deduct). - Translate every Java doc/comment to single-line English. Tests: 30/30 green (29 baseline kept + 1 chain damage adapter test). Build: ./gradlew shadowJar clean.
This commit is contained in:
@@ -12,45 +12,16 @@ import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* Phase 4 — Adapter VFX/SFX qui applique un EntityEffect custom à chaque cible touchée.
|
||||
*
|
||||
* <p><b>Pivot 14:52 (POC EntityEffect bridge) :</b> les tentatives précédentes via
|
||||
* {@code ParticleUtil.spawnParticleEffect("Splash", ...)} ne rendaient pas les particles côté
|
||||
* client (asset sync plugin custom + budget client → 0/5 visible). On utilise maintenant le
|
||||
* pattern canonique Cleric-Rod : on déclare un {@code EntityEffect} JSON (Server/Entity/Effects/
|
||||
* Chain_Hit_Effect.json) qui contient des particles vanilla inline + EntityTopTint/BottomTint,
|
||||
* et on applique cet effect à chaque target via {@link EffectControllerComponent#addEffect}.
|
||||
*
|
||||
* <p>Le rendu passe par la réplication ECS (le ECS state du target propage l'effet aux clients
|
||||
* automatiquement), pas par un packet SpawnParticleSystem standalone. C'est le path éprouvé.
|
||||
*
|
||||
* <p><b>Fallback :</b> si le lookup de l'EntityEffect échoue (asset pas chargé), on log et skip.
|
||||
* Pas de propagation : damage déjà appliqué côté caller, l'emit failure ne doit pas crash.
|
||||
*
|
||||
* <p><b>Hop-index ignoré pour POC :</b> l'EntityEffect est uniforme sur les 5 cibles. La courbe
|
||||
* de volume (VFX-02) reste implémentée dans {@code VolumeCurve} mais n'est pas utilisée ici --
|
||||
* une variante future pourrait définir 5 EntityEffects {@code Chain_Hit_Effect_0..4} avec des
|
||||
* intensités décroissantes, ou patcher l'EntityEffect existant runtime (non supporté par l'API).
|
||||
*/
|
||||
/** Applies a custom EntityEffect to each chain target so the visual replicates via ECS sync. */
|
||||
public final class HytaleVfxEmitter {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(HytaleVfxEmitter.class.getName());
|
||||
|
||||
/** Asset id du EntityEffect appliqué à chaque target touchée par la chaîne. */
|
||||
private static final String EFFECT_ID = "Chain_Hit_Effect";
|
||||
|
||||
private HytaleVfxEmitter() {}
|
||||
|
||||
/**
|
||||
* Applique l'EntityEffect {@code Chain_Hit_Effect} à chaque hit de la chaîne.
|
||||
*
|
||||
* @param hits liste résolue par ChainResolver, ordre BFS
|
||||
* @param playerRef ref du caster (présent pour symétrie d'API future, non utilisé ici --
|
||||
* l'EntityEffect rend automatiquement à tous les viewers en range)
|
||||
* @param commandBuffer le CommandBuffer du tick courant (sert pour {@code getComponent} et
|
||||
* pour propager les changes d'état ECS au tick end)
|
||||
*/
|
||||
/** Resolves the EntityEffect once and adds it to every valid target via EffectControllerComponent. */
|
||||
public static void playChainEffects(@Nonnull List<ChainHit> hits,
|
||||
@Nonnull Ref<EntityStore> playerRef,
|
||||
@Nonnull CommandBuffer<EntityStore> commandBuffer) {
|
||||
|
||||
Reference in New Issue
Block a user