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>
This commit is contained in:
@@ -0,0 +1,876 @@
|
||||
VERSION 5.00
|
||||
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
|
||||
Begin VB.Form Form1
|
||||
BorderStyle = 3 'Fixed Dialog
|
||||
Caption = "Auto Collision Parts Database"
|
||||
ClientHeight = 8520
|
||||
ClientLeft = 480
|
||||
ClientTop = 615
|
||||
ClientWidth = 10875
|
||||
Icon = "auto.frx":0000
|
||||
LinkTopic = "Form1"
|
||||
MaxButton = 0 'False
|
||||
MinButton = 0 'False
|
||||
ScaleHeight = 568
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 725
|
||||
Begin MSComctlLib.TreeView TreeView1
|
||||
Height = 3495
|
||||
Left = 120
|
||||
TabIndex = 27
|
||||
Top = 480
|
||||
Width = 3975
|
||||
_ExtentX = 7011
|
||||
_ExtentY = 6165
|
||||
_Version = 393217
|
||||
HideSelection = 0 'False
|
||||
Style = 7
|
||||
Appearance = 1
|
||||
End
|
||||
Begin VB.TextBox Text8
|
||||
Enabled = 0 'False
|
||||
Height = 375
|
||||
Left = 9000
|
||||
TabIndex = 25
|
||||
Top = 7380
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.PictureBox Picture2
|
||||
Height = 735
|
||||
Left = 120
|
||||
ScaleHeight = 675
|
||||
ScaleWidth = 10515
|
||||
TabIndex = 19
|
||||
Top = 4080
|
||||
Width = 10575
|
||||
Begin VB.Label Label9
|
||||
Caption = $"auto.frx":0442
|
||||
Height = 495
|
||||
Left = 120
|
||||
TabIndex = 20
|
||||
Top = 120
|
||||
Width = 9495
|
||||
End
|
||||
End
|
||||
Begin VB.CommandButton Command1
|
||||
Caption = "Add To Invoice"
|
||||
Height = 495
|
||||
Left = 120
|
||||
TabIndex = 16
|
||||
Top = 7920
|
||||
Width = 3975
|
||||
End
|
||||
Begin MSComctlLib.ListView ListView1
|
||||
Height = 2355
|
||||
Left = 4320
|
||||
TabIndex = 15
|
||||
Top = 4920
|
||||
Width = 6375
|
||||
_ExtentX = 11245
|
||||
_ExtentY = 4154
|
||||
View = 3
|
||||
LabelWrap = -1 'True
|
||||
HideSelection = 0 'False
|
||||
_Version = 393217
|
||||
ForeColor = -2147483640
|
||||
BackColor = -2147483643
|
||||
BorderStyle = 1
|
||||
Appearance = 1
|
||||
NumItems = 5
|
||||
BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}
|
||||
Key = "price"
|
||||
Text = "DESCRIPTION"
|
||||
Object.Width = 5821
|
||||
EndProperty
|
||||
BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}
|
||||
SubItemIndex = 1
|
||||
Key = "part"
|
||||
Text = "PRICE"
|
||||
Object.Width = 2117
|
||||
EndProperty
|
||||
BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628}
|
||||
SubItemIndex = 2
|
||||
Key = "id"
|
||||
Text = "ID"
|
||||
Object.Width = 2117
|
||||
EndProperty
|
||||
BeginProperty ColumnHeader(4) {BDD1F052-858B-11D1-B16A-00C0F0283628}
|
||||
SubItemIndex = 3
|
||||
Key = "modid"
|
||||
Text = "MODID"
|
||||
Object.Width = 0
|
||||
EndProperty
|
||||
BeginProperty ColumnHeader(5) {BDD1F052-858B-11D1-B16A-00C0F0283628}
|
||||
SubItemIndex = 4
|
||||
Object.Width = 38100
|
||||
EndProperty
|
||||
End
|
||||
Begin VB.CommandButton Command3
|
||||
Caption = "Process Order"
|
||||
Height = 495
|
||||
Left = 7680
|
||||
TabIndex = 3
|
||||
Top = 7920
|
||||
Width = 3015
|
||||
End
|
||||
Begin VB.CommandButton Command2
|
||||
Caption = "Remove From Invoice"
|
||||
Height = 495
|
||||
Left = 4320
|
||||
TabIndex = 2
|
||||
Top = 7920
|
||||
Width = 3135
|
||||
End
|
||||
Begin VB.PictureBox largepict
|
||||
Height = 3495
|
||||
Left = 4320
|
||||
ScaleHeight = 229
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 421
|
||||
TabIndex = 1
|
||||
Top = 480
|
||||
Width = 6375
|
||||
End
|
||||
Begin VB.PictureBox Picture1
|
||||
Height = 2835
|
||||
Left = 120
|
||||
ScaleHeight = 2775
|
||||
ScaleWidth = 3915
|
||||
TabIndex = 0
|
||||
Top = 4920
|
||||
Width = 3975
|
||||
Begin VB.TextBox Text7
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 26
|
||||
Top = 2400
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text6
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 24
|
||||
Top = 2040
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text5
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 13
|
||||
Top = 1680
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text4
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 11
|
||||
Top = 1320
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text3
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 9
|
||||
Top = 960
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text2
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 7
|
||||
Top = 600
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.TextBox Text1
|
||||
Enabled = 0 'False
|
||||
Height = 285
|
||||
Left = 1440
|
||||
TabIndex = 4
|
||||
Top = 240
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.Label Label12
|
||||
Caption = "MAKE"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 23
|
||||
Top = 2400
|
||||
Width = 735
|
||||
End
|
||||
Begin VB.Label Label11
|
||||
Caption = "Label11"
|
||||
Height = 15
|
||||
Left = 240
|
||||
TabIndex = 22
|
||||
Top = 2640
|
||||
Width = 735
|
||||
End
|
||||
Begin VB.Label Label10
|
||||
Caption = "STOCK"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 21
|
||||
Top = 2040
|
||||
Width = 1095
|
||||
End
|
||||
Begin VB.Label Label5
|
||||
Caption = "ASSEMBLY"
|
||||
Height = 375
|
||||
Left = 120
|
||||
TabIndex = 12
|
||||
Top = 1680
|
||||
Width = 1335
|
||||
End
|
||||
Begin VB.Label Label4
|
||||
Caption = "COMPAT PARTS"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 10
|
||||
Top = 1320
|
||||
Width = 1335
|
||||
End
|
||||
Begin VB.Label Label3
|
||||
Caption = "PRICE"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 8
|
||||
Top = 960
|
||||
Width = 1095
|
||||
End
|
||||
Begin VB.Label Label2
|
||||
Caption = "DESCRIPTION"
|
||||
Height = 375
|
||||
Left = 120
|
||||
TabIndex = 6
|
||||
Top = 600
|
||||
Width = 1215
|
||||
End
|
||||
Begin VB.Label Label1
|
||||
Caption = "PARTID"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 5
|
||||
Top = 240
|
||||
Width = 735
|
||||
End
|
||||
End
|
||||
Begin VB.Label Label8
|
||||
Caption = "Select Assembly"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 18
|
||||
Top = 120
|
||||
Width = 2895
|
||||
End
|
||||
Begin VB.Label Label7
|
||||
Caption = "Click On a Part From Assembly - Use the mouse to Rotate the Assembly"
|
||||
Height = 255
|
||||
Left = 4320
|
||||
TabIndex = 17
|
||||
Top = 120
|
||||
Width = 5895
|
||||
End
|
||||
Begin VB.Label Label6
|
||||
Caption = "TOTAL"
|
||||
Height = 255
|
||||
Left = 4440
|
||||
TabIndex = 14
|
||||
Top = 7380
|
||||
Width = 1455
|
||||
End
|
||||
Begin VB.Menu MENU_FILE
|
||||
Caption = "&File"
|
||||
Begin VB.Menu MENU_EXIT
|
||||
Caption = "E&xit"
|
||||
End
|
||||
End
|
||||
Begin VB.Menu MENU_HELP
|
||||
Caption = "&Help"
|
||||
Begin VB.Menu MENU_ABOUT
|
||||
Caption = "&About..."
|
||||
End
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "Form1"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Option Explicit
|
||||
|
||||
'The model used by this sample, engine1.x, is provided courtesy of Viewpoint
|
||||
'Digital, Inc. (www.viewpoint.com). It is provided for use with this sample
|
||||
'only and cannot be distributed with any application without prior written
|
||||
'consent. V6 Engine Model copyright 1999 Viewpoint Digital, Inc..
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
'
|
||||
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
||||
'
|
||||
' File: auto.frm
|
||||
' Content: Example of display and picking geometry
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
Dim m_assemblies(100) As CD3DFrame
|
||||
Dim m_assemblyName(100) As String
|
||||
Dim m_nAssembly As Long
|
||||
|
||||
Dim m_scene As CD3DFrame
|
||||
Dim m_root As CD3DFrame
|
||||
Dim m_bMouseDown As Boolean
|
||||
Dim m_lastX As Integer
|
||||
Dim m_lastY As Integer
|
||||
Dim m_current As CD3DFrame
|
||||
|
||||
Dim m_bInLoad As Boolean
|
||||
Dim m_binit As Boolean
|
||||
Dim m_data As New Data
|
||||
Dim fLoading As Boolean
|
||||
Dim m_backcolor As Long
|
||||
Dim m_mediadir As String
|
||||
|
||||
Implements DirectXEvent8
|
||||
|
||||
|
||||
|
||||
Private Sub DirectXEvent8_DXCallback(ByVal eventid As Long)
|
||||
Dim b As Boolean
|
||||
|
||||
End Sub
|
||||
|
||||
'- Form_Load
|
||||
'
|
||||
' Initialize the D3DUtil Framework
|
||||
' Initialize the parts info text database
|
||||
' Initialize the treeview control
|
||||
|
||||
Private Sub Form_Load()
|
||||
Dim b As Boolean
|
||||
|
||||
Me.Show
|
||||
DoEvents
|
||||
|
||||
' Initialize D3D Window
|
||||
b = D3DUtil_DefaultInitWindowed(0, largepict.hwnd)
|
||||
If b = False Then
|
||||
MsgBox "Exiting, Unable to initialize 3D device"
|
||||
End
|
||||
End If
|
||||
|
||||
'Add some default light and turn on lighting
|
||||
g_lWindowWidth = largepict.ScaleWidth
|
||||
g_lWindowHeight = largepict.ScaleHeight
|
||||
D3DUtil.D3DUtil_SetupDefaultScene
|
||||
|
||||
'Find Media Directory
|
||||
m_mediadir = FindMediaDir("partstable.txt", False)
|
||||
|
||||
'Open Text Database
|
||||
m_data.InitData m_mediadir + "partstable.txt"
|
||||
|
||||
'Save our initial background color
|
||||
m_backcolor = &HFF90D090
|
||||
|
||||
'Fill the Tree view with its root node
|
||||
FillTreeViewControl
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
'- SelectPart
|
||||
'
|
||||
' fill in the text boxes given a certain identifier
|
||||
' from a model. We query the database for the identifier
|
||||
' and from there we get the rest of the info
|
||||
Sub SelectPart(strName As String, strObject As String)
|
||||
|
||||
If m_data.MoveToModelPartRecord(strName) = False Then Exit Sub
|
||||
|
||||
Text1.Text = m_data.PartID
|
||||
Text2.Text = m_data.Description
|
||||
Text3.Text = format$(m_data.Price, "#0.00")
|
||||
Text4.Text = m_data.CompatibleParts
|
||||
Text5.Text = "Engine"
|
||||
Text6.Text = m_data.Stock
|
||||
Text7.Text = m_data.PartMake
|
||||
|
||||
If Not m_root Is Nothing Then
|
||||
|
||||
'Turn the selected object red
|
||||
If Not m_current Is Nothing Then
|
||||
With m_current.GetChildMesh(0)
|
||||
.bUseMaterials = True
|
||||
.bUseMaterialOverride = False
|
||||
End With
|
||||
End If
|
||||
|
||||
Set m_current = m_scene.FindChildObject(strObject, 0)
|
||||
|
||||
If Not (m_current Is Nothing) Then
|
||||
Dim mat As D3DMATERIAL8
|
||||
With m_current.GetChildMesh(0)
|
||||
.bUseMaterials = False
|
||||
.bUseMaterialOverride = True
|
||||
mat.emissive.r = 0.5
|
||||
mat.emissive.a = 1
|
||||
mat.diffuse.r = 0.3
|
||||
mat.diffuse.a = 1
|
||||
.SetMaterialOverride mat
|
||||
End With
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
errOut:
|
||||
End Sub
|
||||
|
||||
|
||||
'- Rotate Track ball
|
||||
' given a point on the screen the mouse was moved to
|
||||
' simulate a track ball
|
||||
Private Sub RotateTrackBall(x As Integer, y As Integer)
|
||||
|
||||
|
||||
Dim delta_x As Single, delta_y As Single
|
||||
Dim delta_r As Single, radius As Single, denom As Single, angle As Single
|
||||
|
||||
' rotation axis in camcoords, worldcoords, sframecoords
|
||||
Dim axisC As D3DVECTOR
|
||||
Dim wc As D3DVECTOR
|
||||
Dim axisS As D3DVECTOR
|
||||
Dim base As D3DVECTOR
|
||||
Dim origin As D3DVECTOR
|
||||
|
||||
delta_x = x - m_lastX
|
||||
delta_y = y - m_lastY
|
||||
m_lastX = x
|
||||
m_lastY = y
|
||||
|
||||
|
||||
delta_r = Sqr(delta_x * delta_x + delta_y * delta_y)
|
||||
radius = 50
|
||||
denom = Sqr(radius * radius + delta_r * delta_r)
|
||||
|
||||
If (delta_r = 0 Or denom = 0) Then Exit Sub
|
||||
angle = (delta_r / denom)
|
||||
|
||||
axisC.x = (-delta_y / delta_r)
|
||||
axisC.y = (-delta_x / delta_r)
|
||||
axisC.z = 0
|
||||
|
||||
|
||||
'transform camera space vector to world space
|
||||
'm_largewindow.m_cameraFrame.Transform wc, axisC
|
||||
g_dev.GetTransform D3DTS_VIEW, g_viewMatrix
|
||||
D3DXVec3TransformCoord wc, axisC, g_viewMatrix
|
||||
|
||||
|
||||
'transform world space vector into Model space
|
||||
m_scene.UpdateFrames
|
||||
axisS = m_root.InverseTransformCoord(wc)
|
||||
|
||||
'transform origen camera space to world coordinates
|
||||
'm_largewindow.m_cameraFrame.Transform wc, origin
|
||||
D3DXVec3TransformCoord wc, origin, g_viewMatrix
|
||||
|
||||
'transfer cam space origen to model space
|
||||
base = m_root.InverseTransformCoord(wc)
|
||||
|
||||
axisS.x = axisS.x - base.x
|
||||
axisS.y = axisS.y - base.y
|
||||
axisS.z = axisS.z - base.z
|
||||
|
||||
m_root.AddRotation COMBINE_BEFORE, axisS.x, axisS.y, axisS.z, angle
|
||||
|
||||
End Sub
|
||||
|
||||
'- LoadAssembly
|
||||
'
|
||||
' See if we have the assembly loaded
|
||||
' if not figure out which model to use from a db
|
||||
' and load it
|
||||
' by default it will attach it to the scene
|
||||
Function LoadAssembly(sname As String) As Long
|
||||
|
||||
|
||||
Dim i As Long
|
||||
Dim strCap As String
|
||||
Dim strModel As String
|
||||
|
||||
Static b As Boolean
|
||||
|
||||
If b = True Then Exit Function
|
||||
b = True
|
||||
|
||||
'make sure we dont habe it already
|
||||
For i = 1 To m_nAssembly
|
||||
If sname = m_assemblyName(i) Then
|
||||
LoadAssembly = i
|
||||
b = False
|
||||
Exit Function
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
m_nAssembly = m_nAssembly + 1
|
||||
m_assemblyName(m_nAssembly) = sname
|
||||
|
||||
|
||||
'look up the model we need to load
|
||||
'for this example we only show 1 model
|
||||
'but one could query for the files from a database
|
||||
strModel = "engine1.x"
|
||||
strCap = Me.Caption
|
||||
Me.Caption = "Loading- please wait"
|
||||
DoEvents
|
||||
Err.Number = 0
|
||||
|
||||
Form2.Top = Me.Top + Me.height / 4
|
||||
Form2.Left = Me.Left + Me.width / 8
|
||||
Form2.Show
|
||||
DoEvents
|
||||
|
||||
Set m_assemblies(m_nAssembly) = New CD3DFrame
|
||||
b = m_assemblies(m_nAssembly).InitFromFile(g_dev, m_mediadir + strModel, Nothing, Nothing)
|
||||
|
||||
|
||||
If b = False Then
|
||||
Set m_assemblies(m_nAssembly) = Nothing
|
||||
m_assemblyName(m_nAssembly) = ""
|
||||
m_nAssembly = m_nAssembly - 1
|
||||
Unload Form2
|
||||
Me.Caption = strCap
|
||||
GoTo errOut
|
||||
End If
|
||||
Me.Caption = strCap
|
||||
|
||||
m_assemblies(m_nAssembly).SetFVF g_dev, D3DFVF_VERTEX
|
||||
m_assemblies(m_nAssembly).ComputeNormals
|
||||
|
||||
g_dev.SetRenderState D3DRS_AMBIENT, &H90909090
|
||||
|
||||
|
||||
'Release the previous scene
|
||||
Set m_scene = Nothing
|
||||
Set m_root = Nothing
|
||||
Set m_current = Nothing
|
||||
|
||||
'Create a root object for the scene
|
||||
Set m_scene = New CD3DFrame
|
||||
|
||||
'Create a new root object to use for rotation matrix
|
||||
Set m_root = D3DUtil_CreateFrame(m_scene)
|
||||
|
||||
|
||||
|
||||
'Add our assembly to the tree
|
||||
m_root.AddChild m_assemblies(m_nAssembly)
|
||||
|
||||
|
||||
'Position our assembly
|
||||
m_assemblies(m_nAssembly).AddTranslation COMBINE_replace, 0, 0, 5
|
||||
|
||||
|
||||
|
||||
'Recolor m_assemblies(m_nAssembly)
|
||||
|
||||
LoadAssembly = m_nAssembly
|
||||
|
||||
|
||||
Unload Form2
|
||||
DoEvents
|
||||
If fLoading Then End
|
||||
|
||||
RenderScene
|
||||
|
||||
DoEvents
|
||||
|
||||
Set m_root = m_assemblies(m_nAssembly)
|
||||
|
||||
|
||||
m_binit = True
|
||||
|
||||
errOut:
|
||||
|
||||
|
||||
b = False
|
||||
|
||||
|
||||
TreeView1.Enabled = True
|
||||
largepict.SetFocus
|
||||
DoEvents
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
' Command1_Click
|
||||
' Add To Invoice
|
||||
'
|
||||
Private Sub Command1_Click()
|
||||
|
||||
Dim itm As ListItem
|
||||
If Text1.Text = "" Then Exit Sub
|
||||
|
||||
Set itm = ListView1.ListItems.Add(, , Text2.Text)
|
||||
itm.SubItems(1) = Text3.Text
|
||||
itm.SubItems(2) = Text1.Text
|
||||
Set ListView1.SelectedItem = itm
|
||||
itm.EnsureVisible
|
||||
Text8.Text = format(val(Text8.Text) + val(Text3.Text), "#0.00")
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
' Command1_Click
|
||||
' Delete from Invoice
|
||||
'
|
||||
Private Sub Command2_Click()
|
||||
If ListView1.SelectedItem Is Nothing Then Exit Sub
|
||||
|
||||
Text8 = format(val(Text8.Text) - val(ListView1.SelectedItem.SubItems(1)), "#0.00")
|
||||
ListView1.ListItems.Remove ListView1.SelectedItem.index
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
' Form_QueryUnload
|
||||
'
|
||||
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
|
||||
fLoading = True
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
'- MouseDown
|
||||
'
|
||||
Private Sub largepict_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
|
||||
|
||||
If m_binit = False Then Exit Sub
|
||||
|
||||
Dim b As Boolean
|
||||
Dim mb As CD3DMesh
|
||||
Dim r As Integer, c As Integer
|
||||
Dim f As CD3DFrame
|
||||
Dim p As CD3DFrame
|
||||
Dim strName As String
|
||||
Dim pick As CD3DPick
|
||||
Dim n As Long
|
||||
|
||||
'- save our current position
|
||||
m_bMouseDown = True
|
||||
m_lastX = x
|
||||
m_lastY = y
|
||||
|
||||
|
||||
If Button = 1 Then
|
||||
|
||||
'Get the frame under the the mouse
|
||||
Set pick = New CD3DPick
|
||||
If Not pick.ViewportPick(m_scene, x, y) Then Exit Sub
|
||||
|
||||
|
||||
n = pick.FindNearest()
|
||||
If n < 0 Then Exit Sub
|
||||
Set f = pick.GetFrame(n)
|
||||
|
||||
|
||||
'Get its id and call SelectPart
|
||||
'to fill in our text boxes
|
||||
strName = f.ObjectName
|
||||
strName = Right$(strName, Len(strName) - 1)
|
||||
'The words V6 and Chevy are part of the manifold cover.
|
||||
If strName = "words" Or strName = "v6" Then strName = "manifoldt"
|
||||
|
||||
SelectPart strName, f.ObjectName
|
||||
SelectTreeview strName
|
||||
DoEvents
|
||||
|
||||
End If
|
||||
|
||||
RenderScene
|
||||
|
||||
End Sub
|
||||
|
||||
'- MOUSE MOVE
|
||||
'
|
||||
Private Sub largepict_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
|
||||
|
||||
'- dont do anything unless the mouse is down
|
||||
If m_bMouseDown = False Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'- Rotate the object
|
||||
RotateTrackBall CInt(x), CInt(y)
|
||||
|
||||
'- Rerender
|
||||
RenderScene
|
||||
|
||||
End Sub
|
||||
|
||||
'- MOUSE UP
|
||||
' reset the mouse state
|
||||
'
|
||||
Private Sub largepict_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
|
||||
m_bMouseDown = False
|
||||
End Sub
|
||||
|
||||
'- largepict_Paint UP
|
||||
'
|
||||
Private Sub largepict_Paint()
|
||||
If Not m_binit Then Exit Sub
|
||||
RenderScene
|
||||
End Sub
|
||||
|
||||
|
||||
'- MENU_ABOUT_Click
|
||||
'
|
||||
Private Sub MENU_ABOUT_Click()
|
||||
MsgBox "The model used by this sample, engine1.x, is provided courtesy of Viewpoint" + Chr(10) + Chr(13) + _
|
||||
"Digital, Inc. (www.viewpoint.com). It is provided for use with this sample" + Chr(10) + Chr(13) + _
|
||||
"only and cannot be distributed with any application without prior written" + Chr(10) + Chr(13) + _
|
||||
"consent. V6 Engine Model copyright 1999 Viewpoint Digital, Inc.."
|
||||
End Sub
|
||||
|
||||
' MENU_EXIT_Click
|
||||
'
|
||||
Private Sub MENU_EXIT_Click()
|
||||
End
|
||||
End Sub
|
||||
|
||||
|
||||
' TreeView1_Expand
|
||||
'
|
||||
Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
|
||||
Dim i As Long
|
||||
|
||||
Static b As Boolean
|
||||
|
||||
If b Then Exit Sub
|
||||
b = True
|
||||
|
||||
'See if they are asking for a new assembly alltogether
|
||||
If Mid$(Node.Tag, 1, 8) = "ASSMBLY:" Then
|
||||
m_bInLoad = True
|
||||
i = LoadAssembly(Node.Tag)
|
||||
If i = 0 Then
|
||||
MsgBox "Assembly not available at this time- try a different Engine"
|
||||
b = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
b = False
|
||||
|
||||
End Sub
|
||||
|
||||
'- TreeView1_NodeClick
|
||||
'
|
||||
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
|
||||
|
||||
Static b As Boolean
|
||||
If b Then Exit Sub
|
||||
b = True
|
||||
|
||||
Dim o As CD3DFrame
|
||||
Dim i As Long
|
||||
|
||||
If Node.Tag = "" Then
|
||||
b = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'Fill in the text boxes
|
||||
SelectPart Node.Tag, "_" & Node.Tag
|
||||
DoEvents
|
||||
|
||||
'Render
|
||||
RenderScene
|
||||
DoEvents
|
||||
|
||||
b = False
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
'- FillTreeViewControl
|
||||
Sub FillTreeViewControl()
|
||||
TreeView1.Nodes.Clear
|
||||
|
||||
Dim sPartID As String
|
||||
Dim sDesc As String
|
||||
|
||||
|
||||
'A non-demo application would build the tree view
|
||||
'from the database and dynamically load in new
|
||||
'information into the treeview
|
||||
|
||||
Dim n As Node
|
||||
Call TreeView1.Nodes.Add(, , "ASSEMBLIES", "Assemblies - [click here to start]")
|
||||
|
||||
Set n = TreeView1.Nodes.Add("ASSEMBLIES", tvwChild, "ENG V6 1996", "V6 4 Liter 1996 - [click here]")
|
||||
n.Tag = "ASSMBLY:ENG V6 1996"
|
||||
n.Selected = True
|
||||
|
||||
TreeView1.Nodes.Add("ASSEMBLIES", tvwChild, "ENG V8 1998", "V8 6 Liter 1998 - [not available]").Tag = ""
|
||||
TreeView1.Nodes.Add("ASSEMBLIES", tvwChild, "OTHERENG", "Other Assemblies not available").Tag = ""
|
||||
|
||||
m_data.MoveTop
|
||||
Do While m_data.IsEOF() = False
|
||||
sPartID = m_data.ModelPart
|
||||
sDesc = m_data.Description
|
||||
TreeView1.Nodes.Add("ENG V6 1996", tvwChild, sPartID, sDesc).Tag = sPartID
|
||||
m_data.MoveNext
|
||||
Loop
|
||||
|
||||
End Sub
|
||||
|
||||
Sub SelectTreeview(sname As String)
|
||||
On Local Error Resume Next
|
||||
TreeView1.Nodes(sname).Selected = True
|
||||
DoEvents
|
||||
End Sub
|
||||
|
||||
|
||||
'- RenderScene
|
||||
'
|
||||
Sub RenderScene()
|
||||
Dim hr As Long
|
||||
|
||||
If m_scene Is Nothing Then Exit Sub
|
||||
|
||||
|
||||
|
||||
'See what state the device is in.
|
||||
hr = g_dev.TestCooperativeLevel
|
||||
If hr = D3DERR_DEVICENOTRESET Then
|
||||
g_dev.Reset g_d3dpp
|
||||
|
||||
'reset our state
|
||||
g_lWindowWidth = largepict.ScaleWidth
|
||||
g_lWindowHeight = largepict.ScaleHeight
|
||||
D3DUtil.D3DUtil_SetupDefaultScene
|
||||
DoEvents
|
||||
ElseIf hr <> 0 Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
D3DXMatrixLookAtLH g_viewMatrix, vec3(0, 0, -1), vec3(0, 0, 0), vec3(0, 1, 0)
|
||||
g_dev.SetTransform D3DTS_VIEW, g_viewMatrix
|
||||
|
||||
D3DUtil_ClearAll m_backcolor
|
||||
g_dev.BeginScene
|
||||
m_scene.Render g_dev
|
||||
g_dev.EndScene
|
||||
D3DUtil_PresentAll 0
|
||||
|
||||
End Sub
|
||||
Binary file not shown.
@@ -0,0 +1,56 @@
|
||||
VERSION 5.00
|
||||
Begin VB.Form Form2
|
||||
BorderStyle = 0 'None
|
||||
Caption = "Form2"
|
||||
ClientHeight = 1080
|
||||
ClientLeft = 0
|
||||
ClientTop = 0
|
||||
ClientWidth = 7575
|
||||
LinkTopic = "Form2"
|
||||
MaxButton = 0 'False
|
||||
MinButton = 0 'False
|
||||
ScaleHeight = 1080
|
||||
ScaleWidth = 7575
|
||||
ShowInTaskbar = 0 'False
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin VB.PictureBox Picture1
|
||||
Height = 855
|
||||
Left = 120
|
||||
ScaleHeight = 795
|
||||
ScaleWidth = 7275
|
||||
TabIndex = 0
|
||||
Top = 120
|
||||
Width = 7335
|
||||
Begin VB.Label Label1
|
||||
Caption = "Loading Assembly Please Wait"
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 24
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 555
|
||||
Left = 240
|
||||
TabIndex = 1
|
||||
Top = 120
|
||||
Width = 6615
|
||||
End
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "Form2"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
'
|
||||
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
||||
'
|
||||
' File: AutoLoad.frm
|
||||
' Content: Autoparts loading dialog
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
@@ -0,0 +1,45 @@
|
||||
Type=Exe
|
||||
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation
|
||||
Reference=*\G{E1211242-8E94-11D1-8808-00C04FC2C603}#1.0#0#dx8vb.dll#DirectX 8 for Visual Basic Type Library
|
||||
Object={86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX
|
||||
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
|
||||
Form=auto.frm
|
||||
Form=autoload.frm
|
||||
Class=Data; data.cls
|
||||
Class=CD3DFrame; ..\..\common\D3DFrame.cls
|
||||
Class=CD3DAnimation; ..\..\common\D3DAnimation.cls
|
||||
Class=CD3DMesh; ..\..\common\D3DMesh.cls
|
||||
Class=CD3DPick; ..\..\common\D3DPick.cls
|
||||
Module=D3DUtil; ..\..\common\D3DUtil.bas
|
||||
Module=D3DInit; ..\..\common\D3DInit.bas
|
||||
Module=MediaDir; ..\..\common\media.bas
|
||||
Startup="Form1"
|
||||
ExeName32="vb_autoparts.exe"
|
||||
Command32=""
|
||||
Name="Project1"
|
||||
HelpContextID="0"
|
||||
CompatibleMode="0"
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
RevisionVer=0
|
||||
AutoIncrementVer=0
|
||||
ServerSupportFiles=0
|
||||
VersionCompanyName="Microsoft Corp"
|
||||
CompilationType=0
|
||||
OptimizationType=0
|
||||
FavorPentiumPro(tm)=0
|
||||
CodeViewDebugInfo=0
|
||||
NoAliasing=0
|
||||
BoundsCheck=0
|
||||
OverflowCheck=0
|
||||
FlPointCheck=0
|
||||
FDIVCheck=0
|
||||
UnroundedFP=0
|
||||
StartMode=0
|
||||
Unattended=0
|
||||
Retained=0
|
||||
ThreadPerObject=0
|
||||
MaxNumberOfThreads=1
|
||||
|
||||
[MS Transaction Server]
|
||||
AutoRefresh=1
|
||||
@@ -0,0 +1,176 @@
|
||||
VERSION 1.0 CLASS
|
||||
BEGIN
|
||||
MultiUse = -1 'True
|
||||
END
|
||||
Attribute VB_Name = "Data"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = True
|
||||
Attribute VB_PredeclaredId = False
|
||||
Attribute VB_Exposed = False
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
'
|
||||
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
||||
'
|
||||
' File: data.cls
|
||||
' Content: DATA MIDDLEWARE
|
||||
' replace with your favorite
|
||||
' database code
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
|
||||
Private Type rec
|
||||
AssemblyId As Long
|
||||
ModelPart As String
|
||||
PartID As String
|
||||
Description As String
|
||||
Price As Currency
|
||||
CompatibleParts As String
|
||||
Stock As String
|
||||
PartMake As String
|
||||
End Type
|
||||
|
||||
Dim rs() As rec
|
||||
Dim index As Integer
|
||||
Dim lastindex As Integer
|
||||
Dim maxsize As Integer
|
||||
|
||||
Public Function MoveTop()
|
||||
index = 0
|
||||
MoveTop = True
|
||||
End Function
|
||||
|
||||
Public Function IsEOF()
|
||||
If index = -1 Then IsEOF = True
|
||||
End Function
|
||||
Public Function MoveNext()
|
||||
If index = lastindex Then
|
||||
index = -1
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
index = index + 1
|
||||
MoveNext = True
|
||||
End Function
|
||||
|
||||
Public Property Get ModelPart() As String
|
||||
ModelPart = rs(index).ModelPart
|
||||
End Property
|
||||
|
||||
Public Property Get PartID() As String
|
||||
PartID = rs(index).PartID
|
||||
End Property
|
||||
|
||||
Public Property Get Description() As String
|
||||
Description = rs(index).Description
|
||||
End Property
|
||||
|
||||
Public Property Get Price() As Currency
|
||||
Price = rs(index).Price
|
||||
End Property
|
||||
|
||||
Public Property Get CompatibleParts() As String
|
||||
CompatibleParts = rs(index).CompatibleParts
|
||||
End Property
|
||||
|
||||
Public Property Get Stock() As String
|
||||
Stock = rs(index).Stock
|
||||
End Property
|
||||
|
||||
Public Property Get PartMake() As String
|
||||
PartMake = rs(index).PartMake
|
||||
End Property
|
||||
|
||||
Public Function MoveToModelPartRecord(sname As String) As Boolean
|
||||
|
||||
For index = 0 To lastindex
|
||||
If (UCase(rs(index).ModelPart) = UCase(sname)) Then
|
||||
MoveToModelPartRecord = True
|
||||
Exit Function
|
||||
End If
|
||||
Next
|
||||
MoveToModelPartRecord = False
|
||||
End Function
|
||||
|
||||
Function InitData(sFile As String) As Boolean
|
||||
Dim strData As String
|
||||
On Local Error GoTo errOut
|
||||
|
||||
ReDim rs(100)
|
||||
maxsize = 100
|
||||
|
||||
Dim fl As Long
|
||||
fl = FreeFile
|
||||
index = 0
|
||||
Open sFile For Input As #fl
|
||||
Line Input #fl, strData
|
||||
Do While Not EOF(fl)
|
||||
Line Input #fl, strData
|
||||
|
||||
|
||||
Dim j As Long, q As Long
|
||||
Dim r As rec
|
||||
|
||||
'Assembly ID - what assembly does this belong to
|
||||
j = 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.AssemblyId = Mid$(strData, 1, q - 1)
|
||||
|
||||
'Unique ID for all parts
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.PartID = Mid$(strData, j, q - j)
|
||||
|
||||
'Model Part .. whats the name of the part in the xfile
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.ModelPart = Mid$(strData, j + 1, q - 2 - j)
|
||||
|
||||
'Part Price
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.Price =val(Mid$(strData, j + 1, q - 1 - j))
|
||||
|
||||
'Description
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.Description = Mid$(strData, j + 1, q - 2 - j)
|
||||
|
||||
'Stock
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.Stock = Mid$(strData, j, q - j)
|
||||
|
||||
'PartMake
|
||||
j = q + 1
|
||||
q = InStr(j, strData, Chr(9))
|
||||
r.PartMake = Mid$(strData, j + 1, q - j - 2)
|
||||
|
||||
'CompatibleParts
|
||||
j = q + 1
|
||||
r.CompatibleParts = Mid$(strData, j + 1)
|
||||
q = Len(r.CompatibleParts) - 1
|
||||
r.CompatibleParts = Mid$(r.CompatibleParts, 1, q)
|
||||
|
||||
If index > maxsize Then
|
||||
maxsize = maxsize + 100
|
||||
ReDim Preserve rs(maxsize)
|
||||
End If
|
||||
|
||||
rs(index) = r
|
||||
lastindex = index
|
||||
index = index + 1
|
||||
|
||||
Loop
|
||||
InitData = True
|
||||
Exit Function
|
||||
errOut:
|
||||
InitData = False
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Sample Name: AutoParts Sample
|
||||
//
|
||||
// Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
The AutoParts sample illustrates the use of Picking against a 3D database.
|
||||
|
||||
|
||||
Path
|
||||
====
|
||||
Source: DXSDF\Samples\Multimedia\VBSamples\Direct3D\AutoParts
|
||||
|
||||
Executable: DXSDF\Samples\Multimedia\VBSamples\Direct3D\Bin
|
||||
|
||||
|
||||
User's Guide
|
||||
============
|
||||
click where it says "click here" in the Tree view to the left to load the engine model.
|
||||
The model can be rotated by holding the left mouse button down and dragging.
|
||||
When a part has been clicked on, it is described in the lower left hand corner.
|
||||
The Add and Remove from Invoice button manage the Invoice list but the Order button has
|
||||
no function.
|
||||
|
||||
|
||||
|
||||
Programming Notes
|
||||
=================
|
||||
Each object in the Engine model is named. These names are unique and can be used to cross
|
||||
reference a database (a custom text database in this example for the sake of not requiring
|
||||
the installation of MDAC). From that database more detailed information is gahtered on the
|
||||
part such as price and part number.
|
||||
|
||||
This sample makes use of common DirectX code (consisting of helper functions,
|
||||
etc.) that is shared with other samples on the DirectX SDK. All common
|
||||
classes and modules can be found in the following directory:
|
||||
DXSDF\Samples\Multimedia\VBSamples\Common
|
||||
|
||||
Reference in New Issue
Block a user