152 | function Debug2DArea:createFromPosAndDir(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, width, length) |
153 | local halfWidth = width*0.5 |
154 | local halfLength = length*0.5 |
155 | |
156 | local pos = self.positionNodes |
157 | pos[1] = {MathUtil.transform(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, -halfWidth, 0, -halfLength)} |
158 | pos[2] = {MathUtil.transform(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, -halfWidth, 0, halfLength)} |
159 | pos[3] = {MathUtil.transform(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, halfWidth, 0, halfLength)} |
160 | pos[4] = {MathUtil.transform(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, halfWidth, 0, -halfLength)} |
161 | |
162 | return self |
163 | end |
140 | function Debug2DArea:createWithSizeAndOffset(node, width, length, widthOffset, lengthOffset) |
141 | local dirX, dirY, dirZ = localDirectionToWorld(node, 0, 0, 1) |
142 | local upX, upY, upZ = localDirectionToWorld(node, 0, 1, 0) |
143 | local x, y, z = getWorldTranslation(node) |
144 | |
145 | x, y, z = MathUtil.transform(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, widthOffset, 0, lengthOffset) |
146 | |
147 | return self:createFromPosAndDir(x, y, z, dirX, dirY, dirZ, upX, upY, upZ, width, length) |
148 | end |
16 | function Debug2DArea.new(filled, doubleSided, color, alignToTerrain, customMt) |
17 | local self = setmetatable({}, customMt or Debug2DArea_mt) |
18 | |
19 | self.color = color or {1, 1, 1, 1} |
20 | self.filled = Utils.getNoNil(filled, false) |
21 | self.alignToTerrain = Utils.getNoNil(alignToTerrain, true) |
22 | self.doubleSided = Utils.getNoNil(doubleSided, false) |
23 | |
24 | self.positionNodes = { |
25 | {-1, 0, -1}, |
26 | { 1, 0, -1}, |
27 | { 1, 0, 1}, |
28 | {-1, 0, 1}, |
29 | {-1, 0, -1}, |
30 | { 1, 0, -1}, |
31 | { 1, 0, 1}, |
32 | {-1, 0, 1} |
33 | } |
34 | |
35 | return self |
36 | end |