mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Merge pull request #107 from DavidWyand-GG/issue106-ConvexShapeBandwidth
For for Issue #106 Convex Shape Bandwidth
This commit is contained in:
commit
e363c6ebc6
|
|
@ -367,7 +367,14 @@ void ConvexShape::writeFields( Stream &stream, U32 tabStop )
|
|||
|
||||
stream.write(2, "\r\n");
|
||||
|
||||
for ( U32 i = 0; i < mSurfaces.size(); i++ )
|
||||
S32 count = mSurfaces.size();
|
||||
if ( count > smMaxSurfaces )
|
||||
{
|
||||
Con::errorf( "ConvexShape has too many surfaces to save! Truncated value %d to maximum value of %d", count, smMaxSurfaces );
|
||||
count = smMaxSurfaces;
|
||||
}
|
||||
|
||||
for ( U32 i = 0; i < count; i++ )
|
||||
{
|
||||
const MatrixF &mat = mSurfaces[i];
|
||||
|
||||
|
|
@ -423,12 +430,18 @@ U32 ConvexShape::packUpdate( NetConnection *conn, U32 mask, BitStream *stream )
|
|||
if ( stream->writeFlag( mask & UpdateMask ) )
|
||||
{
|
||||
stream->write( mMaterialName );
|
||||
|
||||
const U32 surfCount = mSurfaces.size();
|
||||
|
||||
U32 surfCount = mSurfaces.size();
|
||||
stream->writeInt( surfCount, 32 );
|
||||
|
||||
for ( S32 i = 0; i < surfCount; i++ )
|
||||
mathWrite( *stream, mSurfaces[i] );
|
||||
for ( S32 i = 0; i < surfCount; i++ )
|
||||
{
|
||||
QuatF quat( mSurfaces[i] );
|
||||
Point3F pos( mSurfaces[i].getPosition() );
|
||||
|
||||
mathWrite( *stream, quat );
|
||||
mathWrite( *stream, pos );
|
||||
}
|
||||
}
|
||||
|
||||
return retMask;
|
||||
|
|
@ -462,7 +475,14 @@ void ConvexShape::unpackUpdate( NetConnection *conn, BitStream *stream )
|
|||
mSurfaces.increment();
|
||||
MatrixF &mat = mSurfaces.last();
|
||||
|
||||
mathRead( *stream, &mat );
|
||||
QuatF quat;
|
||||
Point3F pos;
|
||||
|
||||
mathRead( *stream, &quat );
|
||||
mathRead( *stream, &pos );
|
||||
|
||||
quat.setMatrix( &mat );
|
||||
mat.setPosition( pos );
|
||||
}
|
||||
|
||||
if ( isProperlyAdded() )
|
||||
|
|
|
|||
|
|
@ -141,6 +141,10 @@ public:
|
|||
|
||||
static bool smRenderEdges;
|
||||
|
||||
// To prevent bitpack overflows.
|
||||
// This is only indirectly enforced by trucation when serializing.
|
||||
static const S32 smMaxSurfaces = 100;
|
||||
|
||||
public:
|
||||
|
||||
ConvexShape();
|
||||
|
|
|
|||
|
|
@ -871,10 +871,17 @@ void GuiConvexEditorCtrl::renderScene(const RectI & updateRect)
|
|||
text = "Scale face.";
|
||||
}
|
||||
}
|
||||
|
||||
// Issue a warning in the status bar
|
||||
// if this convex has an excessive number of surfaces...
|
||||
if ( mConvexSEL && mConvexSEL->getSurfaces().size() > ConvexShape::smMaxSurfaces )
|
||||
{
|
||||
text = "WARNING: Reduce the number of surfaces on the selected ConvexShape, only the first 100 will be saved!";
|
||||
}
|
||||
|
||||
Con::executef( statusbar, "setInfo", text.c_str() );
|
||||
|
||||
Con::executef( statusbar, "setSelectionObjectsByCount", Con::getIntArg( mConvexSEL == NULL ? 0 : 1 ) );
|
||||
Con::executef( statusbar, "setSelectionObjectsByCount", Con::getIntArg( mConvexSEL == NULL ? 0 : 1 ) );
|
||||
}
|
||||
|
||||
if ( mActiveTool )
|
||||
|
|
|
|||
Loading…
Reference in a new issue