aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/speck/savetest2.speck.lua2
-rw-r--r--src/scenes/speck_editor.lua1
-rw-r--r--src/specks.lua8
3 files changed, 8 insertions, 3 deletions
diff --git a/res/speck/savetest2.speck.lua b/res/speck/savetest2.speck.lua
index 953e0e6..c279ddf 100644
--- a/res/speck/savetest2.speck.lua
+++ b/res/speck/savetest2.speck.lua
@@ -1 +1 @@
-return {["initial_vely"]=77.8,["spread"]=360,["lifetime_min"]=0.3,["interval"]=0.05,["spawn_width"]=100,["spawn_height"]=100,["lifetime_max"]=3.6,["gradient"]="res/img/test_gradient.png",["texture_path"]="res/img/speck.png",["spawn_shape"]="Point",["spawn_amount_min"]=3,["spawn_amount_max"]=4,["scale_curve"]="Lerp",["scale_start_min"]=0.8,["scale_start_max"]=1.3,["scale_end_min"]=0,["scale_end_max"]=0,["forcex"]=0,["forcey"]=-32.7,["initial_velx"]=0,} \ No newline at end of file
+return {["spawn_amount_min"]=12,["spawn_amount_max"]=20,["scale_curve"]="Lerp",["scale_start_min"]=0.8,["scale_start_max"]=1.3,["scale_end_min"]=0,["scale_end_max"]=0,["forcex"]=0,["forcey"]=502.1,["damping"]=11.3,["initial_velx"]=528.4,["initial_vely"]=0,["spread"]=360,["lifetime_min"]=0.3,["interval"]=1.03,["texture_path"]="res/img/speck.png",["lifetime_max"]=0.6,["spawn_shape"]="Point",["gradient"]="res/img/test_gradient.png",["spawn_height"]=100,["spawn_width"]=100,} \ No newline at end of file
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",