Version 4 Branch
Changelog
General
- Improved memory management.
- Made the Pure3D Editor support .NET 4.0 and use it if it's available.
- .NET 4.0 is installed by default on Windows 8 and newer.
- .NET 3.5 is installed by default on Windows 7.
- This means the Pure3D Editor should no longer require a version of .NET that isn't installed by default on Windows 7 or newer.
- Windows XP and Windows Vista users can install .NET 3.5 or .NET 4.0 to run the Pure3D Editor.
- Windows 7 users can optionally install .NET 4.0.
- You can delete "Lucas Pure3D Editor 4.exe.config" out of the folder to opt out of this change.
- Made the Pure3D Editor support running in Mono within Wine on Linux.
- Made the Pure3D Editor show a message and refuse to start if it's not running in a Windows environment (such as Mono on Linux but not within Wine).
- Made the Pure3D editor run as 64-bit on 64-bit Windows.
- 32-bit Windows is still supported.
- Fixed an issue where Vertex Type Unknown on Old Primitive Group chunks had the wrong value by default (false) when importing.
- Fixed an issue with integer text boxes and negative signs on some locales.
- Fixed an issue with integer up/downs and decimal separators on some locales.
- Fixed an issue with numeric text boxes and decimal separators and negative signs on some locales.
Editors
General
- Added a refresh button to all editors when using the experimental Edit In New Window feature.
- Fixed an issue where Go To buttons on resource pickers with empty resources were not disabled when first opening the program.
- This caused a crash if you were to click one in this circumstance.
Car Camera Data Editor
- Made this editor support the experimental Edit In New Window feature.
- Renamed this editor to "Follow Camera Data Editor" when not using legacy names.
Tools
General
- Made the Find References tool support finding references to shaders in Old Sprite Emitter chunks.
- Added the ability to create Trigger Volume chunks from Edit and right click menus.
- Added a Wrap Around tickbox to the Find tool.
Import All Static Entity Models XML...
Added this new tool.
Convert To Shop Preview
- Added a confirmation message to this tool.
- Fixed an issue where not all parts of the program were aware that the PDDI shader value on Shader chunks changed after using this tool.
Make Wireframe
- Renamed this tool to "Convert to Wireframe".
- Added a confirmation message to this tool.
- Fixed an issue where not all parts of the program were aware that Index List chunks changed after using this tool.
P3DXML
- Made it so all the Import All P3DXML tools handle errors in P3DXML files.
- Fixed an issue where you could not import or export Road Rage Grid chunks or files containing them.
- Made it so chunks no longer get automatically expanded when importing P3DXML files.
Changelog
General
- Added the Ctrl+N hotkey for "File > New".
- Added the Ctrl+O hotkey for "File > Open...".
- Made the open file dialogue used for "File > Open..." default to the directory containing the currently loaded P3D file (if one is loaded).
- Made the program set its working directory to the directory containing its executable when starting it with a command line argument to open a file.
- One such case where this change makes a difference is when opening a file associated with the program. In that case, it makes it so the program doesn't keep the folder that file is in in use.
- Fixed an issue where "Vertex Type Unknown" was not set when loading a Primitive Group (0x10020) chunk.
- Fixed an issue where changing "Number of Strings" on a Frontend Language (0x1800E) chunk to a higher number would cause a crash and to a lower number would corrupt the chunk.
- Added more name mappings for hashes found in Frontend Language (0x1800E) chunks.
- LEFTMOUSE
- RIGHTMOUSE
- MIDMOUSE
- LEFTSHOULDER
- RIGHTSHOULDER
- SIDELEFT
- SIDERIGHT
- Made importing over a Sprite (0x19005) chunk preserve the Image Width and Image Height being 0 if they're already 0.
- Made it so string padding warnings related to the "Shader" value on Sprite (0x19005) and Texture Font (0x22000) chunks are now messages instead.
- This means these no longer show a message box and get highlighted in orange, instead they'll just be highlighted in yellow with a message in the Value Editor.
- Various performance improvements.
Editors
Frontend Language Editor
Made this editor support editing text strings by double clicking them.
Texture Font Editor
Added support for viewing characters that ignore the text color specified by the game. These are used for button symbols in the game Scarface: The World is Yours.
Tools
General
Added the following new tools for working with P3DXML files:
- Import All Fence (0x3F00007)...
- Removes all existing Fence (0x3F00007) chunks and adds the ones from the input P3DXML to the end of the file.
- Export All Fence (0x3F00007)...
- Exports all Fence (0x3F00007) chunks to P3DXML.
- Import All Roads...
- Removes all existing Road (0x3000003), Road Data Segment (0x3000009) and Intersection (0x3000004) chunks and imports the ones from the input P3DXML before the
darrowandwarrowAnim (0x3F0000C) chunks. - If neither of those chunks exist, the new chunks are added to the end of the file.
- Removes all existing Road (0x3000003), Road Data Segment (0x3000009) and Intersection (0x3000004) chunks and imports the ones from the input P3DXML before the
- Export All Roads...
- Exports all Road (0x3000003), Road Data Segment (0x3000009) and Intersection (0x3000004) chunks in the file to P3DXML.
- Import All Path (0x300000B)...
- Removes all existing Path (0x300000B) chunks and adds the ones from the input P3DXML to the end of the file.
- Export All Path (0x300000B)...
- Exports all Path (0x300000B) chunks to P3DXML.
Offset Positions...
Made this tool support the following chunk types:
- Mesh (0x10000)
- Old Primitive Group (0x10002)
- Bounding Box (0x10003)
- Bounding Sphere (0x10004)
- Position List (0x10005)
Export Language...
- Fixed a bug where this tool did not tell the INI writer to escape strings with hashes.
- This was necessary as hashes are supported for comments in INI files used by CustomText in the Mod Launcher.
- Made strings beginning or ending with a
"get escaped.
Import Language...
Added this new tool to import an INI file over Frontend Language (0x1800E) chunks.
Copy Car...
Made this tool also copy the BV Collision Object (0x7010000) and Physics Object (0x7011000) chunks.
P3DXML
- Made the program remember if a loaded P3DXML file was in the "Pure3DFile" or "Pure3DChunk"/"Pure3DChunks" format and preserve this when saving it.
- This does not apply to exporting, only saving.
- Changed it so Type 5 Zone Event Locator (0x3000005) chunks with extra garbage data after the null terminator at the end of their
DynaLoadDatastrings are exported with an additionalDataattribute that contains the entireDynaLoadDatastring as well as that garbage data as Base64 instead of including it in theValueattribute.- This is because it is apparently not valid to include null terminators in XML strings and certain parsers that respect this part of the standard (such as Python's) refused to load files containing these (such as L2_TERRA).
- When present, the
Dataattribute is only used when importing a file if theValueattribute contains equivalent data. - This attribute is only so the editor can preserve the exact state of the chunk and it's generally not recommended that you read or write it yourself.
- Made it so "Saved with Lucas' Pure3D Editor VERSION" comments are now included at the start of exported P3DXML files.
- We recommend other people creating tools that export these files include their own comments indicating that it was saved with their tool.
- Please do not indicate your files were created with the Pure3D Editor in your own tools.
- Fixed a bug where chunks with a display name that contained 2 consective dashes (-) or ended in a dash would make exporting fail.
- Display name comments that would have contained 2 consecutive dashes are now omitted.
- Display name comments that would have ended in a dash now have a space appended to the end.
- One file that was affected by this was
art\frontend\scrooby\frontend.p3d.
Changelog
- Fixed an issue on various chunk editors where changes to certain fields would not be saved until they were defocused.
- This means if you change these values and save the file without defocusing the field, your changes would not actually be saved.
- This issue applied to the following editors:
- Trigger Volume Editor
- Half Extents X/Y/Z
- Locator Editor
- Type 7 Locators
- Right/Up/Front X/Y/Z
- Type 12 Locators
- Target Position X/Y/Z
- Field of View
- Type 7 Locators
- Trigger Volume Editor
- Added the Export All Static Entity Models XML tool to the Tools menu.
- Added the ability to import and export Static Entity chunks as Model XML files directly.
- Previously, you had to import or export the Mesh chunk inside it.
- Fixed an issue where a Skeleton Joint being parented to a child of itself would cause the program to freeze.
- Fixed an issue where a Skeleton Joint being parented to a non-existent Parent would cause an exception when selecting the Skeleton or Composite Drawable.
- Made the Skeleton Hierarchy Viewer show invalid skeleton joints on the end of the list, highlighted in red.
- Examples of invalid Skeleton Joints include:
- A joint parented to a joint located after it in the Skeleton.
- A joint parented to a non-existent joint.
- A joint parented to a child of itself.
- Examples of invalid Skeleton Joints include:
- Updated the tool's copyright year to 2020.
- Added the Flip Fence Normal and Update Fence Normal tools to the right click menu on Fence and Fence 2 chunks.
- The normal determines the side of the fence that is collidable so these tools make it easy to set it to something valid.
- The Flip tool inverts the direction of the normal.
- The Update tool adjusts it to be something valid and should be used after moving the start or end position of the fence.
- You may need to flip it after doing this to have it be the direction you want.
- Added the Flip All Fence Normals and Update All Fence Normals tools to the Tools menu.
- These ones are similar to the previous tools except they apply to every Fence in the file.
- Fixed an issue where the tool did not preserve incorrect header sizes in Physics Object chunks when saving.
- This meant opening some of Radical's original files and saving without making any changes would result in Radical's invalid data being corrected. This critical flaw has now been fixed.
- This affected the following chunks:
- l1r1.p3d
- l1_hedgeunit_Shape
- l1r2.p3d
- l1_hedgeunit_Shape
- l1z2.p3d
- l1_benchold_Shape
- l2z4.p3d
- l2_popsicle_Shape
- l2_shrubsml_Shape
- l3z4.p3d
- l3_krustyglasspost_Shape
- l4r1.p3d
- l4_hedgeunit_Shape
- l4r2.p3d
- l4_hedgeunit_Shape
- l4r7.p3d
- l4r7_cemgravei_Shape
- l4r7_cemtreeb_Shape
- l5z4.p3d
- l5_shrubsml_Shape
- l6z4.p3d
- l3_krustyglasspost_Shape
- l7r1.p3d
- l7_hedgeunit_Shape
- l7r2.p3d
- l7_hedgeunit_Shape
- l1r1.p3d
- Also added an Incorrect Header Size boolean to Physics Object chunks that can be toggled with the Value Editor, in case you want to opt into this for some reason.
- It should be noted that the game doesn't care if the header size is wrong on these chunks.
- Fixed an issue where the tool did not preserve random data after the null terminator at the end of Dyna Load Data strings in Type 5 locator chunks.
- This change and the previous one means that saving any of Radical's original uncompressed P3D files should result in exactly the same file.
- Added the Vertex Type Unknown boolean to the Value Editor on Old Primitive Group chunks.
- This toggles whether or not the Unknown flag is set in the chunk's Vertex Type.
- This flag is generally not present in The Simpsons Road Rage while it seems to be present in The Simpsons Hit & Run.
- This change also results in the presence of the flag being preserved when saving the file.
- Previous versions of the tool would just force the flag to be set.
- This toggles whether or not the Unknown flag is set in the chunk's Vertex Type.
- Added ellipses to the names of the following tools:
- Import Model...
- Export Model...
- Export All Static Entity Models...
- Export All Road Rage World Models...
- Export Model XML...
- Import Model XML...
- Export All Intersects...
- Import All Intersects...
- Export Language...
- Import Project...
- Import Screen...
- Import Page...
- Export Project...
- Export Screen...
- Export Page...
- Import Intersect...
- Export Intersect...
- Import Image...
- Export Image...
- Export All Textures...
- Export All Sprites...
- Change Game Path...
- Edit Rotation...
- Edit Position...
- Offset Positions...
- Added the ability to import and export entire P3D files and individual chunks as Lucas' Pure3D Editor Pure3D XML files (.p3dxml).
- You can import and export the entire file from the Tools menu or by right clicking the root chunk.
- This gives you the option to append chunks onto the end of the file or replace the contents of the file entirely.
- You can import and export individual chunks by right clicking them in the hierarchy.
- This gives you the option to import before and after a chunk as well as the option to replace it.
- This format contains all of the data in the P3D file.
- This means you can export a file then import it again to get the exact same file.
- Also added the ability to open, edit and save as this format just like P3D files.
- You can import and export the entire file from the Tools menu or by right clicking the root chunk.
- Renamed the Import Model and Export Model tools to "Import Model OBJ" and "Export Model OBJ" respectively.
- Renamed the Export All Static Entity Models tool to "Export All Static Entity Models OBJ".
- Moved some items that were previously in the Tools menu to the a new Settings menu:
- Keep Shared Resources Loaded For Previews
- Change Game Path...
- Add History Chunks When Saving
- Removed the empty data value from Export Info chunks.
- Added support for viewing and editing the data inside Export Info Named String and Export Info Named Integer chunks with the Value Editor.
- Fixed a bug where the Copy Car tool was completely broken since its introduction in Version 4.0 in 2015.
- This was an issue that went seemingly unnoticed for four years.
- Added "Experimental" to the name of the Edit In New Window tool.
- This feature is and always has been experimental.
- Disabled the Edit In New Window feature on Follow Camera Data chunks.
- This is because its broken in several different ways when used on these chunks.
- This might be addressed in a future update.
- Renamed several values on Road chunks.
- Unknown 2 > Speed
- Unknown 3 > Intelligence
- No Reset > Shortcut
- Supports the Use Legacy Names setting.
- Made the Find References tool support Intersection chunks and Road Data Segment chunks.
- Made it so double clicking boolean values in the Value Editor will toggle between true and false.
- Added an Update Bounds tool to the right click menu on Mesh and Skin chunks.
Changelog
This update fixes an issue introduced in 4.2.1 where pasting chunks would cause any subsequent updates to the tree view to be significantly slower than usual.
This could cause the updates to take so long that the program would freeze for a prolonged amount of time or possibly even indefinitely in some cases.
This was particularly problematic when editing large files with "Show Chunk Indices" enabled.
Changelog
- Added "New > History" to the "Edit" menu and the right click menu of the tree view.
- This is only available when "View > Show Advanced Chunks" is enabled.
- Fixed a typo on "Sound Resource Data Name" when viewing ATC chunks.
- Made it so file/folder browse dialogues fall back to Windows XP style versions in the event the Pure3D Editor or .NET fail to create Windows Vista style dialogues.
- This resolves an issue where this happened on Windows 10 1809 when using a High Contrast theme.
- This was also able to happen on Windows 7 with "Disable visual themes" ticked in the executable's compatibility settings.
- Made it so "Add History Chunks When Saving" defaults to disabled.
- These are stripped out of non-decompilable mods by default.
- These are not visible when "Show Advanced Chunks" is off, in case you've never seen these.
- Made it so the History Chunk Editor only updates the chunk data when defocusing the text field (instead of immediately when typing into it).
- Made it so modifying a history chunk will also update the display name for the chunk in the tree view.
- Made it so the Pure3D Editor will attempt to recover from unhandled exceptions in various cases.
- Examples include:
- When making changes to chunks.
- When saving a file.
- It should also no longer write invalid files if an exception occurs when writing the file.
- When updating chunk editors.
- When updating tools.
- When updating the tree view of chunks.
- It is still strongly recommended that in the event of an exception, you use "Save As..." to save your current file to a different location and verify that it still appears to be valid.
- Examples include:
- Made it so the Vertex Type in Old Primitive Group chunks get updated automatically when removing lists such as Colour Lists from inside them.
- In some cases, the game might not like certain lists not existing. This just means that the file will be valid now at least.
- Loading files that were broken as a result of doing this in an older version of the Pure3D Editor and saving them in this version will fix them.
Changelog
- Added a "Two Sided" tickbox to the "Shader Editor".
- Added the "Add Black Magic" tool back to the tools menu that was previously removed in version 4.0.3.
- It now only shows up if you have "View > Show Advanced Chunks" enabled as Black Magic chunks are Advanced.
- It also removes all existing Black Magic chunks before adding new ones.
- The name changed from "Add Magic" since the chunk type was renamed since then.
- The name also now "(Road Rage)" on the end as these chunks are specific to The Simpsons Road Rage.
- Added the "Export All Intersect" and "Import All Intersect" tools.
- These tools export and import all intersects in a file to/from OBJ files.
- These files contain OBJ groups that are separated by surface type.
- To maintain these, you must make sure you're re-exporting the file with OBJ Groups in your 3D modelling software.
- In Blender, you would want to make sure this is ticked.
- The Export tool is only shown if the loaded file contains "Intersect" chunks.
- The Import tool will remove all intersects in the file and create new ones on the end of the file that are split to fit the standard tree node size.
- You should keep the original mesh you import somewhere due to the fact it gets split every time you import it.
- These tools export and import all intersects in a file to/from OBJ files.
- Made the "Edit Rotation" tool supported on "Camera" chunks. This might not be useful given that cameras usually have accompanying animations. ¯_(ツ)_/¯
- Made the Model XML format support alpha for Shaders and Vertex Colours.
- Updated the tool's copyright year to 2019.
Changelog
- Added the "Teleport To In Game" tool on Locator chunks. This allows you to teleport to the position of the locator. This works with 1.17.1 or newer of the Mod Launcher.
- Fixed a crash when pasting some Frontend pages.
Changelog
- Added new Filter Modes to the Filter Mode dropdown on the Shader editor.
- Nearest Neighbour, Mip Nearest Neighbour
- Linear, Mip Nearest Neighbour
- Linear, Mip Linear
- Made it so Shaders with the Nearest Neighbour, Mip Nearest Neighbour filter modes display more correctly in 3D views.
- Updated the Value Editor to support the following chunk types:
- Light
- Light Position
- Light Direction
- Light Shadow
- Old Scenegraph Light Group
Changelog
- Fixed a crash when copying or cutting a chunk that happened on occasion.
- Fixed a crash when exporting meshes/skins with no UV list.
- Fixed a crash when exporting if an Old Primitive Group references a Shader that doesn't exist.
- Fixed an issue where the Visible value inside State Prop VIsibilites Data was treated as a block of data instead of an Integer.
- Fixed an issue where Set chunks (Random Textures) were removed when using the Convert to Shop Preview tool.
- Updated the Edit Rotation tool to be supported on Skeleton Joint chunks.
- Updated the Frontend Viewer to respect the Native X and Native Y values of Sprite chunks.
- Updated the Locator Editor and the Value Editor to show Event and Parameter instead of Unknown and Unknown 2 on Type 0 locators.
- Updated the model chunk viewer to show environment maps on Skin chunks with a Version other than 3.
- Updated the Import Model XML tool to ignore weights of 0.
- Updated the names of various Chunk types and Chunk values to Radical's official names. If you'd like, you can enable View > Use Legacy Names to use the old names.
- Added a name for Animated Object Animation chunks.
- Added a name for Animated Object Factory chunks.
- Added a name for Collision Wall chunks.
- Added a name for Lens Flare chunks.
- Renamed Breakable Drawable to Anim Obj Wrapper.
- Renamed Breakable Drawable 2 to Anim Dyna Phys Wrapper.
- Renamed Breakable World Prop to Dyna Phys.
- Renamed Breakable World Prop 2 to Anim Dyna Phys.
- Renamed Cube Shape to Road Data Segment.
- Renamed Dynamic World Mesh to Anim Coll.
- Renamed Explosion Effect Type to Breakable Object.
- Renamed Type to Index.
- Renamed Unknown to Count.
- Renamed Car Camera Data to Follow Camera Data.
- Renamed Ground Collision to Intersect.
- Renamed Ground Collision 2 to Intersect Mesh.
- Renamed Ground Collision 3 to Intersect Mesh 2.
- Renamed Intersection Locator Node to Intersection.
- Renamed Start Intersection Locator Node to Start Intersection.
- Renamed End Intersection Locator Node to End Intersection.
- Renamed Locator to Locator 3.
- Renamed Locator 2 to Locator.
- Renamed Locator 3 to Locator 2.
- Renamed Locator 2 Matrix to Locator Matrix.
- Renamed Old Particle System to Particle System Factory.
- Renamed Particle Emitter Type to Inst Particle System.
- Renamed Particle System 2 to Particle System.
- Renamed Ped Node to Path.
- Renamed Prop Instance List to Instance List.
- Renamed Random Texture to Set.
- Renamed Road Node to Road.
- Renamed Road Node 2 to Road 2.
- Renamed Road Node Segment to Road Segment.
- Renamed Cube Shape to Road Data Segment.
- Renamed Sector to Tree Node 2.
- Renamed Sector Container to Tree Node.
- Renamed Axis to Split Axis.
- Renamed Position to Split Position.
- Renamed Static World Mesh Limit to Static Entity Limit.
- Renamed Static World Prop Limit to Static Phys Entity Limit.
- Renamed Ground Collision Limit to Intersect Entity Limit.
- Renamed Characters, Cars and Breakable World Prop Limit to Dyna Phys Entity Limit.
- Renamed Wall Collision Limit to Fence Entity Limit.
- Renamed Road Node Segment Limit to Road Segment Entity Limit.
- Renamed Ped Node Segment Limit to Path Segment Entity Limit.
- Renamed World Mesh Limit to Anim Entity Limit.
- Renamed Sector List to Tree.
- Renamed World Bounds Maximum to Maximum.
- Renamed World Bounds Minimum to Minimum.
- Renamed Static Collisionless World Prop to Inst Stat Entity.
- Renamed Static Mesh Collision to Static Phys.
- Renamed Static World Mesh to Static Entity.
- Renamed Static World Prop to Inst Stat Phys.
- Renamed Trigger to Trigger Volume.
- Renamed Trigger 2 to Trigger Volume 2.
- Renamed Wall Collision to Fence 2.
- Renamed Wall Collision Container to Fence.
- Renamed World Effect to Particle System 2.
- Renamed World Mesh to Anim.
- Renamed World Sky to World Sphere.
- Updated ATC.
- Renamed Unknown to Classtype Identifier.
- Renamed Unknown 2 to ATC Entry.
- Updated the Value Editor to support the following chunk types:
- Animated Object Animation
- Animated Object Factory
- State Prop Callback Data
- State Prop Event Data
- State Prop Frame Controller Data
- State Prop State Data V1
Changelog
- Added support for creating Type 0 and Type 2 locators in the right click menu.
- Removed the warning when saving a P3D file that was compressed.
- Made the Offset Positions tool work on Skeleton Joint chunks and Collision Vector chunks.
- The diffuse color is ignored if lighting is disabled in the 3D view.
- Renamed Magic chunks to Black Magic.