ну да, не добавил

This commit is contained in:
DBotThePony 2023-02-05 11:40:26 +07:00
parent cc5c85bef1
commit 8540448bdc
Signed by: DBot
GPG Key ID: DCC23B5715498507
4 changed files with 42 additions and 8 deletions

View File

@ -31,6 +31,7 @@ import ru.dbotthepony.kstarbound.io.json.AABBiTypeAdapter
import ru.dbotthepony.kstarbound.io.json.Vector2dTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2dTypeAdapter
import ru.dbotthepony.kstarbound.io.json.Vector2fTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2fTypeAdapter
import ru.dbotthepony.kstarbound.io.json.Vector2iTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector2iTypeAdapter
import ru.dbotthepony.kstarbound.io.json.Vector4dTypeAdapter
import ru.dbotthepony.kstarbound.io.json.Vector4iTypeAdapter import ru.dbotthepony.kstarbound.io.json.Vector4iTypeAdapter
import ru.dbotthepony.kstarbound.io.json.builder.EnumAdapter import ru.dbotthepony.kstarbound.io.json.builder.EnumAdapter
import ru.dbotthepony.kstarbound.math.PolyTypeAdapter import ru.dbotthepony.kstarbound.math.PolyTypeAdapter
@ -51,6 +52,7 @@ fun addStarboundJsonAdapters(builder: GsonBuilder) {
registerTypeAdapter(Vector2fTypeAdapter) registerTypeAdapter(Vector2fTypeAdapter)
registerTypeAdapter(Vector2iTypeAdapter) registerTypeAdapter(Vector2iTypeAdapter)
registerTypeAdapter(Vector4iTypeAdapter) registerTypeAdapter(Vector4iTypeAdapter)
registerTypeAdapter(Vector4dTypeAdapter)
registerTypeAdapter(PolyTypeAdapter) registerTypeAdapter(PolyTypeAdapter)
// Снаряды // Снаряды

View File

@ -5,12 +5,14 @@ import com.google.common.collect.ImmutableMap
import ru.dbotthepony.kstarbound.defs.image.SpriteReference import ru.dbotthepony.kstarbound.defs.image.SpriteReference
import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory
import ru.dbotthepony.kvector.vector.ndouble.Vector2d import ru.dbotthepony.kvector.vector.ndouble.Vector2d
import ru.dbotthepony.kvector.vector.ndouble.Vector4d
@JsonFactory @JsonFactory
data class AnimationDefinition( data class AnimationDefinition(
val animatedParts: AnimatedParts? = null, val animatedParts: AnimatedParts? = null,
val sounds: ImmutableMap<String, Sound> = ImmutableMap.of(), val sounds: ImmutableMap<String, Sound> = ImmutableMap.of(),
val transformationGroups: ImmutableMap<String, TransformConfig> = ImmutableMap.of(), val transformationGroups: ImmutableMap<String, TransformConfig> = ImmutableMap.of(),
val particleEmitters: ImmutableMap<String, ParticleEmitter> = ImmutableMap.of(),
) { ) {
@JsonFactory @JsonFactory
data class TransformConfig( data class TransformConfig(
@ -25,6 +27,11 @@ data class AnimationDefinition(
@JsonFactory @JsonFactory
data class ParticleEmitter( data class ParticleEmitter(
val enabled: Boolean = true,
val emissionRate: Double = 1.0,
val count: Int = 1,
val offset: Vector2d? = null,
val offsetRegion: Vector4d? = null,
val transformationGroups: ImmutableList<String> = ImmutableList.of(), val transformationGroups: ImmutableList<String> = ImmutableList.of(),
val particles: ImmutableList<ParticleDefinition> val particles: ImmutableList<ParticleDefinition>
) )

View File

@ -1,6 +1,6 @@
package ru.dbotthepony.kstarbound.defs.animation package ru.dbotthepony.kstarbound.defs.animation
import com.google.common.collect.ImmutableList import ru.dbotthepony.kstarbound.defs.AssetReference
import ru.dbotthepony.kstarbound.defs.image.SpriteReference import ru.dbotthepony.kstarbound.defs.image.SpriteReference
import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory import ru.dbotthepony.kstarbound.io.json.builder.JsonFactory
import ru.dbotthepony.kvector.vector.ndouble.Vector2d import ru.dbotthepony.kvector.vector.ndouble.Vector2d
@ -9,14 +9,14 @@ import ru.dbotthepony.kvector.vector.ndouble.Vector4d
@JsonFactory @JsonFactory
data class ParticleDefinition( data class ParticleDefinition(
val count: Int = 1, val count: Int = 1,
val offset: Vector2d = Vector2d.ZERO, val offset: Vector2d? = null,
val offsetRegion: Vector4d = Vector4d.ZERO, val offsetRegion: Vector4d? = null,
val particles: ImmutableList<Config>, val particle: Config,
) { ) {
@JsonFactory @JsonFactory
data class Config( data class Config(
val type: ParticleType, val type: ParticleType,
val animation: AnimationDefinition? = null, val animation: AssetReference<AnimationDefinition>? = null,
val image: SpriteReference? = null, val image: SpriteReference? = null,
val position: Vector2d = Vector2d.ZERO, val position: Vector2d = Vector2d.ZERO,
val offsetRegion: Vector4d = Vector4d.ZERO, val offsetRegion: Vector4d = Vector4d.ZERO,
@ -24,11 +24,11 @@ data class ParticleDefinition(
val finalVelocity: Vector2d = Vector2d.ZERO, val finalVelocity: Vector2d = Vector2d.ZERO,
val approach: Vector2d = Vector2d.ZERO, val approach: Vector2d = Vector2d.ZERO,
val angularVelocity: Double = 0.0, val angularVelocity: Double = 0.0,
val destructionAction: DestructionAction, val destructionAction: DestructionAction? = null,
val destructionTime: Double, val destructionTime: Double? = null,
val fade: Double = 0.0, val fade: Double = 0.0,
val size: Double = 1.0, val size: Double = 1.0,
val layer: ParticleLayer, val layer: ParticleLayer? = null,
val timeToLive: Double = 1.0, val timeToLive: Double = 1.0,
val variance: Variance = Variance.EMPTY val variance: Variance = Variance.EMPTY
) )

View File

@ -4,6 +4,7 @@ import com.google.gson.TypeAdapter
import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonWriter import com.google.gson.stream.JsonWriter
import ru.dbotthepony.kvector.vector.ndouble.Vector2d import ru.dbotthepony.kvector.vector.ndouble.Vector2d
import ru.dbotthepony.kvector.vector.ndouble.Vector4d
import ru.dbotthepony.kvector.vector.nfloat.Vector2f import ru.dbotthepony.kvector.vector.nfloat.Vector2f
import ru.dbotthepony.kvector.vector.nint.Vector2i import ru.dbotthepony.kvector.vector.nint.Vector2i
import ru.dbotthepony.kvector.vector.nint.Vector4i import ru.dbotthepony.kvector.vector.nint.Vector4i
@ -32,6 +33,30 @@ object Vector4iTypeAdapter : TypeAdapter<Vector4i>() {
} }
} }
object Vector4dTypeAdapter : TypeAdapter<Vector4d>() {
override fun write(out: JsonWriter, value: Vector4d) {
`out`.beginArray()
`out`.value(value.x)
`out`.value(value.y)
`out`.value(value.z)
`out`.value(value.w)
`out`.endArray()
}
override fun read(`in`: JsonReader): Vector4d {
`in`.beginArray()
val x = `in`.nextDouble()
val y = `in`.nextDouble()
val z = `in`.nextDouble()
val w = `in`.nextDouble()
`in`.endArray()
return Vector4d(x, y, z, w)
}
}
object Vector2iTypeAdapter : TypeAdapter<Vector2i>() { object Vector2iTypeAdapter : TypeAdapter<Vector2i>() {
override fun write(out: JsonWriter, value: Vector2i) { override fun write(out: JsonWriter, value: Vector2i) {
`out`.beginArray() `out`.beginArray()