Files
Client/Library/dxx8/samples/Multimedia/VBSamples/Demos/AirHockey/cTable.cls
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

121 lines
3.5 KiB
OpenEdge ABL

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "cTable"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
'Here we will encapsulate all of the code needed for the table
'Local variables for the properties of the table
Private moPosition As D3DVECTOR 'Current position of the table
Private moTable As CD3DFrame 'D3D Mesh for the table
Private mlTransparantPaddle As Boolean
Public DrawTable As Boolean ' You can also turn off the table (dunno why, but let'em)
'Position property
Public Property Let Position(oPos As D3DVECTOR)
moPosition = oPos
End Property
Public Property Get Position() As D3DVECTOR
Position = moPosition
End Property
'Transparent property
Public Property Let Transparent(ByVal fTrans As Boolean)
Dim oMesh As CD3DMesh, oMaterial As D3DMATERIAL8
Dim lNumMaterial As Long, lCount As Long
mlTransparantPaddle = fTrans
'now set the property
Set oMesh = moTable.FindChildObject("table", 0)
lNumMaterial = oMesh.GetMaterialCount
For lCount = 0 To lNumMaterial - 1
oMaterial = oMesh.GetMaterial(lCount)
If fTrans Then
oMaterial.diffuse.a = 0.5
Else
oMaterial.diffuse.a = 1
End If
oMesh.SetMaterial lCount, oMaterial
Next
End Property
Public Property Get Transparent() As Boolean
Transparent = mlTransparantPaddle
End Property
'Methods
Public Sub Init(ByVal sMedia As String, sFile As String)
Set moTable = D3DUtil_LoadFromFile(AddDirSep(sMedia) & sFile, Nothing, Nothing)
End Sub
Public Sub Render(dev As Direct3DDevice8)
Dim matTable As D3DMATRIX
If DrawTable Then
'Now the table
D3DXMatrixIdentity matTable
D3DXMatrixTranslation matTable, moPosition.X, moPosition.Y, moPosition.z
moTable.SetMatrix matTable
moTable.Render g_dev
End If
End Sub
Public Sub CleanupFrame()
moTable.Destroy
Set moTable = Nothing
End Sub
Public Function FadeMesh(FadeInterval As Single) As Boolean
Dim lNumMaterial As Long
Dim lCount As Long
Dim oMaterial As D3DMATERIAL8
Dim fDoneFading As Boolean
Dim oMesh As CD3DMesh
Dim nInternalInterval As Single
Static lFadeTime As Long
FadeMesh = True
nInternalInterval = FadeInterval
If lFadeTime = 0 Then
lFadeTime = timeGetTime
Exit Function 'We'll do the fade next render pass
End If
nInternalInterval = (((timeGetTime - lFadeTime) / 1000000) * nInternalInterval)
fDoneFading = True
If Not DrawTable Then Exit Function
Set oMesh = moTable.FindChildObject("table", 0)
lNumMaterial = oMesh.GetMaterialCount
For lCount = 0 To lNumMaterial - 1
oMaterial = oMesh.GetMaterial(lCount)
If nInternalInterval > 0 And oMaterial.diffuse.a <= 1 Then
oMaterial.diffuse.a = oMaterial.diffuse.a + nInternalInterval
fDoneFading = False
ElseIf nInternalInterval < 0 And oMaterial.diffuse.a >= -1 Then
oMaterial.diffuse.a = oMaterial.diffuse.a + nInternalInterval
fDoneFading = False
End If
oMesh.SetMaterial lCount, oMaterial
Next
FadeMesh = fDoneFading
End Function
Private Sub Class_Initialize()
DrawTable = True
Set moTable = Nothing
End Sub
Private Sub Class_Terminate()
If Not moTable Is Nothing Then moTable.Destroy
Set moTable = Nothing
End Sub