myspace / Lua /Tactical /PrefabContainer.lua
sirnii's picture
Upload 1816 files
b6a38d7 verified
raw
history blame
1.19 kB
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