Тема: Исходница
Показать сообщение отдельно
Старый 31.08.2010, 08:48   #11
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,374
Написано 2,478 полезных сообщений
(для 6,866 пользователей)
Ответ: Исходница

Ну чочо, продолжим:

Чётность:
Function IsOdd( value )
    If 
value =0 Then Return 0
    
    
If Float( value Mod 2 ) <>0 Then Return 1 Else Return 0
End 
Function 
HEX в INT:
Function Hex2Int%(h$)
    
Local z,i
    
    Local t2
$= Upper$(Trim$(h$))
    
Local d% = 0
    
    
For z = 1 To Len(t2$)
        
i = Instr("0123456789ABCDEF",Mid$(t2$,z,1))
        If (
i > 0) Then d = d * 16 + i - 1
    Next
    
Return d
End 
Function 

Узнать размер куба, в который вписан меш.
Когда пользовался PhysX`ом функция была дико полезна.
Global EntityBoxX#, EntityBoxY#, EntityBoxZ#
Function GetEntityBox(ent, recursive = True, root = 0)
If 
root = 0 Then
    EntityBoxX
# = 0
    
EntityBoxY# = 0
    
EntityBoxZ# = 0
Else
    
ox# = EntityX(ent, True) - EntityX(root, True)
    
oy# = EntityY(ent, True) - EntityY(root, True)
    
oz# = EntityZ(ent, True) - EntityZ(root, True)
EndIf
cnt_surf = CountSurfaces(ent)
For 
s = 1 To cnt_surf
    surf 
= GetSurface(ent, s)
    
cnt_verts = CountVertices(surf) - 1
    
For v = 0 To cnt_verts
        vx
# = Abs(VertexX(surf, v) + ox#)
        
vy# = Abs(VertexY(surf, v) + oy#)
        
vz# = Abs(VertexZ(surf, v) + oz#)
        
If (vx# > EntityBoxX#) Then EntityBoxX# = vx#
        
If (vy# > EntityBoxY#) Then EntityBoxY# = vy#
        
If (vz# > EntityBoxZ#) Then EntityBoxZ# = vz#
    
Next
Next
If recursive Then
    
If root = 0 Then root = ent
    cnt_children 
= CountChildren(ent)
    For 
i = 1 To cnt_children
        GetEntityBox
(GetChild(ent, i), True, root)
    
Next
EndIf
End Function 
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Arles (31.08.2010), baton4ik (31.08.2010), impersonalis (31.08.2010)