| 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 |