mirror of
https://github.com/APercy/airutils.git
synced 2025-03-15 00:01:20 +00:00
52 lines
1.5 KiB
Lua
52 lines
1.5 KiB
Lua
local function calculateVelocity(magnitude, angle)
|
|
-- Calcula os componentes do vetor usando ângulo polar
|
|
-- Supondo que o ângulo é dado no plano XY, com z = 0
|
|
local velocity = {
|
|
x = magnitude * math.cos(angle),
|
|
y = 0, -- Se a velocidade não tem componente z
|
|
z = magnitude * math.sin(angle),
|
|
}
|
|
|
|
return velocity
|
|
end
|
|
|
|
local function water_particle(pos, accell)
|
|
if airutils.splash_texture == nil then return end
|
|
if airutils.splash_texture == "" then return end
|
|
|
|
minetest.add_particle({
|
|
pos = pos,
|
|
velocity = {x = 0, y = 0, z = 0},
|
|
acceleration = accell, --{x = 0, y = 0, z = 0},
|
|
expirationtime = 2.0,
|
|
size = 4.8,
|
|
collisiondetection = false,
|
|
collision_removal = false,
|
|
vertical = false,
|
|
texture = airutils.splash_texture,
|
|
})
|
|
end
|
|
|
|
function airutils.add_splash(pos, yaw, x_pos)
|
|
local direction = yaw
|
|
|
|
local spl_pos = vector.new(pos)
|
|
--water_particle(spl_pos, {x=0,y=0,z=0})
|
|
|
|
--right
|
|
local move = x_pos/10
|
|
spl_pos.x = spl_pos.x + move * math.cos(direction)
|
|
spl_pos.z = spl_pos.z + move * math.sin(direction)
|
|
|
|
local velocity = calculateVelocity(0.2, yaw)
|
|
water_particle(spl_pos, velocity)
|
|
|
|
--left
|
|
direction = direction - math.rad(180)
|
|
spl_pos = vector.new(pos)
|
|
spl_pos.x = spl_pos.x + move * math.cos(direction)
|
|
spl_pos.z = spl_pos.z + move * math.sin(direction)
|
|
|
|
velocity = calculateVelocity(0.2, yaw - math.rad(180))
|
|
water_particle(spl_pos, velocity)
|
|
end
|