Спс Рандомайз, удобный код!
Только хочу добавить, что таким образом можно найти только 3 точки: самую правую, верхнюю и дальнюю. И если бокс построить по симметрии, а модель будет удлинена в другую сторону, меш вылезет за бокс.
Так что надо находить и три противоположные стороны
Извиняюсь, за корявость написания, не знаю как здесь табуляцией пользоваться..
Global EntityBox_Right#, EntityBox_Left#, EntityBox_Top#, EntityBox_Bottom#, EntityBox_Front#, EntityBox_Back#
Function GetEntityBox(entity)
EntityBox_Right = 0
EntityBox_Left = 0
EntityBox_Top = 0
EntityBox_Bottom = 0
EntityBox_Front = 0
EntityBox_Back = 0
Local surf_count = CountSurfaces(entity)
For surf_n = 0 To (surf_count - 1)
Local surf = GetSurface(entity, surf_n)
Local vert_count = CountVertices(surf)
For vert_n = 0 To (vert_count-1)
EntityBox_Right = Max(VertexX(surf, vert_n), EntityBox_Right)
EntityBox_Left = Min(VertexX(surf, vert_n), EntityBox_Left)
EntityBox_Top = Max(VertexY(surf, vert_n), EntityBox_Top)
EntityBox_Bottom = Min(VertexY(surf, vert_n), EntityBox_Bottom)
EntityBox_Front = Max(VertexZ(surf, vert_n), EntityBox_Front)
EntityBox_Back = Min(VertexZ(surf, vert_n), EntityBox_Back)
Next
Next
End Function
Function Max#(v1#, v2#)
If v1 > v2 Then
Return v1
Else
Return v2
EndIF
End Function
Function Min#(v1#, v2#)
If v1 > v2 Then
Return v2
Else
Return v1
EndIF
End Function