@inglorious/engine
Version:
A JavaScript game engine written with global state, immutability, and pure functions in mind. Have fun(ctional programming) with it!
23 lines (15 loc) • 708 B
JavaScript
import { toRange } from "@inglorious/utils/math/trigonometry.js"
import { clamp, multiply, rotate, zero } from "@inglorious/utils/math/vector.js"
import { sum } from "@inglorious/utils/math/vectors.js"
const DEFAULT_MAX_SPEED = 0
const DEFAULT_ORIENTATION = 0
export function tankMove(entity, dt) {
const maxSpeed = entity.maxSpeed ?? DEFAULT_MAX_SPEED
let orientation = entity.orientation ?? DEFAULT_ORIENTATION
orientation = toRange(orientation)
let velocity = entity.velocity ?? zero()
velocity = rotate(velocity, orientation)
velocity = clamp(velocity, -maxSpeed, maxSpeed)
const position = sum(entity.position, multiply(velocity, dt))
return { velocity, position, orientation }
}