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