mirror of
https://github.com/Ukendio/jecs.git
synced 2026-02-04 15:15:21 +00:00
56 lines
1.2 KiB
Text
56 lines
1.2 KiB
Text
|
|
local cframe = require("./cframe")
|
||
|
|
local color3 = require("./color3")
|
||
|
|
local number = require("./number")
|
||
|
|
local vector2 = require("./vector2")
|
||
|
|
local vector3 = require("./vector3")
|
||
|
|
|
||
|
|
export type Spring =
|
||
|
|
| cframe.Spring
|
||
|
|
| color3.Spring
|
||
|
|
| number.Spring
|
||
|
|
| vector2.Spring
|
||
|
|
| vector3.Spring
|
||
|
|
|
||
|
|
local function exhaustive(x: never)
|
||
|
|
error(x)
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
local function step(spring: Spring, dt: number)
|
||
|
|
if spring.type == "CFrame" then
|
||
|
|
cframe.step(spring, dt)
|
||
|
|
elseif spring.type == "Color3" then
|
||
|
|
color3.step(spring, dt)
|
||
|
|
elseif spring.type == "Vector2" then
|
||
|
|
vector2.step(spring, dt)
|
||
|
|
elseif spring.type == "Vector3" then
|
||
|
|
vector3.step(spring, dt)
|
||
|
|
elseif spring.type == "number" then
|
||
|
|
number.step(spring, dt)
|
||
|
|
else
|
||
|
|
exhaustive(spring.type)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
local function can_sleep(spring: Spring)
|
||
|
|
if spring.type == "CFrame" then
|
||
|
|
cframe.can_sleep(spring)
|
||
|
|
elseif spring.type == "Color3" then
|
||
|
|
color3.can_sleep((spring::any)::vector3.Spring)
|
||
|
|
elseif spring.type == "Vector2" then
|
||
|
|
vector2.can_sleep(spring)
|
||
|
|
elseif spring.type == "Vector3" then
|
||
|
|
vector3.can_sleep(spring)
|
||
|
|
elseif spring.type == "number" then
|
||
|
|
number.can_sleep(spring)
|
||
|
|
else
|
||
|
|
exhaustive(spring.type)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return {
|
||
|
|
step = step,
|
||
|
|
can_sleep = can_sleep,
|
||
|
|
}
|