AudioCategoryDuckingRuleConfig class
Пакет: com.hypixel.hytale.server.core.asset.type.audiocategory.config
Файл: com/hypixel/hytale/server/core/asset/type/audiocategory/config/AudioCategoryDuckingRuleConfig.java
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
float |
MIN_DUCKING_DB |
|
AudioCategoryDuckingRule |
var1 |
|
AudioCategoryDuckingRule[] |
var1 |
|
HashSet |
var3 |
|
AudioCategoryDuckingRuleConfig |
var5 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var4 = 0; var4 < var0.length; var4++) |
|
|
for for(AudioCategoryDuckingRuleConfig var4 : var0) |
|
|
for for(int var2 = 0; var2 < var0.length; var2++) |
|
|
if if(var0 != null && var0.length != 0) |
|
|
if if(var5 == null) |
|
|
if if(var0 != null) |
|
|
if if(var4 != null && var4.targetCategoryId != null) |
|
|
if if(var0 != null && var0.length != 0) |
static |
void |
resolveTargetsvoid resolveTargets(@Nullable AudioCategoryDuckingRuleConfig[] var0) |
static |
void |
validateUniqueTargetsvoid validateUniqueTargets(@Nullable AudioCategoryDuckingRuleConfig[] var0, @Nonnull String var1, @Nonnull ValidationResults var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.audiocategory.config;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIDisplayMode;
class="kw">import com.hypixel.hytale.codec.validation.ValidationResults;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.protocol.AudioCategoryDuckingRule;
class="kw">import com.hypixel.hytale.protocol.FadeCurve;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AudioStateCodecs;
class="kw">import java.util.HashSet;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class AudioCategoryDuckingRuleConfig {
class="kw">public class="kw">static class="kw">final float MIN_DUCKING_DB = -100.0F;
class="kw">public class="kw">static class="kw">final float MAX_DUCKING_DB = 0.0F;
class="kw">public class="kw">static class="kw">final float MAX_PHASE_MS = 60000.0F;
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<AudioCategoryDuckingRuleConfig> CODEC = BuilderCodec.builder(
AudioCategoryDuckingRuleConfig.class, AudioCategoryDuckingRuleConfig::new
)
.metadata(UIDisplayMode.COMPACT)
.<String>append(new KeyedCodec<>("TargetCategory", Codec.STRING), (var0, var1) -> var0.targetCategoryId = var1, var0 -> var0.targetCategoryId)
.addValidatorLate(() -> AudioCategory.VALIDATOR_CACHE.getValidator().late())
.documentation("Id of the AudioCategory this rule ducks.")
.add()
.<Float>append(new KeyedCodec<>("DuckingVolumeDb", Codec.FLOAT), (var0, var1) -> var0.duckingVolumeDb = var1, var0 -> var0.duckingVolumeDb)
.addValidator(Validators.range(-100.0F, 0.0F))
.documentation("Authored ducking target in dB.")
.add()
.<Float>append(new KeyedCodec<>("AttackMs", Codec.FLOAT), (var0, var1) -> var0.attackMs = var1, var0 -> var0.attackMs)
.addValidator(Validators.range(0.0F, 60000.0F))
.documentation("Milliseconds to tween from 0 dB (no duck) toward DuckingVolumeDb when the rule's source first becomes active. Zero snaps immediately.")
.add()
.<Float>append(new KeyedCodec<>("HoldMs", Codec.FLOAT), (var0, var1) -> var0.holdMs = var1, var0 -> var0.holdMs)
.addValidator(Validators.range(0.0F, 60000.0F))
.documentation("Milliseconds to hold the duck at DuckingVolumeDb after the source becomes inactive.")
.add()
.<Float>append(new KeyedCodec<>("ReleaseMs", Codec.FLOAT), (var0, var1) -> var0.releaseMs = var1, var0 -> var0.releaseMs)
.addValidator(Validators.range(0.0F, 60000.0F))
.documentation("Milliseconds to tween from the held duck value back toward the next-priority value. Zero snaps immediately.")
.add()
.<FadeCurve>append(new KeyedCodec<>("Curve", AudioStateCodecs.FADE_CURVE), (var0, var1) -> var0.curve = var1, var0 -> var0.curve)
.documentation("Curve applied to the Attack tween.")
.add()
.<FadeCurve>append(new KeyedCodec<>("ReleaseCurve", AudioStateCodecs.FADE_CURVE), (var0, var1) -> var0.releaseCurve = var1, var0 -> var0.releaseCurve)
.documentation("Curve applied to the Release tween.")
.add()
.<Short>append(new KeyedCodec<>("Priority", Codec.SHORT), (var0, var1) -> var0.priority = var1, var0 -> var0.priority)
.addValidator(Validators.range((short)0, (short)32767))
.documentation(
"When multiple rules are active on the same target, only entries at the highest active priority contribute to the composite. Within a priority class, the most-negative dB wins."
)
.add()
.build();
@Nonnull
class="kw">public class="kw">static class="kw">final ArrayCodec<AudioCategoryDuckingRuleConfig> CODEC_ARRAY = new ArrayCodec<>(CODEC, AudioCategoryDuckingRuleConfig[]::new);
@Nullable
class="kw">protected String targetCategoryId;
class="kw">protected float duckingVolumeDb;
class="kw">protected float attackMs;
class="kw">protected float holdMs;
class="kw">protected float releaseMs;
class="kw">protected FadeCurve curve = FadeCurve.Linear;
class="kw">protected FadeCurve releaseCurve = FadeCurve.Linear;
class="kw">protected short priority;
class="kw">transient int targetAudioCategoryIndex = Integer.MIN_VALUE;
class="kw">public AudioCategoryDuckingRuleConfig() {
}
class="kw">public class="kw">static void validateUniqueTargets(@Nullable AudioCategoryDuckingRuleConfig[] var0, @Nonnull String var1, @Nonnull ValidationResults var2) {
if (var0 != null && var0.length != 0) {
HashSet var3 = new HashSet<>();
for (int var4 = 0; var4 < var0.length; var4++) {
AudioCategoryDuckingRuleConfig var5 = var0[var4];
if (var5 == null) {
var2.fail(var1 + " DuckingRules[" + var4 + "] is null.");
} else if (var5.targetCategoryId == null) {
var2.fail(var1 + " DuckingRules[" + var4 + "] has no TargetCategory.");
} else if (!var3.add(var5.targetCategoryId)) {
var2.fail(var1 + " authors multiple DuckingRules targeting '" + var5.targetCategoryId + "'. Each source can have at most one rule per target.");
}
}
}
}
class="kw">public class="kw">static void resolveTargets(@Nullable AudioCategoryDuckingRuleConfig[] var0) {
if (var0 != null) {
for (AudioCategoryDuckingRuleConfig var4 : var0) {
if (var4 != null && var4.targetCategoryId != null) {
var4.targetAudioCategoryIndex = AudioCategory.getAssetMap().getIndex(var4.targetCategoryId);
}
}
}
}
@Nonnull
class="kw">public AudioCategoryDuckingRule toPacket() {
AudioCategoryDuckingRule var1 = new AudioCategoryDuckingRule();
var1.targetAudioCategoryIndex = this.targetAudioCategoryIndex;
var1.duckingVolumeDb = this.duckingVolumeDb;
var1.attackMs = this.attackMs;
var1.holdMs = this.holdMs;
var1.releaseMs = this.releaseMs;
var1.curve = this.curve;
var1.releaseCurve = this.releaseCurve;
var1.priority = this.priority;
class="kw">return var1;
}
@Nullable
class="kw">public class="kw">static AudioCategoryDuckingRule[] toPacketArray(@Nullable AudioCategoryDuckingRuleConfig[] var0) {
if (var0 != null && var0.length != 0) {
AudioCategoryDuckingRule[] var1 = new AudioCategoryDuckingRule[var0.length];
for (int var2 = 0; var2 < var0.length; var2++) {
var1[var2] = var0[var2] != null ? var0[var2].toPacket() : null;
}
class="kw">return var1;
} else {
class="kw">return null;
}
}
}