192 lines
3.8 KiB
Markdown
192 lines
3.8 KiB
Markdown
---
|
|
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 <effect_id> [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<CameraShake> {
|
|
// Genere paquets reseau pour tremblement
|
|
}
|
|
|
|
public class ViewBobbingPacketGenerator implements PacketGenerator<ViewBobbing> {
|
|
// 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.
|