Initial commit.

This commit is contained in:
= 2025-01-09 17:54:44 -05:00
parent b8acde3042
commit c26a06c530
33 changed files with 123204 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build/

27
Data.qrc Normal file
View File

@ -0,0 +1,27 @@
<RCC>
<qresource prefix="/obj">
<file>data/obj/defaultactor_LOD0.bin</file>
<file>data/obj/defaultactor_LOD0.cast</file>
<file>data/obj/defaultactor_LOD0.gltf</file>
<file>data/obj/defaultactor_LOD0.ma</file>
<file>data/obj/defaultactor_LOD0.mesh.ascii</file>
<file>data/obj/defaultactor_LOD0.obj</file>
<file>data/obj/defaultactor_LOD0.semodel</file>
<file>data/obj/defaultactor_LOD0.smd</file>
<file>data/obj/defaultactor_LOD0.XMODEL_BIN</file>
<file>data/obj/defaultactor_LOD0.XMODEL_EXPORT</file>
<file>data/obj/defaultactor_LOD0_BIND.mel</file>
<file>data/obj/defaultactor_LOD0_cosmetics.mel</file>
<file>data/obj/mtl_body_default_character.mtl</file>
<file>data/obj/mtl_body_default_character_images.txt</file>
<file>data/obj/diffusemap.png</file>
<file>data/obj/normalmap.png</file>
</qresource>
<qresource prefix="/d3dbsp">
<file>data/d3dbsp/asset_viewer.d3dbsp</file>
<file>data/d3dbsp/barebones.d3dbsp</file>
</qresource>
<qresource prefix="/dlls">
<file>data/dlls/dxcompiler.dll</file>
</qresource>
</RCC>

34
FastFile_WaW.pro Normal file
View File

@ -0,0 +1,34 @@
QT += core gui 3dcore 3drender 3dinput 3dextras
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
INCLUDEPATH += "C:/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0/um"
LIBS += -L"C:/Program Files (x86)/Windows Kits/10/Lib/10.0.26100.0/um/x64" \
-ldxcompiler
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
enums.h \
mainwindow.h \
structs.h \
utils.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
Data.qrc

271
FastFile_WaW.pro.user Normal file
View File

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 15.0.0, 2025-01-08T01:31:51. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{40d992cb-ac11-4385-a22b-016f1b4251a7}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.LineEndingBehavior">0</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">16</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.8.1 MSVC2022 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.8.1 MSVC2022 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.681.win64_msvc2022_64_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\njohnson\Projects\FastFile_WaW\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/njohnson/Projects/FastFile_WaW/build/Desktop_Qt_6_8_1_MSVC2022_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\njohnson\Projects\FastFile_WaW\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/njohnson/Projects/FastFile_WaW/build/Desktop_Qt_6_8_1_MSVC2022_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\njohnson\Projects\FastFile_WaW\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/njohnson/Projects/FastFile_WaW/build/Desktop_Qt_6_8_1_MSVC2022_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/njohnson/Projects/FastFile_WaW/FastFile_WaW.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/njohnson/Projects/FastFile_WaW/build/Desktop_Qt_6_8_1_MSVC2022_64bit-Release</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

Binary file not shown.

Binary file not shown.

BIN
data/dlls/dxcompiler.dll Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

30509
data/obj/defaultactor_LOD0.obj Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

12382
data/obj/defaultactor_LOD0.smd Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

BIN
data/obj/diffusemap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,7 @@
newmtl mtl_body_default_character
illum 4
Kd 0.00 0.00 0.00
Ka 0.00 0.00 0.00
Ks 0.50 0.50 0.50
map_Kd _images\\mtl_body_default_character\\defaultcolmap.png
map_bump _images\\mtl_body_default_character\\$identitynormalmap.png

View File

@ -0,0 +1,3 @@
semantic,image_name
normalMap,$identitynormalmap
colorMap,defaultcolmap

BIN
data/obj/normalmap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

101
enums.h Normal file
View File

