Commit graph

389 commits

Author SHA1 Message Date
JeffR
de26f519f9 Adds logic to correctly write out a shape's materials as fields to the asset taml file so they can register as dependencies with the assetdatabase 2026-05-31 11:14:54 -05:00
JeffR
b44158cb89 Cleans up ShapeAsset of some unnecessary/redundant elements like extra material and animations tracking
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.
2026-05-31 01:19:26 -05:00
marauder2k7
7d9497ec75 fix 2026-05-27 20:20:07 +01:00
marauder2k7
52037b3e82 remove requirement of element count in array
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.
2026-05-27 20:01:31 +01:00
marauder2k7
e97e7521f3 Convert sound asset
Convert sound asset to use the new field constructors
Also add a simple example of the visibility control.
2026-05-27 20:01:31 +01:00
marauder2k7
2895e98cbb TSShape loader refactor
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.
2026-05-25 00:28:03 +01:00
marauder2k7
823054ed86 very small sound asset changes
Adds the resolved track stuff from the soundAsset refactor
also uses the refresh asset so changes do not cause a sound to stop working
2026-05-11 22:22:48 +01:00
marauder2k7
acda0354d6 Add reverb
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
2026-05-11 22:22:47 +01:00
JeffR
b54865aa74 Fixes the re-import behavior in the Asset Browser to properly prompt the reimport window with the indicated asset in the AB
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
2026-05-02 11:35:20 -05:00
JeffR
f6f06121ab Misc fixes associated to looseAssetFiles handling and lookups for LevelAssets
- Adds proper marking of Load status for levelAsset, so if no mis file is defined then the asset fails to load and has proper error code
- Adjusts the get*Path() util methods for getting stuff like postFXPrefix or decal files to have a fallback if one isn't currently defined in the assetDef, as it could be a broken link but the file does exist
- Adjusts saving logic of level so it will properly update the levelAsset for postfx prefix or decal files so if they were added after creation of the assetdef, they're saved and updated as expected
- Adjusts the setter methods for the *File fields to correctly separate the File variable and Path variable to make things behave more clearly and consistently.
- Keeps checks for *.mis.decals file pattern, but shifts new creations of decals files to just be *.decals to better match other level-associated files like *.nav or *.forest
2026-04-21 01:22:26 -05:00
AzaezelX
95afee6937 AssetImportConfig::loadImportConfig safety
if no Settings* passed, report and skip trying to apply them to a nonexisent object
2026-04-19 11:52:44 -05:00
Areloch
4fe0dd05b4
Merge pull request #1682 from marauder2k9-torque/RefBase-refactor
RefBase classes refactored to use smart pointers
2026-04-08 23:42:19 -05:00
marauder2k7
57766ba649 Update ImageAsset.cpp
the opened ddsfs file for pulling metadata was leaking. The FileStream function close does not delete the pointer to the original file only FileObject does this. It might be worthwhile instead to switch to using fileObject anywhere we use a filestream that way we can be at least somewhat safe in using the object and once it goes out of scope the raw pointer will be freed
2026-03-07 10:19:58 +00:00
marauder2k7
8c8c2591fe ref base use smart pointers 2026-03-06 08:44:44 +00:00
AzaezelX
2b6b56d0d9 don't flip invertroughness on by default 2026-02-24 17:03:12 -06:00
AzaezelX
5ffa3b81f1 dial back nullPtr usage
while it still remains a good idea to port as many NULL compares and assignments over to nullPtr as feasable, we do still need to sort out how to better support scripted empty, false, and zero assigns for things like objectIDs.

this means we'll need to both fully convert the backend of the parser to support that kind of thing, but also alter most if not all exisiting NULLs. up to and including things like SAFE_DELETE. while that's certainly feasable, given there's aproximatel 400 nullptr assigns/checks prior to this commit, and roughly 1800 of the prior, if it terminates in a script call and not an aip one direct, we'll be dialing that back until such time as fork fully fopcused on converting and resolving any lingering mismatches is completed.
2025-12-29 17:45:09 -06:00
JeffR
12ebebff46 Update of Particle Editor to standardize it up and utilize inspectors rather than adhoc guis 2025-12-21 16:39:19 -06:00
Brian Roberts
bebce304b3
Merge pull request #1603 from Azaezel/alpha41/assetNetworkFollowup
followup to https://github.com/TorqueGameEngines/Torque3D/pull/1601
2025-12-09 21:31:30 -06:00
marauder2k7
34a8e5ef52 follow up to asset data management 2025-12-10 03:27:54 +00:00
AzaezelX
3ec347b2bb followup to https://github.com/TorqueGameEngines/Torque3D/pull/1601 2025-12-09 18:46:00 -06:00
marauder2k7
74638c0f2c Asset data management
Added functions to AssetManager to pack/unpack assets using an id hash instead of their id string this cuts down how much data is sent across the network for assets

All asset macros updated to use this new functionality.
2025-12-09 10:05:39 +00:00
JeffR
66f924ebd4 Updates TerrainMaterialAsset to utilize similar macros to everything else
Updates groundCover to utilize TerrainMaterialAsset macros in place of straight StringTableEntry for type layers
Fixes formatting for several asset types' inspector fields so they correctly call down into prompting the AssetBrowser being shown with correct field naming, thus allowing fields that are arrays to have the right index when setting the target variable
Updates several asset helper macros to handle blank values for network traffic to actually be sent to client, thus allowing setting an asset to blank on the client, rather than only falling back
2025-12-03 00:33:14 -06:00
AzaezelX
9bcf8a90b2 dsq detection filters 2025-11-25 19:03:38 -06:00
JeffR
6b3fcd8e74 Shifts the console method for manually invoking load() from being ShapeAsset specific to being generalized to AssetBase 2025-10-13 08:13:37 -05:00
JeffR
e02981c848 Fixes various reported issues with the ShapeEd update
- Updates addSequence for the TSShapeConstructor so it can properly understand if it's handed an assetId or not, and if it is, stores that as the source data for use later
- Has the added benefit of ensuring no erroneous double-ups of data causing accidental overwrites when saving the shapeConstructor because it thinks the data 'changed'
- Fixed saving of new added sequences in shape constructor to properly trip whitespace
- Adds ability to manually trigger a ShapeAsset to load the shape data
- Adjusted the logic for getting a shape/animation asset's constructor when adding a new sequence to avoid false reporting of no constructor existing(by manually loading it)
- Fixed formatting on ShapeEd Anim window to properly scale
- Added onWake calls for the ShapeEd select and properties windows to better prep them position/extents-wise so they should behave more consistently
- Fixed issue of Not closing material editor if it was opened via the Edit Selected Material button in the ShapeEd
- Fixed issue of highlighting of material not going away when ShapeEditor is closed
2025-10-13 00:07:46 -05:00
AzaezelX
2316c164e9 change per slot maxdistance to maxSlotDistance
it conflicts with the general xaxDisance
2025-09-30 17:14:30 -05:00
marauder2k7
10acab1b07 more fixes
DSQ Fixes
2025-09-23 19:09:20 +01:00
JeffR
11548d2630 Added early-out check if we're already successfully loaded 2025-09-15 21:26:56 -05:00
JeffR
ce1be5e881 Makes sure the loading code for terrain assets is properly assigned.
This ensures stuff like saving works properly.
2025-09-15 21:16:34 -05:00
Brian Roberts
e73efc13c4
Merge pull request #1541 from Areloch/MiscFixes_20250825
Misc small fixes, improvements and QoL tweaks
2025-08-26 01:43:57 -05:00
JeffR
9c654d7932 - Fixes the display of the preview in the MaterialAsset fields
- Hides the special-case direct filepath field for ShapeAsset persist fields macro
- Shifts the handling of TSStatics so the shape instance will load materials on the server as well as the client. This opens gameplay options as well as allowing rebaking of meshes functionality more easily
- Expands AssetBase's isValidAsset utility function to actually check validity instead of just returning true
- Adds isValid utility function to AssetPtr
- Added new field flag that makes the field not write out to file
- Removed legacy iconBitmap field from GuiIconButtonCtrl because it was causing errors
- Fixed group filtering check of guiInspector to ignore case
- Removed unneeded isFile checks for common datablock script files in Prototyping module script
- Removed test datablocks from Prototyping module
- Removed unnecessary container control from AssetBrowser
- Adjusted preview regen logic of AssetBrowser so it doesn't trip if you're simply resizing the window
- Fixed issue where row-vs-column layout logic for AssetBrowser when resizing window was fiddly
- Added handling for when Dragging and Dropping datablock from AssetBrowser to spawn, it'll prompt if it spawns the actual object, or a spawnsphere that spawns said object. In the event of an PlayerData will also prompt if it should spawn an AIPlayer
- Added ability to take a TSStatic that uses a baked down mesh and are able to restore it to the cache prefab, or trigger and in-place rebake to refresh it if something has changed in the original contents via RMB menu on the scene tree
- Added ability to explode prefab to RMB menu on scene tree
- Added ability to convert selection to prefab or bake to mesh in RMB menu on scene tree
- Tweaked sizing of the DatablockEditorCreatePrompt window to not have cut off elements and easier to see/work with
- Added sanity check to datablock editor creation
- Fixed preview display of material in Decal Editor
- Made compositeTextureEditor use the cached preview of images
- Fixed sizing/spacing of gui selection dropdown as well as resolution dropdown of GuiEditor
- Fixes MaterialEditor to properly save the group collapse state when editing
- Adds ability to in-flow edit and create datablocks in the NavMesh Editor for the testing panel, and makes the datablock dropdown searchable
- Fixed issue where opening the ShapeEditor via the edit button on a ShapeAsset field would cause the action buttons on the top bar to not show
- Fixed error in shape editor where when exiting it was erroneously checking for a clear value of -1 rather than 0
- Removed unneeded top tabbook and tab page for main editor panel
- Fixed issue where reset button of TerrainBrush Softness Curve editor didn't actually reset
- Resized Object Builder window to not cut off elements and have enough width to show more data
- Added a TypeCommand field type to Object Builder and changed spawnscript field of SpawnSphere to use it rather than a simple text edit field
- Allow SpawnSphere in ObjectBuilder to be passed in spawn class and spawn datablock default info
- Injects button to controllable objects when Inspecting them to make it easy to toggle if you're in control of it or not
-
2025-08-25 23:35:28 -05:00
AzaezelX
3123935472 correct DECLARE_<foo>ASSET assigns
use string compare there, not pointer compares
2025-08-21 15:40:07 -05:00
JeffR
f3cad0d77e Converts the ad-hoc design of the Material Editor to utilize the same inspector interface as most everything else does.
- Overhauls the material editor to simplify and streamline the logic behind it since the inspector does most of the work
- Tweak a few order positions of materialdefinition fields to work better
- Sets AO, Rough and Metal channel fields to use an enum type for human readability
- Updates the MaterialPreview gui control to work with assetIds
- MatEd now supports setting of parent material to inherit from
- Creating a new material now can prompt selecting an existing material to inherit from
- Can now edit the mapTo value of a material in the matEd
- New standalone Composite Texture Editor window for convering AO, Roughness and Metalness maps in a material to an ORMMap
- Can also star the creation of a composite texture via RMB context menu in AB on an image asset
- Moved logic of CubemapEditor from MatEd to it's own stuff
- Made ImageAsset fields now be more clear when they have nothing assigned, and also have a clear button to empty the field's value so it's consistent across the board
- Reorganized the layout of the gui and image files for the MatEd to be easier to navigate
- MaterialEditor now overlays the EditorGUI instead of being forcefully embedded in it, allowing easy editing of the MatEd Gui via the Gui editor
2025-08-03 12:03:02 -05:00
AzaezelX
4eae51992e shapes are optional for projectiles. not mandatory.
and stop yelling in the console mid way through loading.
2025-07-07 16:49:56 -05:00
AzaezelX
e8ccb3443a try to load shapes during preload
it's half the point of the protocol
2025-07-06 19:51:55 -05:00
marauder2k7
ff442f5230 keep same naming 2025-06-20 17:13:20 +01:00
marauder2k7
fd7342668c streamline shape asset
shape asset now has the same import "@" as image asset
cut out extra filename parameters that arent needed
refresh hopefully fixed
2025-06-20 15:58:20 +01:00
marauder2k7
542563feaf Update ShapeAsset.h
fix linux and mac being pedantic about NULL = 0
2025-06-19 17:32:09 +01:00
marauder2k7
08f52cfa16 add extra checks
add extra checks around an empty stringtableentry for assets and bitmap controls
2025-06-19 16:58:44 +01:00
marauder2k7
5d641929cf player and ground cover 2025-06-19 14:10:00 +01:00
marauder2k7
c6ec2fd6a1 Merge branch 'PreviewAssets_UseAsset' into SoundAsset_Refactor 2025-06-19 13:36:49 +01:00
marauder2k7
ca1604170d initial commit
change the macro to use the refactor (exact same structure as the imageasset macro)
2025-06-19 13:34:07 +01:00
marauder2k7
45f1447d2b Update ImageAsset.h
add check for if _in matches the filename that is already set for image asset, this stops the set being called twice when loading the same image asset
2025-06-19 07:53:32 +01:00
marauder2k7
794a8c900d Update ImageAsset.cpp
add change notification on intialize asset use this callback to update information about the image on refresh. Remove notification when the asset is removed and when the imagefile changes
2025-06-17 16:49:07 +01:00
marauder2k7
48b512ef73 move population of image metadata to onAssetRefresh 2025-06-17 15:06:07 +01:00
marauder2k7
3d77b59b71 Update assetImporter.cpp
refresh asset so image asset can write out its image metadata
2025-06-17 14:57:18 +01:00
marauder2k7
67f217ada1 Update assetImporter.cpp
asset importing for images shouldnt execute a file copy, original file path is enough as it is relative to exe
2025-06-17 12:20:47 +01:00
marauder2k7
fc9f221ac0 Prepend symbol for image files
Prepend image filenames in imageassets with "@" symbol so expand and collapse works correctly for files relative to that asset.taml file.
2025-06-16 08:33:11 +01:00
marauder2k7
50f74368b3 various fixes around preview assets and imageassets text field
Imageasset text field now displays correctly in inspector
previews now use assets again
assetBrowser hides previewCache folder
2025-06-15 22:07:12 +01:00
AzaezelX
a3d2d13d39 remove stray methods.
revisit loadedstate shortcutting of already loaded textures
2025-06-01 12:41:31 -05:00