#### Brief overview of PR changes/additions
Ran clang-format on all 134 CPP files in src/ using the project's
.clang-format config
#### Motivation for adding to Mudlet
Ensures consistent code formatting across the codebase.
#### Other info (issues closed, discussion etc)
None
**Test case:** Build the project and verify it compiles successfully.
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Add sword icon for the player in the 3D mapper. Incidentally added
support for loading models in .GLB format + add [physically based
rendering](https://learnopengl.com/PBR/Theory).
Enable with `setConfig("experiment.3d-player-icon", true)`
https://github.com/user-attachments/assets/3f83047f-ff02-445d-8c5c-5c3bb30d9a40
#### Motivation for adding to Mudlet
Higher quality 3D mapper!
#### Other info (issues closed, discussion etc)
The rendering doesn't quite come close to what it is in
[sketchfab](https://sketchfab.com/3d-models/sword-07463a2658e04d6ab8a42b5639a35d63),
could be improved.
Icons other than the sword would be nice to have in the future - wizard
hat, etc. We could have a set of predefined icons (say 10) to use and
expand it to support loading custom models in the future.
This adds a dependency on the excellent [assimp](https://assimp.org/)
library.
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: SammerPetria <sammerpetria@gmail.com>
Co-authored-by: Vadim Peretokin <vadi2@users.noreply.github.com>
Co-authored-by: sammerpetria <sammerpetria@gmail.com>
Co-authored-by: mudlet-machine-account <39947211+mudlet-machine-account@users.noreply.github.com>
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Kebap <kebap_spam@gmx.net>
Co-authored-by: Harrison <harrison.martin@gmail.com>
Co-authored-by: Zooka <136661366+ZookaOnGit@users.noreply.github.com>
Co-authored-by: Dustin Heywood <dustin.heywood@gmail.com>
Co-authored-by: evilmog <evilmog@ibm.com>
Co-authored-by: Mike Conley <sousesider@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: keneanung <keneanung@googlemail.com>
Co-authored-by: Aviv Keller <me@aviv.sh>
Co-authored-by: Excellencedev <ademiluyisuccessandexcellence@gmail.com>
Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Nicolas KEITA <nicolaskeita2@gmail.com>
Co-authored-by: Piotr <delwing@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Remove support for leak detection using MSVC - this functionality hasn't
been in use in a decade, and we're switching to to using
[LeakSanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)
instead.
#### Motivation for adding to Mudlet
Cleaner code.
#### Other info (issues closed, discussion etc)
---------
Co-authored-by: Claude <noreply@anthropic.com>
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
This adds an experimental, new 3D mapper that uses shaders, more modern
openGL, and a far better code reorganization that makes it an easier
foundation to build upon.
The new 3D mapper is here side by side with the original and can be
toggled on for experimentation. There's a lot of work to be done, so I'd
rather merge it early instead of making a mega-PR.
#### Motivation for adding to Mudlet
So we have a new foundation to build upon and improve.
#### Other info (issues closed, discussion etc)
Old and new mapper can be toggled dynamically with:
```lua
-- this can be a keybinding
setConfig("experiment.3dmap.modernmapper", not getConfig("experiment.3dmap.modernmapper"))
```
Smooth movement is one experiment in the new mapper, and it can be
enabled with:
```lua
lua setConfig("experiment.rendering.smooth-camera", true)
```
As you notice an experiments system has been added so we can implement
things at once and experiment to choose the one that works best. This
system can be used in other places in Mudlet as well.
<details><summary>Details</summary>
<p>
## Experiments System
### Overview
Allows enabling/disabling experimental features via
`setConfig`/`getConfig` with validation against a predefined
whitelist.
### Usage
```lua
-- Enable experiment
setConfig("experiment.rendering.more-transparent", true)
-- Check if enabled
local enabled = getConfig("experiment.rendering.more-transparent") --
returns true/false
-- Get active experiment in group
local active = getConfig("experiment.rendering.active") -- returns
"more-transparent"
-- List all valid experiments
local experiments = getConfig("experiment.list") -- returns table of
valid keys
```
### Behavior
- Grouped experiments: Mutually exclusive (enabling one disables others in same group)
- Validation: Only predefined experiments allowed, invalid keys return errors
- Persistence: Experiment states saved/loaded with profiles
### Adding New Experiments
Edit Host::mValidExperiments in src/Host.cpp:
```cpp
const QSet<QString> Host::mValidExperiments = {
qsl("experiment.rendering.originalish"),
qsl("experiment.rendering.more-transparent"),
qsl("experiment.newfeature.option1"), // Add here
};
```
### Current Experiments
- experiment.rendering.originalish
- experiment.rendering.more-transparent
</p>
</details>
---------
Co-authored-by: Vadim Peretokin <vadi2@users.noreply.github.com>