summaryrefslogtreecommitdiff
path: root/objects/heav_object_2.lua
blob: 63eba78c2bfa5f7bcc7473b1399cfbd5c62593d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
local heav_object_2 = {hitbox = 4}
local obj = require "obj"
local debug_arrow = require "debug_arrow"

function heav_object_2:draw()
    set_color(0.8,0.7,0.95)
    line(-4, -4, -4, 4, 4, 4, -4, -4)
    line(3, -3, -3, -3)
    line(3, -3, 3, 3)
    line(4, 4, 4, -4, -4, -4)
end

function heav_object_2:init()
end

function heav_object_2:tick()
    local x, y = self.data.pos[1], self.data.pos[2]
    local vx, vy = self.data.vel[1], self.data.vel[2]
    for obj in obj.in_circle(x, y, 40) do
        if obj ~= self then
            local ox, oy = obj.data.pos[1], obj.data.pos[2]
            local ovx, ovy = obj.data.vel[1], obj.data.vel[2]
            -- shift frame of reference
            ox = ox - x
            oy = oy - y
            ovx = ovx - vx
            ovy = ovy - vy

            local mag = math.sqrt(ovx^2 + ovy^2)

            ovx = ovx * 0.99
            ovy = ovy * 0.99

            local diff = math.sqrt(ovx^2 + ovy^2) - mag

            self.data.avel = self.data.avel + diff * (self.data.avel > 0 and 1 or -1)
            
            ovx = ovx + vx
            ovy = ovy + vy 
            obj.data.vel[1] = ovx
            obj.data.vel[2] = ovy
        end
    end
end

return {heav_object_2 = heav_object_2}