it.unibo.alchemist.model.physics.environments.Dynamics2DEnvironment.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alchemist-physics Show documentation
Show all versions of alchemist-physics Show documentation
Abstraction for pedestrians capable of interacting physically.
/*
* Copyright (C) 2010-2023, Danilo Pianini and contributors
* listed, for each module, in the respective subproject's build.gradle.kts file.
*
* This file is part of Alchemist, and is distributed under the terms of the
* GNU General Public License, with a linking exception,
* as described in the file LICENSE in the Alchemist distribution's top directory.
*/
package it.unibo.alchemist.model.physics.environments
import it.unibo.alchemist.model.Node
import it.unibo.alchemist.model.environments.Euclidean2DEnvironment
import it.unibo.alchemist.model.positions.Euclidean2DPosition
/**
* Any implementing Environment should take care of physical dynamics, in particular
* collision detection and response.
* This interface provides some hooks in order to be able to manage some of the node's physical state.
*/
interface Dynamics2DEnvironment : Physics2DEnvironment, Euclidean2DEnvironment {
/**
* Set [node]'s current linear velocity.
*/
fun setVelocity(node: Node, velocity: Euclidean2DPosition)
/**
* Get [node]'s current linear velocity.
*/
fun getVelocity(node: Node): Euclidean2DPosition
/**
* Compute any collision response and update node positions.
*/
fun updatePhysics(elapsedTime: Double)
}