--- title: Effets Camera type: docs weight: 6 --- Le systeme de camera fournit des effets d'ecran comme les tremblements et le balancement de vue. **Package:** `com.hypixel.hytale.builtin.adventure.camera` ## Architecture ``` CameraPlugin ├── Effets │ ├── CameraShakeEffect - Effet de tremblement │ └── CameraShake asset ├── Balancement de Vue │ ├── ViewBobbing asset │ └── ViewBobbingPacketGenerator ├── Interactions │ └── CameraShakeInteraction ├── Systemes │ └── CameraEffectSystem └── Commandes └── CameraEffectCommand ``` ## Tremblement de Camera ### CameraShakeEffect Type d'effet camera enregistre: ```java getCodecRegistry(CameraEffect.CODEC).register( "CameraShake", CameraShakeEffect.class, CameraShakeEffect.CODEC ); ``` ### Asset CameraShake Definitions de tremblements chargees depuis `Camera/CameraShake/`: ```java HytaleAssetStore.builder(String.class, CameraShake.class, new IndexedAssetMap()) .loadsBefore(CameraEffect.class) .setPath("Camera/CameraShake") .setKeyFunction(CameraShake::getId) .setReplaceOnRemove(CameraShake::new) .setPacketGenerator(new CameraShakePacketGenerator()) .build(); ``` ### Configuration CameraShake ```yaml # Camera/CameraShake/explosion.json { "Id": "explosion", "Intensity": 1.0, "Duration": 0.5, "Frequency": 10.0, "FalloffDistance": 20.0 } ``` ## Balancement de Vue Mouvement de camera pendant la locomotion du joueur: ### Asset ViewBobbing ```java HytaleAssetStore.builder(MovementType.class, ViewBobbing.class, new DefaultAssetMap()) .setPath("Camera/ViewBobbing") .setKeyFunction(ViewBobbing::getId) .setPacketGenerator(new ViewBobbingPacketGenerator()) .build(); ``` Indexe par enum `MovementType` pour differents etats de mouvement. ### Configuration ViewBobbing ```yaml # Camera/ViewBobbing/walking.json { "Id": "WALKING", "HorizontalAmplitude": 0.02, "VerticalAmplitude": 0.01, "Frequency": 2.0 } ``` ## Interactions ### CameraShakeInteraction Declencher un tremblement depuis les interactions: ```java getCodecRegistry(Interaction.CODEC).register( "CameraShake", CameraShakeInteraction.class, CameraShakeInteraction.CODEC ); ``` ### Exemple d'Utilisation ```yaml # Interaction d'item ou bloc { "Type": "CameraShake", "ShakeId": "explosion", "Intensity": 0.5 } ``` ## Systemes ### CameraEffectSystem Systeme ECS pour traiter les effets camera: ```java getEntityStoreRegistry().registerSystem(new CameraEffectSystem()); ``` ## Commandes ### CameraEffectCommand Commande admin pour tester les effets camera: ```java getCommandRegistry().registerCommand(new CameraEffectCommand()); ``` Utilisation: ``` /cameraeffect [intensity] [duration] ``` ## Utilisation de l'API ### Appliquer un Tremblement ```java // Via le systeme d'interaction // Definir dans JSON asset et declencher via interaction // Ou programmatiquement via CameraEffectSystem ``` ### Obtenir les Assets Camera ```java // Obtenir asset de tremblement CameraShake shake = CameraShake.getAssetMap().getAsset("explosion"); // Obtenir balancement pour type de mouvement ViewBobbing bobbing = ViewBobbing.getAssetMap().getAsset(MovementType.WALKING); ``` ## Generation de Paquets Les tremblements et balancements utilisent des generateurs de paquets pour sync client: ```java public class CameraShakePacketGenerator implements PacketGenerator { // Genere paquets reseau pour tremblement } public class ViewBobbingPacketGenerator implements PacketGenerator { // Genere paquets reseau pour balancement } ``` ## Dependances d'Assets Les assets de tremblement chargent avant les effets camera: ```java .loadsBefore(CameraEffect.class) ``` Cela assure que les definitions de tremblement sont disponibles quand les effets camera les referencent.