File size: 1,193 Bytes
b6a38d7 |
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
DefineClass.PrefabContainer = {
__parents = { "InitDone" },
name = false,
pos = false,
angle = 0,
objs = false
}
function PrefabContainer:Init()
local err, objs = PlacePrefab(self.name, self.pos, self.angle, nil, {
dont_clamp_objects = true,
ignore_ground_offset = true
})
assert(not err, err)
self.objs = objs
end
function PrefabContainer:Done()
DoneObjects(self.objs)
self.objs = false
end
function PrefabContainer:GetPos()
return self.pos
end
function PrefabContainer:SetPos(pos)
if pos == self.pos then
return
end
local dp = pos - self.pos
for i, o in ipairs(self.objs) do
o:SetPos(o:GetPos() + dp)
end
self.pos = pos
end
function PrefabContainer:SetPosRelativeTo(pos, obj)
local relativePos = obj:GetPos() - self.pos
self:SetPos(pos - relativePos)
end
function PrefabContainer:GetAngle()
return self.angle
end
function PrefabContainer:SetAngle(angle)
if AngleDiff(angle, self.angle) == 0 then
return
end
RotateObjectsAroundCenter(self.objs, angle - self.angle, self.pos)
self.angle = angle
end
function PrefabContainer:GetObjectByType(class)
for i, o in ipairs(self.objs) do
if IsKindOf(o, class) then
return o
end
end
return false
end |