-
Increased form
ClientSize -
Expanded
TableLayoutPanel -
Repositioned
OKbutton -
RichTextBox:- set to
ReadOnly = true - replaced
Dock = Fill→Anchor(responsive resizing) - increased size
- set to
-
Increased
Labelwidth -
Removed
FormBorderStyle = FixedDialog
-
Added
nullcheck before reading:if (node != null)
Tagis now read only if the node exists- Fixed potential
NullReferenceException
Important
Crashes caused by missing nodes and invalid data have been eliminated.
-
Added bounds protection:
maxLength = Math.Max(0, Math.Min(maxLength, data.Length - startIndex));
-
Fixed possible
ArgumentOutOfRangeException -
Stabilized behavior for corrupted data
Caution
Previously, invalid binary data could cause application crashes.
-
Added:
ImportTexturesAllDdsImportTexturesDdsAndTga
-
Support for
.ddsand.tga -
Updating existing textures without duplication
-
Name normalization (
NormalizeNodeName) -
MIP-level handling:
ExtractMipLevelNameGetMipLevel
-
Texture grouping
ExportAllTexturesmanifest.jsongeneration- Config merge support
Tip
Enables centralized texture resource management.
-
Added
DDS_SIZE_LIMIT -
Fully rewritten:
private Bitmap[] ReadDDS(byte[] data)
Important
Fixed issues with loading corrupted DDS files.
- Added:
DuplicateVerticesAndCalcNormalsAndTangentsComputeTangentBasisDuplicateVerticesAndCalculateTangentsAndUpdateMeshEntries
Vec2,Vec3VertexNeighboursNormalGroupVerticeEdges
Tip
Provides proper tangent generation for normal mapping.
MakeSureMeshesAreSequential
Ensures:
- sequential vertex layout
- no overlaps
- correct offsets
-
Recalculated:
VertexOffsetMaxVertNoPlusOneNoVertices
-
Rebinding of indices
-
Added:
VerifyModelData()
Validates:
- vertex ranges
- triangle indices
VMeshRefVWireData
Warning
Invalid models are now detected before use.
- Added:
ImportHardpointsFromTHNExportHardpointsToTHNBuildImportedHardpoints
RescaleModel
Supports:
VMeshDataVMeshRefHardpoints
- Improved
NodeChanged:- automatic CRC update
- hardpoint synchronization
- observer notification
ReplaceAll
Supports:
- node names
- content
- partial / exact match
-
Added:
DrawNormals()
-
Uses:
DrawUserPrimitives(LineList)
-
displayVerticeNormalsToolStripMenuItem -
Trigger:
CheckedChanged → Render()
Tip
Enables visual analysis of geometry and lighting.
-
Added override:
device.SetTextureStageState(0, TextureStage.ColorOperation, SelectArg2);
-
Texture disabling in debug mode
- Limited to 3 parent levels
-
Traverses up to root:
while (...) Directory.GetParent(...)
Important
Textures are now reliably found regardless of directory depth.
- Removed:
TangentW
-
Replaced
switchwith bitmask logic (if) -
Usage:
FlexibleVertexFormat & D3DFVF_*
- Updated supported formats
- Removed unused ones
- Added missing ones
Warning
May introduce incompatibility with older binary data.
-
Added flags:
hasNormals hasDiffuse fvfTexCount
-
Parsing via:
switch(fvfTexCount)
- Rewritten
GetRawData() - Now depends on:
hasNormalshasDiffusefvfTexCount
- Added checks for:
- empty
parent - out-of-bounds access
child == ""data == null
- empty
Caution
Invalid data is now handled safely instead of causing crashes.
- Improved hardpoint editing
- Various fixes and improvements
-
Reads model materials from parent directories
-
Automatically expands root node
-
Displays
.3dband.sphmodels -
Shows model scale as a numeric value
-
UI improvements:
- removed shortcut keys from context menu
- added accelerator keys
- added rename button
-
Ability to define model center point
- Added animation channel editor
- Automatic CRC update for
VMeshRefwhen renamingVMeshData - Added live-updating model viewer for
Pris / Rev / Fix - Added
VMeshRefeditor - Added yaw/pitch/roll interpreter for Fix (limited accuracy)
- Full support for all FVF formats
- Improved Euler angle conversions
- Add
.tga/.ddsviewer - Add hardpoint viewer/editor
- Improve mouse-based center movement