@ -0,0 +1,101 @@
#ifndef ENUMS_H
#define ENUMS_H
enum LUMP_TYPE
{
LUMP_MATERIALS = 0x0,
LUMP_LIGHTBYTES = 0x1,
LUMP_LIGHTGRIDENTRIES = 0x2,
LUMP_LIGHTGRIDCOLORS = 0x3,
LUMP_PLANES = 0x4,
LUMP_BRUSHSIDES = 0x5,
LUMP_BRUSHSIDEEDGECOUNTS = 0x6,
LUMP_BRUSHEDGES = 0x7,
LUMP_BRUSHES = 0x8,
LUMP_TRIANGLES = 0x9,
LUMP_DRAWVERTS = 0xA,
LUMP_DRAWINDICES = 0xB,
LUMP_CULLGROUPS = 0xC,
LUMP_CULLGROUPINDICES = 0xD,
LUMP_OBSOLETE_1 = 0xE,
LUMP_OBSOLETE_2 = 0xF,
LUMP_OBSOLETE_3 = 0x10,
LUMP_OBSOLETE_4 = 0x11,
LUMP_OBSOLETE_5 = 0x12,
LUMP_PORTALVERTS = 0x13,
LUMP_OBSOLETE_6 = 0x14,
LUMP_UINDS = 0x15,
LUMP_BRUSHVERTSCOUNTS = 0x16,
LUMP_BRUSHVERTS = 0x17,
LUMP_AABBTREES = 0x18,
LUMP_CELLS = 0x19,
LUMP_PORTALS = 0x1A,
LUMP_NODES = 0x1B,
LUMP_LEAFS = 0x1C,
LUMP_LEAFBRUSHES = 0x1D,
LUMP_LEAFSURFACES = 0x1E,
LUMP_COLLISIONVERTS = 0x1F,
LUMP_COLLISIONTRIS = 0x20,
LUMP_COLLISIONEDGEWALKABLE = 0x21,
LUMP_COLLISIONBORDERS = 0x22,
LUMP_COLLISIONPARTITIONS = 0x23,
LUMP_COLLISIONAABBS = 0x24,
LUMP_MODELS = 0x25,
LUMP_VISIBILITY = 0x26,
LUMP_ENTITIES = 0x27,
LUMP_PATHCONNECTIONS = 0x28,
LUMP_REFLECTION_PROBES = 0x29,
LUMP_VERTEX_LAYER_DATA = 0x2A,
LUMP_PRIMARY_LIGHTS = 0x2B,
LUMP_LIGHTGRIDHEADER = 0x2C,
LUMP_LIGHTGRIDROWS = 0x2D,
LUMP_OBSOLETE_10 = 0x2E,
//Obsolete in BO1/////////////////
LUMP_UNLAYERED_TRIANGLES = 0x2F,
LUMP_UNLAYERED_DRAWVERTS = 0x30,
LUMP_UNLAYERED_DRAWINDICES = 0x31,
LUMP_UNLAYERED_CULLGROUPS = 0x32,
LUMP_UNLAYERED_AABBTREES = 0x33,
//////////////////////////////////
LUMP_WATERHEADER = 0x34,
LUMP_WATERCELLS = 0x35,
LUMP_WATERCELLDATA = 0x36,
LUMP_BURNABLEHEADER = 0x37,
LUMP_BURNABLECELLS = 0x38,
LUMP_BURNABLECELLDATA = 0x39,
LUMP_SIMPLELIGHTMAPBYTES = 0x3A,
LUMP_LODCHAINS = 0x3B,
LUMP_LODINFOS = 0x3C,
LUMP_LODSURFACES = 0x3D,
LUMP_LIGHTREGIONS = 0x3E,
LUMP_LIGHTREGION_HULLS = 0x3F,
LUMP_LIGHTREGION_AXES = 0x40,
LUMP_WIILIGHTGRID = 0x41,
LUMP_LIGHTGRID2D_LIGHTS = 0x42,
LUMP_LIGHTGRID2D_INDICES = 0x43,
LUMP_LIGHTGRID2D_POINTS = 0x44,
LUMP_LIGHTGRID2D_CELLS = 0x45,
LUMP_LIGHT_CORONAS = 0x46,
//BO Specific/////////////////////////
LUMP_SHADOWMAP_VOLUMES = 0x47,
LUMP_SHADOWMAP_VOLUME_PLANES = 0x48,
LUMP_EXPOSURE_VOLUMES = 0x49,
LUMP_EXPOSURE_VOLUME_PLANES = 0x4A,
LUMP_OCCLUDERS = 0x4B,
LUMP_OUTDOORBOUNDS = 0x4C,
LUMP_HERO_ONLY_LIGHTS = 0x4D,
//////////////////////////////////////
INFO_LUMP_TYPE_COUNT
};
enum BSPVERSION_TYPE
{
BSPVERSION_COD_WAW = 31,
BSPVERSION_COD_BO = 45
};
#endif // ENUMS_H

