- Updates the various classes using materials to comply to the change.
- Also standardizes some getter names to follow the general convention image and shape used to keep things more consistent across the board to minimize usage friction.
- Shifts handling of fallback asset lookups for the thus-far converted classes to have them be loaded during core initialization rather than being loaded as part of other asset loading as that sometimes lead to nesting execution/stability errors. Explicit call now ensures the fallbacks are loaded before any other asset tries to load, so there's no room for confounding or having no fallback to work with.
- Re-adds the filecopy check so if dragging-and-dropping an external shape file for importing(Secure VFS flag allowing) it properly copies the source file to the destination directory on import
the last refactor broke spawning sfxemitters with blank entries. this will fix that, though we'll need to circle back and correct other issues, like looping override
there were a couple code routes that could lead to mShapeInstance holding on to the old ram loc. used SAFE_DELETE preemptively to ensure that never happens.
reading an int in scanf into a bool causes issues, could be the compile options being more strict about inlining and the precompiled headers
Also precompiled header for sceneObject since build insights saw it as the most expensive header.
Removed the old SHAPE_ASSET macros
Implements AssetRef struct that acts as a universal wrapper for an templated AssetPtr and AssetId pair
Adds Type handling for AssetRef for ShapeAsset to unify handling in classes that utilize a shapeAsset, so assigning an assetPtr or an assetId will keep a record of the assignment in the event the assetPtr is invalid.
Update all classes that utilized the old SHAPE_ASSET macros to utilize the AssetRef struct and updated the class code to utilize it to provide much more clean and concise code that isn't blocked behind macro definitions
Added a new example class: shapeDatablockExample which allows render of a simple shape object utilizing a simple example datablock.
If we define an array field have every other field inside that array declared inherit its element count. Can be override with a .elements(N) if N is > 1.
final setup for assimp
Added assimp importers and exporters, removed defaulting to all
Added compression to tshape
added dts version to tshape and cmake
Update assimpShapeLoader.cpp
quick fix
fix previewing dsq ground work
automatically export dsq files for animations
Groundwork
Adds the same sort of model for registering loaders and exporters as is set out on gbitmap
Added a bit more safety around the assimp matrix fix to convert incoming models to torques coordinate system.
Adds reverb functionality to sound system
TODO: Make a proper sfxMixer api that will route voices to channels that have the effects slots added to them. this is just a place holder for a more complete implementation
camerasplines in general previously assumed you would always want to ease in and out at the first and final node. even when looping. adds an mUsease to it, and to pathshapedata to optionally shut that off. (on by default to behave as legacy)
Also fixes how the shapeConstructor is searched/parsed when doing reimports vs new import creations
Fixes incorrect assetId usage in some of the prototyping shape constructors so they match now
this laregly occured due to adding ribbon nodes in smaller increments than the size of a given quad.
we therefore skip adding new ribbon nodes if velocity, as determined by the point deltas, would be below 10% of the largest scale a given quad for that link in the ribbon would be.
as this will result in lower than a max length ribbon, also adds a timeout mechanism of removing a link every TickMS (32 ticks/second, or roughly how often one would also be aded when in a growth state)
for full finalization do still need to circle back and adress why there remains 1 quad spawned after motion.