aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scenes/speck_editor.lua1
-rw-r--r--src/specks.lua8
2 files changed, 7 insertions, 2 deletions
diff --git a/src/scenes/speck_editor.lua b/src/scenes/speck_editor.lua
index f491955..bdba449 100644
--- a/src/scenes/speck_editor.lua
+++ b/src/scenes/speck_editor.lua
@@ -16,6 +16,7 @@ local PROPERTY_CUSTOM = {
scale_start_max = {min = 0, max = 16},
forcex = {min = -2048, max = 2048},
forcey = {min = -2048, max = 2048},
+ damping = {min = 0, max = 128},
initial_velx = {min = 0, max = 2048},
initial_vely = {min = 0, max = 2048},
spread = {min = 0, max = 360},
diff --git a/src/specks.lua b/src/specks.lua
index 7c0ef11..ec24378 100644
--- a/src/specks.lua
+++ b/src/specks.lua
@@ -57,6 +57,7 @@ function Speck_Sys.new()
self.forcex = 0
self.forcey = 0
+ self.damping = 0
self.initial_velx = 0
self.initial_vely = 0
@@ -168,8 +169,10 @@ function Speck_Sys:update(dt)
goto next_speck_update
end
- data.vel[i].x = data.vel[i].x + self.forcex * dt
- data.vel[i].y = data.vel[i].y + self.forcey * dt
+ local dampx = -data.vel[i].x * self.damping
+ local dampy = -data.vel[i].y * self.damping
+ data.vel[i].x = data.vel[i].x + (dampx + self.forcex) * dt
+ data.vel[i].y = data.vel[i].y + (dampy + self.forcey) * dt
-- move and bounce
data.pos[i].x = data.pos[i].x + data.vel[i].x * dt
@@ -238,6 +241,7 @@ SPECK_EXPORTED_ARGS = {
"forcey",
"initial_velx",
"initial_vely",
+ "damping",
"spread",
"lifetime_min",
"lifetime_max",