package ru.dbotthepony.kstarbound.defs import ru.dbotthepony.kstarbound.json.builder.JsonFactory import ru.dbotthepony.kstarbound.json.builder.JsonFlat import ru.dbotthepony.kstarbound.util.KOptional import ru.dbotthepony.kstarbound.world.physics.Poly @JsonFactory data class MovementParameters( @JsonFlat val base: BaseMovementParameters.Impl = BaseMovementParameters.Impl(), val discontinuityThreshold: Float? = null, val collisionPoly: Poly? = null, val ignorePlatformCollision: Boolean? = null, val restDuration: Int? = null, ) : BaseMovementParameters by base { fun merge(other: MovementParameters): MovementParameters { return MovementParameters( base = base.merge(other.base), discontinuityThreshold = discontinuityThreshold ?: other.discontinuityThreshold, collisionPoly = collisionPoly ?: other.collisionPoly, ignorePlatformCollision = ignorePlatformCollision ?: other.ignorePlatformCollision, restDuration = restDuration ?: other.restDuration, ) } }