so I’ve been picking apart Building Tools by F3X to try and create a custom type of building system, and found the collision system, and was wondering if it was really worthwhile using this monstrosity instead of just using something like workspace:GetPartBoundsInBox()
, because although it’s only using math, and its only to detect if a collision happens, not what collides, I feel as though :GetPartBoundsInBox
(and similar methods) being made in C++ instead of Lua would run faster still
(be warned the collision function is a thousand lines of just math, so I’d be worried if you bother reading it all, I made the mistake of doing it)
(also this was written by @AxisAngle, not myself, I am NOT anywhere near good enough at math to make this lol)
local components = CFrame.new():GetComponents()
function BoxCollision(CFrame0, Size0, CFrame1, Size1, AssumeTrue)
local m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11 = components(CFrame0)
local m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23 = components(CFrame1)
local m24, m25, m26 = Size0.x / 2, Size0.y / 2, Size0.z / 2
local m27, m28, m29 = Size1.x / 2, Size1.y / 2, Size1.z / 2
local m30, m31, m32 = m12 - m00, m13 - m01, m14 - m02
local m00 = m03 * m30 + m06 * m31 + m09 * m32
local m01 = m04 * m30 + m07 * m31 + m10 * m32
local m02 = m05 * m30 + m08 * m31 + m11 * m32
local m12 = m15 * m30 + m18 * m31 + m21 * m32
local m13 = m16 * m30 + m19 * m31 + m22 * m32
local m14 = m17 * m30 + m20 * m31 + m23 * m32
local m30 = m12 > m27 and m12 - m27 or m12 < -m27 and m12 + m27 or 0
local m31 = m13 > m28 and m13 - m28 or m13 < -m28 and m13 + m28 or 0
local m32 = m14 > m29 and m14 - m29 or m14 < -m29 and m14 + m29 or 0
local m33 = m00 > m24 and m00 - m24 or m00 < -m24 and m00 + m24 or 0
local m34 = m01 > m25 and m01 - m25 or m01 < -m25 and m01 + m25 or 0
local m35 = m02 > m26 and m02 - m26 or m02 < -m26 and m02 + m26 or 0
local m36 = m30 * m30 + m31 * m31 + m32 * m32
local m30 = m33 * m33 + m34 * m34 + m35 * m35
local m31 = m24 < m25 and (m24 < m26 and m24 or m26) or (m25 < m26 and m25 or m26)
local m32 = m27 < m28 and (m27 < m29 and m27 or m29) or (m28 < m29 and m28 or m29)
if m36 < m31 * m31 or m30 < m32 * m32 then
return true
elseif m36 > m24 * m24 + m25 * m25 + m26 * m26 or m30 > m27 * m27 + m28 * m28 + m29 * m29 then
return false
elseif AssumeTrue == nil then
local m30 = m03 * m15 + m06 * m18 + m09 * m21
local m31 = m03 * m16 + m06 * m19 + m09 * m22
local m32 = m03 * m17 + m06 * m20 + m09 * m23
local m03 = m04 * m15 + m07 * m18 + m10 * m21
local m06 = m04 * m16 + m07 * m19 + m10 * m22
local m09 = m04 * m17 + m07 * m20 + m10 * m23
local m04 = m05 * m15 + m08 * m18 + m11 * m21
local m07 = m05 * m16 + m08 * m19 + m11 * m22
local m10 = m05 * m17 + m08 * m20 + m11 * m23
local m05 = m29 * m29
local m08 = m27 * m27
local m11 = m28 * m28
local m15 = m24 * m30
local m16 = m25 * m03
local m17 = m26 * m04
local m18 = m24 * m31
local m19 = m25 * m06
local m20 = m26 * m07
local m21 = m24 * m32
local m22 = m25 * m09
local m23 = m26 * m10
local m33 = m15 + m16 + m17 - m12
if m33 * m33 < m08 then
local m34 = m18 + m19 + m20 - m13
if m34 * m34 < m11 then
local m35 = m21 + m22 + m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = -m15 + m16 + m17 - m12
if m33 * m33 < m08 then
local m34 = -m18 + m19 + m20 - m13
if m34 * m34 < m11 then
local m35 = -m21 + m22 + m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = m15 - m16 + m17 - m12
if m33 * m33 < m08 then
local m34 = m18 - m19 + m20 - m13
if m34 * m34 < m11 then
local m35 = m21 - m22 + m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = -m15 - m16 + m17 - m12
if m33 * m33 < m08 then
local m34 = -m18 - m19 + m20 - m13
if m34 * m34 < m11 then
local m35 = - m21 - m22 + m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = m15 + m16 - m17 - m12
if m33 * m33 < m08 then
local m34 = m18 + m19 - m20 - m13
if m34 * m34 < m11 then
local m35 = m21 + m22 - m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = -m15 + m16 - m17 - m12
if m33 * m33 < m08 then
local m34 = -m18 + m19 - m20 - m13
if m34 * m34 < m11 then
local m35 = -m21 + m22 - m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = m15 - m16 - m17 - m12
if m33 * m33 < m08 then
local m34 = m18 - m19 - m20 - m13
if m34 * m34 < m11 then
local m35 = m21 - m22 - m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m33 = -m15 - m16 - m17 - m12
if m33 * m33 < m08 then
local m34 = -m18 - m19 - m20 - m13
if m34 * m34 < m11 then
local m35 = -m21 - m22 - m23 - m14
if m35 * m35 < m05 then
return true
end
end
end
local m12 = m24 * m24
local m13 = m25 * m25
local m14 = m26 * m26
local m15 = m27 * m04
local m16 = m28 * m07
local m17 = m27 * m30
local m18 = m28 * m31
local m19 = m27 * m03
local m20 = m28 * m06
local m21 = m29 * m10
local m22 = m29 * m32
local m23 = m29 * m09
local m35 = (m02 - m26 + m15 + m16) / m10
if m35 * m35 < m05 then
local m33 = m00 + m17 + m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 + m19 + m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m15 + m16) / m10
if m35 * m35 < m05 then
local m33 = m00 + m17 + m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 + m19 + m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m15 + m16) / m10
if m35 * m35 < m05 then
local m33 = m00 - m17 + m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 - m19 + m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m15 + m16) / m10
if m35 * m35 < m05 then
local m33 = m00 - m17 + m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 - m19 + m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 + m15 - m16) / m10
if m35 * m35 < m05 then
local m33 = m00 + m17 - m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 + m19 - m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m15 - m16) / m10
if m35 * m35 < m05 then
local m33 = m00 + m17 - m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 + m19 - m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m15 - m16) / m10
if m35 * m35 < m05 then
local m33 = m00 - m17 - m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 - m19 - m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m15 - m16) / m10
if m35 * m35 < m05 then
local m33 = m00 - m17 - m18 - m35 * m32
if m33 * m33 < m12 then
local m34 = m01 - m19 - m20 - m35 * m09
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m00 - m24 + m17 + m18) / m32
if m35 * m35 < m05 then
local m33 = m01 + m19 + m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 + m15 + m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m17 + m18) / m32
if m35 * m35 < m05 then
local m33 = m01 + m19 + m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 + m15 + m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m17 + m18) / m32
if m35 * m35 < m05 then
local m33 = m01 - m19 + m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 - m15 + m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m17 + m18) / m32
if m35 * m35 < m05 then
local m33 = m01 - m19 + m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 - m15 + m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 + m17 - m18) / m32
if m35 * m35 < m05 then
local m33 = m01 + m19 - m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 + m15 - m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m17 - m18) / m32
if m35 * m35 < m05 then
local m33 = m01 + m19 - m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 + m15 - m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m17 - m18) / m32
if m35 * m35 < m05 then
local m33 = m01 - m19 - m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 - m15 - m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m17 - m18) / m32
if m35 * m35 < m05 then
local m33 = m01 - m19 - m20 - m35 * m09
if m33 * m33 < m13 then
local m34 = m02 - m15 - m16 - m35 * m10
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m01 - m25 + m19 + m20) / m09
if m35 * m35 < m05 then
local m33 = m02 + m15 + m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 + m17 + m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m19 + m20) / m09
if m35 * m35 < m05 then
local m33 = m02 + m15 + m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 + m17 + m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m19 + m20) / m09
if m35 * m35 < m05 then
local m33 = m02 - m15 + m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 - m17 + m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m19 + m20) / m09
if m35 * m35 < m05 then
local m33 = m02 - m15 + m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 - m17 + m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 + m19 - m20) / m09
if m35 * m35 < m05 then
local m33 = m02 + m15 - m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 + m17 - m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m19 - m20) / m09
if m35 * m35 < m05 then
local m33 = m02 + m15 - m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 + m17 - m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m19 - m20) / m09
if m35 * m35 < m05 then
local m33 = m02 - m15 - m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 - m17 - m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m19 - m20) / m09
if m35 * m35 < m05 then
local m33 = m02 - m15 - m16 - m35 * m10
if m33 * m33 < m14 then
local m34 = m00 - m17 - m18 - m35 * m32
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m02 - m26 + m16 + m21) / m04
if m35 * m35 < m08 then
local m33 = m00 + m18 + m22 - m35 * m30
if m33 * m33 < m12 then
local m34 = m01 + m20 + m23 - m35 * m03
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m16 + m21) / m04
if m35 * m35 < m08 then
local m33 = m00 + m18 + m22 - m35 * m30
if m33 * m33 < m12 then
local m34 = m01 + m20 + m23 - m35 * m03
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m16 + m21) / m04
if m35 * m35 < m08 then
local m33 = m00 - m18 + m22 - m35 * m30
if m33 * m33 < m12 then
local m34 = m01 - m20 + m23 - m35 * m03
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m16 + m21) / m04
if m35 * m35 < m08 then
local m33 = m00 - m18 + m22 - m35 * m30
if m33 * m33 < m12 then
local m34 = m01 - m20 + m23 - m35 * m03
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 + m16 - m21) / m04
if m35 * m35 < m08 then
local m33 = m00 + m18 - m22 - m35 * m30
if m33 * m33 < m12 then
local Axi = m01 + m20 - m23 - m35 * m03
if Axi * Axi < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m16 - m21) / m04
if m35 * m35 < m08 then
local m33 = m00 + m18 - m22 - m35 * m30
if m33 * m33 < m12 then
local sAn = m01 + m20 - m23 - m35 * m03
if sAn * sAn < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m16 - m21) / m04
if m35 * m35 < m08 then
local m33 = m00 - m18 - m22 - m35 * m30
if m33 * m33 < m12 then
local gle = m01 - m20 - m23 - m35 * m03
if gle * gle < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m16 - m21) / m04
if m35 * m35 < m08 then
local m33 = m00 - m18 - m22 - m35 * m30
if m33 * m33 < m12 then
local m34 = m01 - m20 - m23 - m35 * m03
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m00 - m24 + m18 + m22) / m30
if m35 * m35 < m08 then
local m33 = m01 + m20 + m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 + m16 + m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m18 + m22) / m30
if m35 * m35 < m08 then
local m33 = m01 + m20 + m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 + m16 + m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m18 + m22) / m30
if m35 * m35 < m08 then
local m33 = m01 - m20 + m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 - m16 + m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m18 + m22) / m30
if m35 * m35 < m08 then
local m33 = m01 - m20 + m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 - m16 + m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 + m18 - m22) / m30
if m35 * m35 < m08 then
local m33 = m01 + m20 - m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 + m16 - m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m18 - m22) / m30
if m35 * m35 < m08 then
local m33 = m01 + m20 - m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 + m16 - m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m18 - m22) / m30
if m35 * m35 < m08 then
local m33 = m01 - m20 - m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 - m16 - m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m18 - m22) / m30
if m35 * m35 < m08 then
local m33 = m01 - m20 - m23 - m35 * m03
if m33 * m33 < m13 then
local m34 = m02 - m16 - m21 - m35 * m04
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m01 - m25 + m20 + m23) / m03
if m35 * m35 < m08 then
local m33 = m02 + m16 + m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 + m18 + m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m20 + m23) / m03
if m35 * m35 < m08 then
local m33 = m02 + m16 + m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 + m18 + m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m20 + m23) / m03
if m35 * m35 < m08 then
local m33 = m02 - m16 + m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 - m18 + m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m20 + m23) / m03
if m35 * m35 < m08 then
local m33 = m02 - m16 + m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 - m18 + m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 + m20 - m23) / m03
if m35 * m35 < m08 then
local m33 = m02 + m16 - m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 + m18 - m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m20 - m23) / m03
if m35 * m35 < m08 then
local m33 = m02 + m16 - m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 + m18 - m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m20 - m23) / m03
if m35 * m35 < m08 then
local m33 = m02 - m16 - m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 - m18 - m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m20 - m23) / m03
if m35 * m35 < m08 then
local m33 = m02 - m16 - m21 - m35 * m04
if m33 * m33 < m14 then
local m34 = m00 - m18 - m22 - m35 * m30
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m02 - m26 + m21 + m15) / m07
if m35 * m35 < m11 then
local m33 = m00 + m22 + m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 + m23 + m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m21 + m15) / m07
if m35 * m35 < m11 then
local m33 = m00 + m22 + m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 + m23 + m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m21 + m15) / m07
if m35 * m35 < m11 then
local m33 = m00 - m22 + m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 - m23 + m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m21 + m15) / m07
if m35 * m35 < m11 then
local m33 = m00 - m22 + m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 - m23 + m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 + m21 - m15) / m07
if m35 * m35 < m11 then
local m33 = m00 + m22 - m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 + m23 - m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 + m21 - m15) / m07
if m35 * m35 < m11 then
local m33 = m00 + m22 - m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 + m23 - m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 - m26 - m21 - m15) / m07
if m35 * m35 < m11 then
local m33 = m00 - m22 - m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 - m23 - m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m02 + m26 - m21 - m15) / m07
if m35 * m35 < m11 then
local m33 = m00 - m22 - m17 - m35 * m31
if m33 * m33 < m12 then
local m34 = m01 - m23 - m19 - m35 * m06
if m34 * m34 < m13 then
return true
end
end
end
local m35 = (m00 - m24 + m22 + m17) / m31
if m35 * m35 < m11 then
local m33 = m01 + m23 + m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 + m21 + m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m22 + m17) / m31
if m35 * m35 < m11 then
local m33 = m01 + m23 + m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 + m21 + m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m22 + m17) / m31
if m35 * m35 < m11 then
local m33 = m01 - m23 + m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 - m21 + m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m22 + m17) / m31
if m35 * m35 < m11 then
local m33 = m01 - m23 + m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 - m21 + m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 + m22 - m17) / m31
if m35 * m35 < m11 then
local m33 = m01 + m23 - m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 + m21 - m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 + m22 - m17) / m31
if m35 * m35 < m11 then
local m33 = m01 + m23 - m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 + m21 - m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 - m24 - m22 - m17) / m31
if m35 * m35 < m11 then
local m33 = m01 - m23 - m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 - m21 - m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m00 + m24 - m22 - m17) / m31
if m35 * m35 < m11 then
local m33 = m01 - m23 - m19 - m35 * m06
if m33 * m33 < m13 then
local m34 = m02 - m21 - m15 - m35 * m07
if m34 * m34 < m14 then
return true
end
end
end
local m35 = (m01 - m25 + m23 + m19) / m06
if m35 * m35 < m11 then
local m33 = m02 + m21 + m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 + m22 + m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m23 + m19) / m06
if m35 * m35 < m11 then
local m33 = m02 + m21 + m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 + m22 + m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m23 + m19) / m06
if m35 * m35 < m11 then
local m33 = m02 - m21 + m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 - m22 + m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m23 + m19) / m06
if m35 * m35 < m11 then
local m33 = m02 - m21 + m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 - m22 + m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 + m23 - m19) / m06
if m35 * m35 < m11 then
local m33 = m02 + m21 - m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 + m22 - m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 + m23 - m19) / m06
if m35 * m35 < m11 then
local m33 = m02 + m21 - m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 + m22 - m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 - m25 - m23 - m19) / m06
if m35 * m35 < m11 then
local m33 = m02 - m21 - m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 - m22 - m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
local m35 = (m01 + m25 - m23 - m19) / m06
if m35 * m35 < m11 then
local m33 = m02 - m21 - m15 - m35 * m07
if m33 * m33 < m14 then
local m34 = m00 - m22 - m17 - m35 * m31
if m34 * m34 < m12 then
return true
end
end
end
return false
else
return AssumeTrue
end
end
so really I guess what’s up for review, is a collision detection method that was written more than a decade ago, on if it’s at all worth having, or just converting to a newer method, such as workspace:GetPartBoundsInBox()
or workspace:GetPartsInPart()