backwards compat

Changed: addCollisionDetail now has its fill mode at the end for easier backwards compat
This commit is contained in:
marauder2k7 2024-05-16 21:21:34 +01:00
parent 4b2165668f
commit 2132379b05
4 changed files with 26 additions and 27 deletions

View file

@ -936,8 +936,8 @@ DefineTSShapeConstructorMethod( addPrimitive, bool, ( const char* meshName, cons
return true;
}}
DefineTSShapeConstructorMethod( addCollisionDetail, bool, ( S32 size, const char* type, const char* target, const char* fillMode, S32 depth, F32 minPercentage, S32 maxHulls, S32 maxVerts, F32 boxMaxError, F32 sphereMaxError, F32 capsuleMaxError ), ( "bounds", "flood fill", 4, 10, 30, 32, 0, 0, 0),
( size, type, target, fillMode, depth, minPercentage, maxHulls, maxVerts, boxMaxError, sphereMaxError, capsuleMaxError ), false,
DefineTSShapeConstructorMethod( addCollisionDetail, bool, ( S32 size, const char* type, const char* target, S32 depth, F32 minPercentage, S32 maxHulls, S32 maxVerts, F32 boxMaxError, F32 sphereMaxError, F32 capsuleMaxError, const char* fillMode), ( "bounds", 4, 10, 30, 32, 0, 0, 0, "flood fill"),
( size, type, target, depth, minPercentage, maxHulls, maxVerts, boxMaxError, sphereMaxError, capsuleMaxError, fillMode), false,
"Autofit a mesh primitive or set of convex hulls to the shape geometry. Hulls "
"may optionally be converted to boxes, spheres and/or capsules based on their "
"volume.\n"
@ -946,7 +946,6 @@ DefineTSShapeConstructorMethod( addCollisionDetail, bool, ( S32 size, const char
"26-dop, convex hulls. See the Shape Editor documentation for more details "
"about these types.\n"
"@param target geometry to fit collision mesh(es) to; either \"bounds\" (for the whole shape), or the name of an object in the shape\n"
"@param fillMode method for filling the voxels in the volume (hulls only)\n"
"@param depth maximum split recursion depth (hulls only)\n"
"@param minPercentage volume % error threshold (hulls only)\n"
"@param maxHulls allowed to be generated (hulls only)\n"
@ -954,6 +953,7 @@ DefineTSShapeConstructorMethod( addCollisionDetail, bool, ( S32 size, const char
"@param boxMaxError max % volume difference for a hull to be converted to a box (hulls only)\n"
"@param sphereMaxError max % volume difference for a hull to be converted to a sphere (hulls only)\n"
"@param capsuleMaxError max % volume difference for a hull to be converted to a capsule (hulls only)\n"
"@param fillMode method for filling the voxels in the volume (hulls only)\n"
"@return true if successful, false otherwise\n\n"
"@tsexample\n"
"%this.addCollisionDetail( -1, \"box\", \"bounds\" );\n"

View file

@ -317,7 +317,7 @@ public:
const char* getImposterSettings(S32 index);
S32 addImposter(S32 size, S32 equatorSteps, S32 polarSteps, S32 dl, S32 dim, bool includePoles, F32 polarAngle);
bool removeImposter();
bool addCollisionDetail(S32 size, const char* type, const char* target, const char* fillMode = "flood fill", S32 depth = 4, F32 minPercentage = 10.0f, S32 maxHull = 30, S32 maxVerts = 32, F32 boxMaxError = 0, F32 sphereMaxError = 0, F32 capsuleMaxError = 0);
bool addCollisionDetail(S32 size, const char* type, const char* target, S32 depth = 4, F32 minPercentage = 10.0f, S32 maxHull = 30, S32 maxVerts = 32, F32 boxMaxError = 0, F32 sphereMaxError = 0, F32 capsuleMaxError = 0, const char* fillMode = "flood fill");
///@}
/// @name Sequences

View file

@ -2969,26 +2969,25 @@ function ShapeEdColWindow::update_onCollisionChanged( %this )
%targetId = %this-->colTarget.findText( getField( %colData, 1 ) );
%this-->colTarget.setSelected( %targetId, false );
%fillModeID = %this-->fillMode.findText( getField( %colData, 2 ) );
%this-->fillMode.setSelected( %fillModeID, false );
if ( %this-->colType.getText() $= "Convex Hulls" )
{
%this-->hullInactive.setVisible( false );
%this-->hullDepth.setValue( getField( %colData, 3 ) );
%this-->hullDepth.setValue( getField( %colData, 2 ) );
%this-->hullDepthText.setText( mFloor( %this-->hullDepth.getValue() ) );
%this-->hullMergeThreshold.setValue( getField( %colData, 4 ) );
%this-->hullMergeThreshold.setValue( getField( %colData, 3 ) );
%this-->hullMergeText.setText( mFloor( %this-->hullMergeThreshold.getValue() ) );
%this-->hullConcaveThreshold.setValue( getField( %colData, 5 ) );
%this-->hullConcaveThreshold.setValue( getField( %colData, 4 ) );
%this-->hullConcaveText.setText( mFloor( %this-->hullConcaveThreshold.getValue() ) );
%this-->hullMaxVerts.setValue( getField( %colData, 6 ) );
%this-->hullMaxVerts.setValue( getField( %colData, 5 ) );
%this-->hullMaxVertsText.setText( mFloor( %this-->hullMaxVerts.getValue() ) );
%this-->hullMaxBoxError.setValue( getField( %colData, 7 ) );
%this-->hullMaxBoxError.setValue( getField( %colData, 6 ) );
%this-->hullMaxBoxErrorText.setText( mFloor( %this-->hullMaxBoxError.getValue() ) );
%this-->hullMaxSphereError.setValue( getField( %colData, 8 ) );
%this-->hullMaxSphereError.setValue( getField( %colData, 7 ) );
%this-->hullMaxSphereErrorText.setText( mFloor( %this-->hullMaxSphereError.getValue() ) );
%this-->hullMaxCapsuleError.setValue( getField( %colData, 9 ) );
%this-->hullMaxCapsuleError.setValue( getField( %colData, 8 ) );
%this-->hullMaxCapsuleErrorText.setText( mFloor( %this-->hullMaxCapsuleError.getValue() ) );
%fillModeID = %this-->fillMode.findText( getField( %colData, 9 ) );
%this-->fillMode.setSelected( %fillModeID, false );
}
else
{

View file

@ -1055,18 +1055,17 @@ function ShapeEditor::doEditCollision( %this, %type, %target, %fillMode, %depth,
%action.oldType = getField( %colData, 0 );
%action.oldTarget = getField( %colData, 1 );
%action.oldFillMode = getField(%colData, 2);
%action.oldDepth = getField( %colData, 3 );
%action.oldMerge = getField( %colData, 4 );
%action.oldConcavity = getField( %colData, 5 );
%action.oldMaxVerts = getField( %colData, 6 );
%action.oldBoxMax = getField( %colData, 7 );
%action.oldSphereMax = getField( %colData, 8 );
%action.oldCapsuleMax = getField( %colData, 9 );
%action.oldDepth = getField( %colData, 2 );
%action.oldMerge = getField( %colData, 3 );
%action.oldConcavity = getField( %colData, 4 );
%action.oldMaxVerts = getField( %colData, 5 );
%action.oldBoxMax = getField( %colData, 6 );
%action.oldSphereMax = getField( %colData, 7 );
%action.oldCapsuleMax = getField( %colData, 8 );
%action.oldFillMode = getField(%colData, 9);
%action.newType = %type;
%action.newTarget = %target;
%action.newFillMode = %fillMode;
%action.newDepth = %depth;
%action.newMerge = %merge;
%action.newConcavity = %concavity;
@ -1074,6 +1073,7 @@ function ShapeEditor::doEditCollision( %this, %type, %target, %fillMode, %depth,
%action.newBoxMax = %boxMax;
%action.newSphereMax = %sphereMax;
%action.newCapsuleMax = %capsuleMax;
%action.newFillMode = %fillMode;
%this.doAction( %action );
}
@ -1095,9 +1095,9 @@ function ActionEditCollision::updateCollision( %this, %type, %target, %fillMode,
if ( %type $= "" )
return;
if ( !ShapeEditor.shape.addCollisionDetail( %colDetailSize, %type, %target, %fillMode,
if ( !ShapeEditor.shape.addCollisionDetail( %colDetailSize, %type, %target,
%depth, %merge, %concavity, %maxVerts,
%boxMax, %sphereMax, %capsuleMax ) )
%boxMax, %sphereMax, %capsuleMax, %fillMode) )
return false;
// Update UI
@ -1107,8 +1107,8 @@ function ActionEditCollision::updateCollision( %this, %type, %target, %fillMode,
for ( %i = 0; %i < %count; %i++ )
ShapeEdPropWindow.update_onMeshAdded( getField( %meshList, %i ) );
ShapeEdColWindow.lastColSettings = %type TAB %target TAB %fillMode TAB %depth TAB %merge TAB
%concavity TAB %maxVerts TAB %boxMax TAB %sphereMax TAB %capsuleMax;
ShapeEdColWindow.lastColSettings = %type TAB %target TAB %depth TAB %merge TAB
%concavity TAB %maxVerts TAB %boxMax TAB %sphereMax TAB %capsuleMax TAB %fillMode ;
ShapeEdColWindow.update_onCollisionChanged();
return true;