11
main.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

1228
mainwindow.cpp Normal file

File diff suppressed because it is too large Load Diff

151
mainwindow.h Normal file
View File

@ -0,0 +1,151 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "enums.h"
#include "structs.h"
#include "utils.h"
#include <QMainWindow>
#include <QFileDialog>
#include <QStandardPaths>
#include <QMessageBox>
#include <QDebug>
#include <QTableWidgetItem>
#include <QTreeWidgetItem>
#include <Qt3DCore/QEntity>
#include <Qt3DRender/QCamera>
#include <Qt3DRender/QCameraLens>
#include <Qt3DCore/QTransform>
#include <Qt3DCore/QAspectEngine>
#include <Qt3DInput/QInputAspect>
#include <Qt3DRender/QRenderAspect>
#include <Qt3DRender/QGeometryRenderer>
#include <Qt3DExtras/QForwardRenderer>
#include <Qt3DExtras/QPhongMaterial>
#include <Qt3DExtras/QSphereMesh>
#include <Qt3DExtras/QTorusMesh>
#include <Qt3DRender/qcamera.h>
#include <Qt3DCore/qentity.h>
#include <Qt3DRender/qcameralens.h>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QCommandLinkButton>
#include <QtGui/QScreen>
#include <Qt3DRender/qmesh.h>
#include <Qt3DRender/qtechnique.h>
#include <Qt3DRender/qmaterial.h>
#include <Qt3DRender/qeffect.h>
#include <Qt3DRender/qtexture.h>
#include <Qt3DRender/qrenderpass.h>
#include <Qt3DRender/qsceneloader.h>
#include <Qt3DRender/qpointlight.h>
#include <Qt3DCore/qtransform.h>
#include <Qt3DCore/qaspectengine.h>
#include <Qt3DRender/qrenderaspect.h>
#include <Qt3DExtras/qforwardrenderer.h>
#include <Qt3DExtras/qt3dwindow.h>
#include <Qt3DExtras/qfirstpersoncameracontroller.h>
#include <Qt3DExtras/QNormalDiffuseMapMaterial>
#include <windows.h>
#include <dxcapi.h>
#include <atlbase.h>
#include <atlcom.h>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void Reset();
QByteArray DecompressZLIB(QByteArray compressedData);
private slots:
void on_pushButton_FastFile_clicked();
void on_pushButton_FastFile_2_clicked();
QFile *OpenFastFile();
QFile *OpenZoneFile();
void ParseFFHeader(QFile *aFastFilePtr);
void ParseFFCompany(QDataStream *aFastFileStream);
void ParseFFFileType(QDataStream *afastFileStream);
void ParseFFSignage(QDataStream *afastFileStream);
void ParseFFMagic(QDataStream *afastFileStream);
void ParseFFVersion(QDataStream *afastFileStream);
void ParseZoneHeader(QDataStream *aZoneFileStream);
void ParseZoneSize(QDataStream *aZoneFileStream);
void ParseZoneUnknownsA(QDataStream *aZoneFileStream);
void ParseZoneUnknownsB(QDataStream *aZoneFileStream);
void ParseZoneUnknownsC(QDataStream *aZoneFileStream);
void ParseZoneTagCount(QDataStream *aZoneFileStream);
void ParseZoneRecordCount(QDataStream *aZoneFileStream);
void ParseZoneTags(QDataStream *aZoneFileStream);
void ParseZoneIndex(QDataStream *aZoneFileStream);
void ParseAsset_LocalString(QDataStream *aZoneFileStream);
void ParseAsset_RawFile(QDataStream *aZoneFileStream);
void ParseAsset_PhysPreset(QDataStream *aZoneFileStream);
void ParseAsset_XModel(QDataStream *aZoneFileStream);
void ParseAsset_Material(QDataStream *aZoneFileStream);
void ParseAsset_PixelShader(QDataStream *aZoneFileStream);
void ParseAsset_TechSet(QDataStream *aZoneFileStream);
void ParseAsset_Image(QDataStream *aZoneFileStream);
void ParseAsset_LoadedSound(QDataStream *aZoneFileStream);
void ParseAsset_ColMapMP(QDataStream *aZoneFileStream);
void ParseAsset_GameMapSP(QDataStream *aZoneFileStream);
void ParseAsset_GameMapMP(QDataStream *aZoneFileStream);
void ParseAsset_LightDef(QDataStream *aZoneFileStream);
void ParseAsset_UIMap(QDataStream *aZoneFileStream);
void ParseAsset_SNDDriverGlobals(QDataStream *aZoneFileStream);
void ParseAsset_AIType(QDataStream *aZoneFileStream);
void ParseAsset_FX(QDataStream *aZoneFileStream);
void ParseAsset_XAnim(QDataStream *aZoneFileStream);
void ParseAsset_StringTable(QDataStream *aZoneFileStream);
void ParseAsset_MenuFile(QDataStream *aZoneFileStream);
void ParseAsset_Weapon(QDataStream *aZoneFileStream);
void ParseAsset_D3DBSP(QDataStream *aZoneFileStream);
int LoadFile_D3DBSP(const QString aFilePath);
void ScriptSelected();
void StrTableSelected(QString aStrTableName);
private:
Ui::MainWindow *ui;
QMap<QString, int> mTypeMap;
QStringList mTypeOrder;
quint32 mTagCount;
quint32 mRecordCount;
QMap<QString, QString> mRawFileMap;
QMap<QString, QTreeWidgetItem*> mTreeMap;
QMap<QString, QVector<QPair<QString, QString>>> mStrTableMap;
quint32 mBSPVersion;
quint32 mDiskLumpCount;
QVector<quint32> mDiskLumpOrder;
QMap<quint32, Lump> mLumps;
};
#endif // MAINWINDOW_H

