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

indigo.shared.scenegraph.SpatialModifiers.scala Maven / Gradle / Ivy

The newest version!
package indigo.shared.scenegraph

import indigo.shared.datatypes.Depth
import indigo.shared.datatypes.Flip
import indigo.shared.datatypes.Point
import indigo.shared.datatypes.Radians
import indigo.shared.datatypes.Vector2

trait BasicSpatialModifiers[T <: SceneNode] {
  def withPosition(newPosition: Point): T
  def withRotation(newRotation: Radians): T
  def withScale(newScale: Vector2): T
  def withDepth(newDepth: Depth): T
  def withFlip(newFlip: Flip): T
}

trait SpatialModifiers[T <: SceneNode] extends BasicSpatialModifiers[T] {
  def moveTo(pt: Point): T
  def moveTo(x: Int, y: Int): T

  def moveBy(pt: Point): T
  def moveBy(x: Int, y: Int): T

  def rotateTo(angle: Radians): T
  def rotateBy(angle: Radians): T

  def scaleBy(amount: Vector2): T
  def scaleBy(x: Double, y: Double): T

  def transformTo(newPosition: Point, newRotation: Radians, newScale: Vector2): T
  def transformBy(positionDiff: Point, rotationDiff: Radians, scaleDiff: Vector2): T

  def withRef(newRef: Point): T
  def withRef(x: Int, y: Int): T

  def flipHorizontal(isFlipped: Boolean): T
  def flipVertical(isFlipped: Boolean): T
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy