Forum Mod Bakery Docs

What Pure3D utilities would be useful?

Please login to contribute to the conversation.
Proddy here - some of you may know that I've spent a fair amount of time working with Pure3D files in both mods and external tools.

A few months ago, I was working on a P3DTool for manipulating Pure3D files through the command line. Life then happened and development kind of stopped.

Fast forward to now, and I'm looking for ideas for utilities that would help modders. Whilst I've been in this community for a long time, the majority of my focus has been on Lua mods, which means I don't know what features would help in "normal" mod development.

So I'm looking for any suggestions on what would make your life easier. One example that I worked on for @Loren was a Pure3D Searcher, that could search the entire game's Pure3D files for a given query:
Pure3D Searcher
Console output:
Enter search query:
shirtdollar

Searching through 1965 files in "C:\SHAR\" for "shirtdollar"...
90. "BQG_shirtdollarShape8" (Animation (0x121000)).Name: BQG_shirtdollarShape8
90. "BQG_shirtdollarShape8" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape8" (Animation Group (0x121001)).Name: shirtdollarShape8
91. "PTRN_shirtdollar" (Animation (0x121000)).Name: PTRN_shirtdollar
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollar" (Animation Group (0x121001)).Name: shirtdollar
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 2. "shirtdollar2" (Animation Group (0x121001)).Name: shirtdollar2
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 3. "shirtdollar12" (Animation Group (0x121001)).Name: shirtdollar12
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 4. "shirtdollar5" (Animation Group (0x121001)).Name: shirtdollar5
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 5. "shirtdollar6" (Animation Group (0x121001)).Name: shirtdollar6
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 6. "shirtdollar7" (Animation Group (0x121001)).Name: shirtdollar7
91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 7. "shirtdollar8" (Animation Group (0x121001)).Name: shirtdollar8
102. "BQG_shirtdollarShape6" (Animation (0x121000)).Name: BQG_shirtdollarShape6
102. "BQG_shirtdollarShape6" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape6" (Animation Group (0x121001)).Name: shirtdollarShape6
113. "BQG_shirtdollarShape7" (Animation (0x121000)).Name: BQG_shirtdollarShape7
113. "BQG_shirtdollarShape7" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape7" (Animation Group (0x121001)).Name: shirtdollarShape7
138. "shirtdollar" (Skeleton (0x4500)).Name: shirtdollar
138. "shirtdollar" (Skeleton (0x4500)) -> 0. "shirtdollar" (Skeleton Joint (0x4501)).Name: shirtdollar
138. "shirtdollar" (Skeleton (0x4500)) -> 2. "shirtdollar2" (Skeleton Joint (0x4501)).Name: shirtdollar2
138. "shirtdollar" (Skeleton (0x4500)) -> 3. "shirtdollar12" (Skeleton Joint (0x4501)).Name: shirtdollar12
138. "shirtdollar" (Skeleton (0x4500)) -> 4. "shirtdollar5" (Skeleton Joint (0x4501)).Name: shirtdollar5
138. "shirtdollar" (Skeleton (0x4500)) -> 5. "shirtdollar6" (Skeleton Joint (0x4501)).Name: shirtdollar6
138. "shirtdollar" (Skeleton (0x4500)) -> 6. "shirtdollar7" (Skeleton Joint (0x4501)).Name: shirtdollar7
138. "shirtdollar" (Skeleton (0x4500)) -> 7. "shirtdollar8" (Skeleton Joint (0x4501)).Name: shirtdollar8
155. "shirtdollarShape5" (Particle System Factory (0x15800)).Name: shirtdollarShape5
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 0. Old Particle Animation (0x15808) -> 0. "shirtdollarShape4" (Animation (0x121000)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 1. Old Emitter Animation (0x15809) -> 0. "shirtdollarShape4" (Animation (0x121000)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 1. Old Emitter Animation (0x15809) -> 0. "shirtdollarShape4" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape4" (Animation Group (0x121001)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 2. Old Generator Animation (0x1580A) -> 0. "shirtdollarShape4" (Animation (0x121000)).Name: shirtdollarShape4
155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 2. Old Generator Animation (0x1580A) -> 0. "shirtdollarShape4" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape4" (Animation Group (0x121001)).Name: shirtdollarShape4
168. "shirtdollarShape5" (Particle System 2 (0x15801)).Name: shirtdollarShape5
168. "shirtdollarShape5" (Particle System 2 (0x15801)).FactoryName: shirtdollarShape5
200. "shirtdollarShape8" (Old Billboard Quad Group (0x17002)).Name: shirtdollarShape8
200. "shirtdollarShape8" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape8" (Old Billboard Quad (0x17001)).Name: shirtdollarShape8
201. "shirtdollarShape7" (Old Billboard Quad Group (0x17002)).Name: shirtdollarShape7
201. "shirtdollarShape7" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape7" (Old Billboard Quad (0x17001)).Name: shirtdollarShape7
208. "shirtdollarShape6" (Old Billboard Quad Group (0x17002)).Name: shirtdollarShape6
208. "shirtdollarShape6" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape6" (Old Billboard Quad (0x17001)).Name: shirtdollarShape6
222. "shirtdollar2Shape" (Mesh (0x10000)).Name: shirtdollar2Shape
246. "shirtdollar" (Composite Drawable (0x4512)).Name: shirtdollar
246. "shirtdollar" (Composite Drawable (0x4512)).SkeletonName: shirtdollar
246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 0. "shirtdollarShape6" (Composite Drawable Prop (0x4516)).Name: shirtdollarShape6
246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 1. "shirtdollarShape7" (Composite Drawable Prop (0x4516)).Name: shirtdollarShape7
246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 2. "shirtdollarShape8" (Composite Drawable Prop (0x4516)).Name: shirtdollarShape8
246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 4. "shirtdollar2Shape" (Composite Drawable Prop (0x4516)).Name: shirtdollar2Shape
246. "shirtdollar" (Composite Drawable (0x4512)) -> 2. Composite Drawable Effect List (0x4517) -> 0. "shirtdollarShape5" (Composite Drawable Effect (0x4518)).Name: shirtdollarShape5
296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)).Name: PTRN_shirtdollar
296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)).HierarchyName: shirtdollar
296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)).AnimationName: PTRN_shirtdollar
297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)).Name: BQG_shirtdollarShape8
297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)).HierarchyName: shirtdollarShape8
297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)).AnimationName: BQG_shirtdollarShape8
298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)).Name: BQG_shirtdollarShape7
298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)).HierarchyName: shirtdollarShape7
298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)).AnimationName: BQG_shirtdollarShape7
299. "EFX_shirtdollarShape5" (Old Frame Controller (0x121200)).Name: EFX_shirtdollarShape5
299. "EFX_shirtdollarShape5" (Old Frame Controller (0x121200)).HierarchyName: shirtdollarShape5
300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)).Name: BQG_shirtdollarShape6
300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)).HierarchyName: shirtdollarShape6
300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)).AnimationName: BQG_shirtdollarShape6
336. "shirtdollar_controller" (Multi Controller (0x48A0)).Name: shirtdollar_controller
336. "shirtdollar_controller" (Multi Controller (0x48A0)) -> 0. Multi Controller Tracks (0x48A1).Tracks: (Array)

Found 62 matches in 1 files for query "shirtdollar".
Results written to: Results_20241224015849.csv
CSV output:
File,Path,Property,Value
art\missions\generic\missgen.p3d,90. "BQG_shirtdollarShape8" (Animation (0x121000)),Name,BQG_shirtdollarShape8
art\missions\generic\missgen.p3d,90. "BQG_shirtdollarShape8" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape8" (Animation Group (0x121001)),Name,shirtdollarShape8
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)),Name,PTRN_shirtdollar
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollar" (Animation Group (0x121001)),Name,shirtdollar
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 2. "shirtdollar2" (Animation Group (0x121001)),Name,shirtdollar2
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 3. "shirtdollar12" (Animation Group (0x121001)),Name,shirtdollar12
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 4. "shirtdollar5" (Animation Group (0x121001)),Name,shirtdollar5
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 5. "shirtdollar6" (Animation Group (0x121001)),Name,shirtdollar6
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 6. "shirtdollar7" (Animation Group (0x121001)),Name,shirtdollar7
art\missions\generic\missgen.p3d,91. "PTRN_shirtdollar" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 7. "shirtdollar8" (Animation Group (0x121001)),Name,shirtdollar8
art\missions\generic\missgen.p3d,102. "BQG_shirtdollarShape6" (Animation (0x121000)),Name,BQG_shirtdollarShape6
art\missions\generic\missgen.p3d,102. "BQG_shirtdollarShape6" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape6" (Animation Group (0x121001)),Name,shirtdollarShape6
art\missions\generic\missgen.p3d,113. "BQG_shirtdollarShape7" (Animation (0x121000)),Name,BQG_shirtdollarShape7
art\missions\generic\missgen.p3d,113. "BQG_shirtdollarShape7" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape7" (Animation Group (0x121001)),Name,shirtdollarShape7
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)),Name,shirtdollar
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 0. "shirtdollar" (Skeleton Joint (0x4501)),Name,shirtdollar
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 2. "shirtdollar2" (Skeleton Joint (0x4501)),Name,shirtdollar2
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 3. "shirtdollar12" (Skeleton Joint (0x4501)),Name,shirtdollar12
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 4. "shirtdollar5" (Skeleton Joint (0x4501)),Name,shirtdollar5
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 5. "shirtdollar6" (Skeleton Joint (0x4501)),Name,shirtdollar6
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 6. "shirtdollar7" (Skeleton Joint (0x4501)),Name,shirtdollar7
art\missions\generic\missgen.p3d,138. "shirtdollar" (Skeleton (0x4500)) -> 7. "shirtdollar8" (Skeleton Joint (0x4501)),Name,shirtdollar8
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)),Name,shirtdollarShape5
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 0. Old Particle Animation (0x15808) -> 0. "shirtdollarShape4" (Animation (0x121000)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 1. Old Emitter Animation (0x15809) -> 0. "shirtdollarShape4" (Animation (0x121000)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 1. Old Emitter Animation (0x15809) -> 0. "shirtdollarShape4" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape4" (Animation Group (0x121001)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 2. Old Generator Animation (0x1580A) -> 0. "shirtdollarShape4" (Animation (0x121000)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,155. "shirtdollarShape5" (Particle System Factory (0x15800)) -> 1. "shirtdollarShape4" (Old Sprite Emitter (0x15806)) -> 0. "shirtdollarShape4" (Old Base Emitter (0x15805)) -> 2. Old Generator Animation (0x1580A) -> 0. "shirtdollarShape4" (Animation (0x121000)) -> 1. Animation Group List (0x121002) -> 0. "shirtdollarShape4" (Animation Group (0x121001)),Name,shirtdollarShape4
art\missions\generic\missgen.p3d,168. "shirtdollarShape5" (Particle System 2 (0x15801)),Name,shirtdollarShape5
art\missions\generic\missgen.p3d,168. "shirtdollarShape5" (Particle System 2 (0x15801)),FactoryName,shirtdollarShape5
art\missions\generic\missgen.p3d,200. "shirtdollarShape8" (Old Billboard Quad Group (0x17002)),Name,shirtdollarShape8
art\missions\generic\missgen.p3d,200. "shirtdollarShape8" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape8" (Old Billboard Quad (0x17001)),Name,shirtdollarShape8
art\missions\generic\missgen.p3d,201. "shirtdollarShape7" (Old Billboard Quad Group (0x17002)),Name,shirtdollarShape7
art\missions\generic\missgen.p3d,201. "shirtdollarShape7" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape7" (Old Billboard Quad (0x17001)),Name,shirtdollarShape7
art\missions\generic\missgen.p3d,208. "shirtdollarShape6" (Old Billboard Quad Group (0x17002)),Name,shirtdollarShape6
art\missions\generic\missgen.p3d,208. "shirtdollarShape6" (Old Billboard Quad Group (0x17002)) -> 0. "shirtdollarShape6" (Old Billboard Quad (0x17001)),Name,shirtdollarShape6
art\missions\generic\missgen.p3d,222. "shirtdollar2Shape" (Mesh (0x10000)),Name,shirtdollar2Shape
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)),Name,shirtdollar
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)),SkeletonName,shirtdollar
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 0. "shirtdollarShape6" (Composite Drawable Prop (0x4516)),Name,shirtdollarShape6
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 1. "shirtdollarShape7" (Composite Drawable Prop (0x4516)),Name,shirtdollarShape7
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 2. "shirtdollarShape8" (Composite Drawable Prop (0x4516)),Name,shirtdollarShape8
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)) -> 1. Composite Drawable Prop List (0x4514) -> 4. "shirtdollar2Shape" (Composite Drawable Prop (0x4516)),Name,shirtdollar2Shape
art\missions\generic\missgen.p3d,246. "shirtdollar" (Composite Drawable (0x4512)) -> 2. Composite Drawable Effect List (0x4517) -> 0. "shirtdollarShape5" (Composite Drawable Effect (0x4518)),Name,shirtdollarShape5
art\missions\generic\missgen.p3d,296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)),Name,PTRN_shirtdollar
art\missions\generic\missgen.p3d,296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)),HierarchyName,shirtdollar
art\missions\generic\missgen.p3d,296. "PTRN_shirtdollar" (Old Frame Controller (0x121200)),AnimationName,PTRN_shirtdollar
art\missions\generic\missgen.p3d,297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)),Name,BQG_shirtdollarShape8
art\missions\generic\missgen.p3d,297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)),HierarchyName,shirtdollarShape8
art\missions\generic\missgen.p3d,297. "BQG_shirtdollarShape8" (Old Frame Controller (0x121200)),AnimationName,BQG_shirtdollarShape8
art\missions\generic\missgen.p3d,298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)),Name,BQG_shirtdollarShape7
art\missions\generic\missgen.p3d,298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)),HierarchyName,shirtdollarShape7
art\missions\generic\missgen.p3d,298. "BQG_shirtdollarShape7" (Old Frame Controller (0x121200)),AnimationName,BQG_shirtdollarShape7
art\missions\generic\missgen.p3d,299. "EFX_shirtdollarShape5" (Old Frame Controller (0x121200)),Name,EFX_shirtdollarShape5
art\missions\generic\missgen.p3d,299. "EFX_shirtdollarShape5" (Old Frame Controller (0x121200)),HierarchyName,shirtdollarShape5
art\missions\generic\missgen.p3d,300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)),Name,BQG_shirtdollarShape6
art\missions\generic\missgen.p3d,300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)),HierarchyName,shirtdollarShape6
art\missions\generic\missgen.p3d,300. "BQG_shirtdollarShape6" (Old Frame Controller (0x121200)),AnimationName,BQG_shirtdollarShape6
art\missions\generic\missgen.p3d,336. "shirtdollar_controller" (Multi Controller (0x48A0)),Name,shirtdollar_controller
art\missions\generic\missgen.p3d,336. "shirtdollar_controller" (Multi Controller (0x48A0)) -> 0. Multi Controller Tracks (0x48A1),Tracks,(Array)

Anything Pure3D related that would improve modding is appreciated, and I'll try work on them whilst I have time.

Thanks,
Josh
Good day, Proddy! πŸ€—
I have some suggestions/ideas about Pure3D that might make things easier for modders. Here are a few that have come up πŸ˜‰:

Pure3D File Validator
A tool that detects common errors or inconsistencies in Pure3D files, such as broken references, duplicate node names, or incorrect formats that can cause game crashes. When selecting a P3D file, it will analyze all the elements it contains (textures, shaders, sprites, sets, particle systems, skeletons, animations, intersections, etc.). Then, a window will appear with a message detailing how many elements contain errors and a detailed explanation of each error. If there are no errors, it will indicate that there are zero errors. This tool is useful so that modders don't have to guess and fix errors on their own. β­• βœ…

Pure3D File Merger
A utility to merge multiple Pure3D files into one, respecting hierarchies and avoiding conflicts. For instance, if there are two files with the same name (such as texture, sprite, or shader), they are merged into one; if there is a mesh or a static entity that is the same, both are kept and shared within the merged P3D. This is very useful for mods that require the integration of many resources. πŸ”³πŸ”²

Physics Editor
A tool to adjust the physics properties of Dyna Phys objects (mass, friction, etc.) contained in Pure3D files, with minimal modification to the source code. This is useful for mods that aim to change dynamic behaviors. πŸ”ΊπŸ”»

These are all the suggestions I've come up with while writing this. If you have any questions, I'm here to help. I hope my suggestions have been useful, and will make it a bit easier for modders to modify SHAR. Have a nice day πŸ˜‡
I'm Proddy, not Addy, but I appreciate the suggestions regardless.

File Validator: Worth looking into, I'll see what I can do.
File Merger: This is already a feature of the P3DTool linked in the OP.
Physics Editor: Might be a bit out of my wheelhouse, but I can certainly take a look.

Thanks,
Josh
I'm Proddy, not Addy
Thanks for correcting the name part, I wrote it quickly and got confused with the name. πŸ˜…
but I appreciate the suggestions regardless.
I hope my suggestions inspire you to implement them and that there are no complications. πŸ€—
Have a great day 😊