1079
mainwindow.ui Normal file

File diff suppressed because it is too large Load Diff

19
structs.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef STRUCTS_H
#define STRUCTS_H
#include <QByteArray>
// Define Lump Structure
struct Lump {
QByteArray content;
quint32 size = 0;
bool isEmpty = true;
};
// Lump Index Entry Structure
struct LumpIndexEntry {
quint32 type;
quint32 length;
};
#endif // STRUCTS_H

169
utils.h Normal file
View File

@ -0,0 +1,169 @@
#ifndef UTILS_H
#define UTILS_H
#include "enums.h"
#include <QString>
#include <QtZlib/zlib.h>
class Utils {
public:
/*
AssetTypeToString()
Convert asset type string to asset desc string
*/
static QString AssetTypeToString(const QString aAssetType) {
const QString cleanedType = aAssetType.toUpper();
if (cleanedType == "17000000") { // localized string PARTIALLY VERIFIED
return "LOCAL STRING";
} else if (cleanedType == "20000000") { // raw_file PARTIALLY VERIFIED
return "RAW FILE";
} else if (cleanedType == "1A000000") { // fx PARTIALLY VERIFIED
return "EFFECT";
} else if (cleanedType == "09000000") { // loaded_sound PARTIALLY VERIFIED
return "SOUND";
} else if (cleanedType == "04000000") { // x_anim PARTIALLY VERIFIED
return "ANIMATION";
} else if (cleanedType == "0C000000") { // collision_map PARTIALLY VERIFIED
return "COLLISION MAP";
} else if (cleanedType == "21000000") { // string_table PARTIALLY VERIFIED
return "STRING TABLE";
} else if (cleanedType == "15000000") { // menu_file PARTIALLY VERIFIED
return "MENU";
} else if (cleanedType == "07000000") { // tech set PARTIALLY VERIFIED
return "TECH SET";
} else if (cleanedType == "18000000") { // weapon PARTIALLY VERIFIED
return "WEAPON";
} else if (cleanedType == "11000000") { // d3dbsp dump PARTIALLY VERIFIED
return "D3DBSP DUMP";
} else if (cleanedType == "12000000") { // light_def PARTIALLY VERIFIED
return "LIGHT DEF";
} else if (cleanedType == "14000000") { // font PARTIALLY VERIFIED
return "FONT";
} else if (cleanedType == "05000000") { // xmodel PARTIALLY VERIFIED
return "MODEL";
} else if (cleanedType == "0D000000") { // shader PARTIALLY VERIFIED
return "SHADER";
}
return "UNKNOWN";
}
/*
LumpTypeToString()
Convert BSP lump type to desc string
*/
static QString LumpTypeToString(LUMP_TYPE aLumpType) {
switch (aLumpType) {
case LUMP_MATERIALS: return "LUMP_MATERIALS";
case LUMP_LIGHTBYTES: return "LUMP_LIGHTBYTES";
case LUMP_LIGHTGRIDENTRIES: return "LUMP_LIGHTGRIDENTRIES";
case LUMP_LIGHTGRIDCOLORS: return "LUMP_LIGHTGRIDCOLORS";
case LUMP_PLANES: return "LUMP_PLANES";
case LUMP_BRUSHSIDES: return "LUMP_BRUSHSIDES";
case LUMP_BRUSHSIDEEDGECOUNTS: return "LUMP_BRUSHSIDEEDGECOUNTS";
case LUMP_BRUSHEDGES: return "LUMP_BRUSHEDGES";
case LUMP_BRUSHES: return "LUMP_BRUSHES";
case LUMP_TRIANGLES: return "LUMP_TRIANGLES";
case LUMP_DRAWVERTS: return "LUMP_DRAWVERTS";
case LUMP_DRAWINDICES: return "LUMP_DRAWINDICES";
case LUMP_CULLGROUPS: return "LUMP_CULLGROUPS";
case LUMP_CULLGROUPINDICES: return "LUMP_CULLGROUPINDICES";
case LUMP_OBSOLETE_1: return "LUMP_OBSOLETE_1";
case LUMP_OBSOLETE_2: return "LUMP_OBSOLETE_2";
case LUMP_OBSOLETE_3: return "LUMP_OBSOLETE_3";
case LUMP_OBSOLETE_4: return "LUMP_OBSOLETE_4";
case LUMP_OBSOLETE_5: return "LUMP_OBSOLETE_5";
case LUMP_PORTALVERTS: return "LUMP_PORTALVERTS";
case LUMP_OBSOLETE_6: return "LUMP_OBSOLETE_6";
case LUMP_UINDS: return "LUMP_UINDS";
case LUMP_BRUSHVERTSCOUNTS: return "LUMP_BRUSHVERTSCOUNTS";
case LUMP_BRUSHVERTS: return "LUMP_BRUSHVERTS";
case LUMP_AABBTREES: return "LUMP_AABBTREES";
case LUMP_CELLS: return "LUMP_CELLS";
case LUMP_PORTALS: return "LUMP_PORTALS";
case LUMP_NODES: return "LUMP_NODES";
case LUMP_LEAFS: return "LUMP_LEAFS";
case LUMP_LEAFBRUSHES: return "LUMP_LEAFBRUSHES";
case LUMP_LEAFSURFACES: return "LUMP_LEAFSURFACES";
case LUMP_COLLISIONVERTS: return "LUMP_COLLISIONVERTS";
case LUMP_COLLISIONTRIS: return "LUMP_COLLISIONTRIS";
case LUMP_COLLISIONEDGEWALKABLE: return "LUMP_COLLISIONEDGEWALKABLE";
case LUMP_COLLISIONBORDERS: return "LUMP_COLLISIONBORDERS";
case LUMP_COLLISIONPARTITIONS: return "LUMP_COLLISIONPARTITIONS";
case LUMP_COLLISIONAABBS: return "LUMP_COLLISIONAABBS";
case LUMP_MODELS: return "LUMP_MODELS";
case LUMP_VISIBILITY: return "LUMP_VISIBILITY";
case LUMP_ENTITIES: return "LUMP_ENTITIES";
case LUMP_PATHCONNECTIONS: return "LUMP_PATHCONNECTIONS";
case LUMP_REFLECTION_PROBES: return "LUMP_REFLECTION_PROBES";
case LUMP_VERTEX_LAYER_DATA: return "LUMP_VERTEX_LAYER_DATA";
case LUMP_PRIMARY_LIGHTS: return "LUMP_PRIMARY_LIGHTS";
case LUMP_LIGHTGRIDHEADER: return "LUMP_LIGHTGRIDHEADER";
case LUMP_LIGHTGRIDROWS: return "LUMP_LIGHTGRIDROWS";
case LUMP_OBSOLETE_10: return "LUMP_OBSOLETE_10";
case LUMP_UNLAYERED_TRIANGLES: return "LUMP_UNLAYERED_TRIANGLES";
case LUMP_UNLAYERED_DRAWVERTS: return "LUMP_UNLAYERED_DRAWVERTS";
case LUMP_UNLAYERED_DRAWINDICES: return "LUMP_UNLAYERED_DRAWINDICES";
case LUMP_UNLAYERED_CULLGROUPS: return "LUMP_UNLAYERED_CULLGROUPS";
case LUMP_UNLAYERED_AABBTREES: return "LUMP_UNLAYERED_AABBTREES";
case LUMP_WATERHEADER: return "LUMP_WATERHEADER";
case LUMP_WATERCELLS: return "LUMP_WATERCELLS";
case LUMP_WATERCELLDATA: return "LUMP_WATERCELLDATA";
case LUMP_BURNABLEHEADER: return "LUMP_BURNABLEHEADER";
case LUMP_BURNABLECELLS: return "LUMP_BURNABLECELLS";
case LUMP_BURNABLECELLDATA: return "LUMP_BURNABLECELLDATA";
case LUMP_SIMPLELIGHTMAPBYTES: return "LUMP_SIMPLELIGHTMAPBYTES";
case LUMP_LODCHAINS: return "LUMP_LODCHAINS";
case LUMP_LODINFOS: return "LUMP_LODINFOS";
case LUMP_LODSURFACES: return "LUMP_LODSURFACES";
case LUMP_LIGHTREGIONS: return "LUMP_LIGHTREGIONS";
case LUMP_LIGHTREGION_HULLS: return "LUMP_LIGHTREGION_HULLS";
case LUMP_LIGHTREGION_AXES: return "LUMP_LIGHTREGION_AXES";
case LUMP_WIILIGHTGRID: return "LUMP_WIILIGHTGRID";
case LUMP_LIGHTGRID2D_LIGHTS: return "LUMP_LIGHTGRID2D_LIGHTS";
case LUMP_LIGHTGRID2D_INDICES: return "LUMP_LIGHTGRID2D_INDICES";
case LUMP_LIGHTGRID2D_POINTS: return "LUMP_LIGHTGRID2D_POINTS";
case LUMP_LIGHTGRID2D_CELLS: return "LUMP_LIGHTGRID2D_CELLS";
case LUMP_LIGHT_CORONAS: return "LUMP_LIGHT_CORONAS";
case LUMP_SHADOWMAP_VOLUMES: return "LUMP_SHADOWMAP_VOLUMES";
case LUMP_SHADOWMAP_VOLUME_PLANES: return "LUMP_SHADOWMAP_VOLUME_PLANES";
case LUMP_EXPOSURE_VOLUMES: return "LUMP_EXPOSURE_VOLUMES";
case LUMP_EXPOSURE_VOLUME_PLANES: return "LUMP_EXPOSURE_VOLUME_PLANES";
case LUMP_OCCLUDERS: return "LUMP_OCCLUDERS";
case LUMP_OUTDOORBOUNDS: return "LUMP_OUTDOORBOUNDS";
case LUMP_HERO_ONLY_LIGHTS: return "LUMP_HERO_ONLY_LIGHTS";
default: return "Unknown Lump Type";
}
return "Unknown Lump Type";
}
static QString ZLibErrorToString(int result) {
switch (result) {
case Z_ERRNO:
return "Encountered file operation error!";
case Z_STREAM_ERROR:
return "Stream was not initialized properly!";
case Z_DATA_ERROR:
return "The input data was corrupted or incomplete!";
case Z_MEM_ERROR:
return "There was not enough memory!";
case Z_BUF_ERROR:
return "There was not enough room in the output buffer!";
case Z_VERSION_ERROR:
return "Linked libraries are out of date!";
}
return "";
}
static quint32 PadInt4(quint32 size) {
return (size + 3) & ~3; // Align size to 4 bytes
}
static quint32 PaddingSize(quint32 size) {
return PadInt4(size) - size;
}
};
#endif // UTILS_H