All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.ru.casperix.spine.animation.KeyFrame.kt Maven / Gradle / Ivy

package ru.casperix.spine.animation

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import ru.casperix.math.color.float32.Color3f
import ru.casperix.math.color.float32.Color4f

interface KeyFrame {
    val time: Float
}

interface CurveKeyFrame : KeyFrame {
    val curve: Curve
}

@Serializable
class ValueKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val value: Float = 0f,
) : CurveKeyFrame


@Serializable
class RGBKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val color:Color3f,
) : CurveKeyFrame

@Serializable
class RGBAKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val color:Color4f,
) : CurveKeyFrame


@Serializable
class RotateKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val angle: Float = 0f,
) : CurveKeyFrame

@Serializable
class TranslateKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val x: Float = 0f,
    val y: Float = 0f,
) : CurveKeyFrame

@Serializable
class ScaleKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val x: Float = 1f,
    val y: Float = 1f,
) : CurveKeyFrame

@Serializable
class ShearKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    val x: Float = 0f,
    val y: Float = 0f,
) : CurveKeyFrame

@Serializable
class TranslateXKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val x: Float = 0f,
) : CurveKeyFrame

@Serializable
class ScaleXKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val x: Float = 1f,
) : CurveKeyFrame

@Serializable
class ShearXKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val x: Float = 0f,
) : CurveKeyFrame

@Serializable
class TranslateYKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val y: Float = 0f,
) : CurveKeyFrame

@Serializable
class ScaleYKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val y: Float = 1f,
) : CurveKeyFrame

@Serializable
class ShearYKeyFrame(
    override val time: Float = 0f,
    override val curve: Curve = LinearCurve,
    @SerialName("value")
    val y: Float = 0f,
) : CurveKeyFrame




© 2015 - 2025 Weber Informatics LLC | Privacy Policy