Commit graph

66 commits

Author SHA1 Message Date
Christoph Oelckers
ebb71cebf1 - put the entire filesystem code into a namespace and created some subdirectories. 2023-08-22 22:54:54 +02:00
Christoph Oelckers
a0d679b84b - FileData cleanup and uncoupling from FString.
Work is still needed to allow this to use the lump cache directly because some decisions in the past made this data padded by a zero byte.
2023-08-22 22:54:52 +02:00
Christoph Oelckers
8a5d3c096b - return a std::string from GetFileFullPath 2023-08-22 22:18:54 +02:00
Christoph Oelckers
c5b5b2b873 - cleanup. 2023-08-22 22:18:53 +02:00
Christoph Oelckers
f0bbc32bae - add m_swap.h to several files. 2023-08-22 21:49:55 +02:00
Christoph Oelckers
47b76180d6 - fixed several warnings emitted by Clang. 2023-03-26 08:48:54 +02:00
Christoph Oelckers
1a0aa95ff4 - changed return value of CreatePalettedPixels.
The new struct will allpw return of static pixel data without reallocation and copying.
2023-01-07 17:55:55 +01:00
e99bf2b036 Update and clean up UE1 model loader. 2022-12-19 14:00:43 +01:00
Christoph Oelckers
941c0850ba - Backend update from Raze.
Mainly optimizations for the sound system and texture manager.
2022-12-18 16:19:18 +01:00
f256e7bb3d Fix UV "fix" for OBJ models. 2022-11-25 23:57:44 +01:00
Christoph Oelckers
28f8d4570d - silence compiler warning 2022-11-25 12:27:54 +01:00
8206c29edf Allow assigning IQM frames by animation name plus frame offset. 2022-11-25 08:12:23 +01:00
b002d5b8ec Fix crash if Animation is not explicitly assigned in MODELDEF. 2022-11-25 00:37:38 +01:00
Christoph Oelckers
c2f64b3a90 - removed one more redundant include. 2022-11-06 10:43:58 +01:00
Christoph Oelckers
8cc3099bd0 - movrf DBoneComponents into the backend as this needs to be shared. 2022-11-06 10:41:16 +01:00
Christoph Oelckers
0e111ae151 - changed CalculateBones to receive the bone component data directly instead of the owning actor.
Since the backend also gets used by Raze it may not access Doom game data.
2022-11-06 10:27:17 +01:00
Christoph Oelckers
c55dfbcddd - Backend update from Raze. 2022-11-06 08:49:25 +01:00
Shiny Metagross
9063bc8ef6 IQM 4.9 Last patch
- Improved performance of YZ axis swap matrix calculations by calculating them with the initial matrix calculations.
- IQMs with no bones will no longer crash
2022-11-05 19:22:19 +01:00
Christoph Oelckers
9c75a38ec3 - added [[noreturn]] to several functions that always throw exceptions. 2022-11-05 09:09:00 +01:00
Shiny Metagross
f7c3615d3b IQM Refactor Milestone
- Removed bone manipulation code
- Implemented an index in calculateBones to optimize multi-armature actors
- Moved the bone storage object's creation to RenderModels so that the armature array can be sized there
2022-10-31 11:34:55 +01:00
Shiny Metagross
7092971331 Bone manipulation updates
- Factored in parent bone rotations to check if a bone needs updating
- Implemented multiply Quaternion functions to TVector4
- Converted Euler rotations in A_ManipulateBone to degrees
2022-10-31 11:34:55 +01:00
Shiny Metagross
28444d4cfd Bone manipulation start
- Bone manipulation is largely finished, but I need to figure out how to multiply quaternions
2022-10-31 11:34:55 +01:00
Shiny Metagross
317e163fcf Update models_iqm.cpp
- Swapped YZ axis of IQM models
- Cleaned up some leftovers
- Now just prints a benign error message if a model has no joint data
2022-10-31 11:34:55 +01:00
Shiny Metagross
3f3cc5bbc3 IQM Refactor start
- Refactored IQM and calculateBones to process TRS at runtime which resolves some of the faulty animations with large rotations. Will also make bone manipulations much easier to do
2022-10-31 11:34:55 +01:00
Christoph Oelckers
7e0084f56b - Backend update from Raze. 2022-10-25 07:02:45 +02:00
Christoph Oelckers
07f08de474 - fixed some warnings. 2022-10-20 22:22:30 +02:00
Christoph Oelckers
5a52f61096 - fixed: R_LoadVoxelDef did not fully initialize the voxel descriptor it creates. 2022-10-20 20:23:35 +02:00
Shiny Metagross
be9a671217 Update models_iqm.cpp
- Fixed an issue with IQMs exported from blender that caused some issues in the blend weights
2022-10-19 22:48:57 +02:00
Shiny Metagross
b7c1c53eb0 Almost done with To-Dos
- The compile errors should be fixed
- Implemented a way for skeletal models using the MODELSAREATTACHMENTS flag to not upload duplicate bones to the bone buffer
2022-10-19 22:48:57 +02:00
Shiny Metagross
3f8141ed04 I'm not done with this
- I need to figure out how I'm gonna reference the same boneStartIndex between the indices. Maybe some property in smf? The problem is that even though the bone calculations are done just once per instance of the actor when the flag is enabled, the bone buffers are being copied still, and if there's too much data, some will quit uploading because it's full. Besides doing this, I may just see about increasing the buffer size if possible. It's really just not very big.
2022-10-19 22:48:57 +02:00
Shiny Metagross
3c9a1ffe5e Give a fatal error when no mesh data is loaded
- Part of having mesh data in an IQM includes joints. If a model doesn't have any mesh data to it, it won't have joints, and those are necessary. Poses are a different story however.
2022-10-19 22:48:57 +02:00
Shiny Metagross
5670e6f54c Some of the to-dos
- Implemented Animation parameters for A_ChangeModel
- Made a modeldef flag to treat additional model indices as just attachments, meaning they will use armature data from index 0
- Fixed an issue with A_ChangeModel where generated indices lower than smf frame amounts could not actually generate anything
2022-10-19 22:48:57 +02:00
Shiny Metagross
e9e919b54c Changes before To-Dos
- Removed redundant AttachAnimationData functions from derived model classes
- Fixed indentation in IQM loader
- Fixed a merging issue in the MD3 FindFrame
- Fixed a formatting issue in FindFrame in Model.h?
2022-10-19 22:48:57 +02:00
Shiny Metagross
08f520f1c6 IQM Support Implemented
More info to come
2022-10-19 22:48:57 +02:00
Christoph Oelckers
f0fbdba593 - disable implicit conversions from float to TAngle 2022-08-26 18:01:26 +02:00
8c0ad50db3 UE1 models now handle frame index -1 properly. 2022-08-24 19:56:07 +02:00
Christoph Oelckers
c89ae6358e - Backend update from Raze, mostly maintenance changes without new functionality. 2022-08-11 22:51:19 +02:00
9eb8d65cb1 Fix another incorrect mapping of texture indices for UE1 models. 2022-07-27 10:21:29 +02:00
cd20d707d4 Fix incorrect mapping of texture indices for UE1 models. 2022-07-25 13:52:46 +02:00
nashmuhandes
351a4c9a5a Added PitchFromMomentum, UseActorPitch and UseActorRoll to VOXELDEF. Behaves exactly like their 3D model counterparts. Hardware renderer only. 2022-07-25 08:06:44 +02:00
Christoph Oelckers
9875850c19 - got rid of the state variables in the model class entirely.
This is *not* the right way to reduce function parameter count. The data in question is far easier evaluated at the calling site and passed as a parameter.
2022-07-23 10:35:01 +02:00
Christoph Oelckers
76c8214d67 - fixed destructive logic and memory allocation issues in RenderFrameModels.
This completely avoids modification of the model data, instead using local variables.
2022-07-23 10:10:15 +02:00
Shiny Metagross
69ee1eb0a2 Surfaceskin modification
- Made it so when rendering a model, it clones an smf to use so that data isn't overwritten
- Reimplemented the skin index property. This changes the behavior of this index if CMDL_USESURFACESKIN is activated
2022-07-22 17:11:59 +02:00
Shiny Metagross
6d00e4a3f3 Finished serializing
- Implemented an FString TArray which goes into save files that saves a model file and path, and when the game is loaded, spits back out the model to be Loaded when loading a save file
2022-07-22 17:11:59 +02:00
Kevin Caccamo
ecc0afd2f2 Fix usage of -1 as OBJ model FrameIndex
So that what is said on the ZDoom Wiki (see https://zdoom.org/wiki/MODELDEF#Notes) holds true for OBJ models.
2022-04-24 19:40:08 +02:00
ee1774e956 Relicense UE1 model loader as MIT.
Match up with the same relicensing that affected umeshtools,
which this loader takes most of its code from.
2022-01-02 18:09:10 +01:00
Christoph Oelckers
e60e6967c0 - whitespace cleanup, updated from Raze. 2022-01-02 12:23:42 +01:00
Christoph Oelckers
1c517d19fa - Backend update from Raze.
This is mainly code cleanup from setting the compiler to a stricter warning level.
2022-01-02 11:39:17 +01:00
Christoph Oelckers
cc617d9085 - Backend update from Raze.
Mostly warning fixes reported by Clang, plus GLES update.
2021-10-30 09:29:21 +02:00
Christoph Oelckers
4614ce41cd - allow passing a remap table to BestColor. 2021-08-21 10:55:21 +02:00