⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helper.bas

📁 场景精美的 3D 第一视角射击游戏(类似于 CS)
💻 BAS
字号:
Attribute VB_Name = "Helper"
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public Const PI = 3.141

Public Type XMesh
    Mesh As D3DXMesh
    NumMaterials As Long
    MeshTextures() As Direct3DTexture8
    MeshMaterials() As D3DMATERIAL8
    Transformation As D3DMATRIX
End Type

Public Function MakeFVertex(X As Single, Y As Single, Z As Single, U As Single, V As Single, Col As Long) As FVERTEX
    With MakeFVertex
        .Pos.X = X
        .Pos.Y = Y
        .Pos.Z = Z
        .tu = U
        .TV = V
        .Col = Col
    End With
End Function

Public Function MakeVector(X As Single, Y As Single, Z As Single) As D3DVECTOR
    With MakeVector
        .X = X
        .Y = Y
        .Z = Z
    End With
End Function

Public Function Min(X As Single, Y As Single) As Single
    If X < Y Then
        Min = X
    Else
        Min = Y
    End If
End Function

Public Function Max(X As Single, Y As Single) As Single
    If X > Y Then
        Max = X
    Else
        Max = Y
    End If
End Function

Public Function CrossProduct(V1 As D3DVECTOR, V2 As D3DVECTOR) As D3DVECTOR
    With CrossProduct
        .X = V1.Y * V2.Z - V1.Z * V2.Y
        .Y = V1.Z * V2.X - V1.X * V2.Z
        .Z = V1.X * V2.Y - V1.Y * V2.X
    End With
End Function

Public Function DotProduct(V1 As D3DVECTOR, V2 As D3DVECTOR) As Single
    DotProduct = V1.X * V2.X + V1.Y * V2.Y + V1.Z * V2.Z
End Function

Public Function Dist(V1 As D3DVECTOR, V2 As D3DVECTOR) As Single
    Dist = Sqr((V2.X - V1.X) * (V2.X - V1.X) + (V2.Y - V1.Y) * (V2.Y - V1.Y) + (V2.Z - V1.Z) * (V2.Z - V1.Z))
End Function

Public Function Length(V1 As D3DVECTOR) As Single
    Length = Sqr(V1.X * V1.X + V1.Y * V1.Y + V1.Z * V1.Z)
End Function

Public Function Acos(XX As Single) As Single
    If Abs(XX) < 1 Then
        Acos = Atn(-XX / Sqr(-XX * XX + 1)) + 1.5707963267949
    ElseIf XX = 1 Then
        Acos = 0
    ElseIf XX = -1 Then
        Acos = PI
    End If
End Function

Public Function Asin(XX As Single) As Single
    If Abs(XX) < 1 Then
        Asin = Atn(XX / Sqr(-XX * XX + 1))
    ElseIf XX = 1 Then
        Asin = 1.5707963267948
    ElseIf XX = -1 Then
        Asin = 4.7123889803846
    End If
End Function

Public Function ARGB2LONG(A As Long, R As Long, G As Long, B As Long) As Long
    If A > 127 Then
        ARGB2LONG = &H80000000 Or (A - 128) * 16777216
        ARGB2LONG = ARGB2LONG Or R * 65536
        ARGB2LONG = ARGB2LONG Or G * 256
        ARGB2LONG = ARGB2LONG Or B
    Else
        ARGB2LONG = A * 16777216
        ARGB2LONG = ARGB2LONG Or R * 65536
        ARGB2LONG = ARGB2LONG Or G * 256
        ARGB2LONG = ARGB2LONG Or B
    End If
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -