2
0
Эх сурвалжийг харах

Merge pull request #1569 from Azaezel/alpha41/GuiShapeEdPreviewSafeties

add safeties for  GuiShapeEdPreview animthread
Brian Roberts 2 долоо хоног өмнө
parent
commit
4c1981194a

+ 8 - 8
Engine/source/gui/editor/guiShapeEdPreview.cpp

@@ -256,7 +256,7 @@ bool GuiShapeEdPreview::setFieldSunAngleZ( void *object, const char *index, cons
 bool GuiShapeEdPreview::setFieldThreadPos( void *object, const char *index, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) && gui->mThreads[gui->mActiveThread].key )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) && gui->mThreads[gui->mActiveThread].key )
       gui->mModel->setPos( gui->mThreads[gui->mActiveThread].key, dAtof( data ) );
    return false;
 }
@@ -264,7 +264,7 @@ bool GuiShapeEdPreview::setFieldThreadPos( void *object, const char *index, cons
 const char *GuiShapeEdPreview::getFieldThreadPos( void *object, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) && gui->mThreads[gui->mActiveThread].key )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) && gui->mThreads[gui->mActiveThread].key )
       return Con::getFloatArg( gui->mModel->getPos( gui->mThreads[gui->mActiveThread].key ) );
    else
       return "0";
@@ -273,7 +273,7 @@ const char *GuiShapeEdPreview::getFieldThreadPos( void *object, const char *data
 bool GuiShapeEdPreview::setFieldThreadDir( void *object, const char *index, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) )
    {
       Thread& thread = gui->mThreads[gui->mActiveThread];
       Con::setData( TypeS32, &(thread.direction), 0, 1, &data );
@@ -286,7 +286,7 @@ bool GuiShapeEdPreview::setFieldThreadDir( void *object, const char *index, cons
 const char *GuiShapeEdPreview::getFieldThreadDir( void *object, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) )
       return Con::getIntArg( gui->mThreads[gui->mActiveThread].direction );
    else
       return "0";
@@ -295,7 +295,7 @@ const char *GuiShapeEdPreview::getFieldThreadDir( void *object, const char *data
 bool GuiShapeEdPreview::setFieldThreadPingPong( void *object, const char *index, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) )
       Con::setData( TypeBool, &(gui->mThreads[gui->mActiveThread].pingpong), 0, 1, &data );
    return false;
 }
@@ -303,7 +303,7 @@ bool GuiShapeEdPreview::setFieldThreadPingPong( void *object, const char *index,
 const char *GuiShapeEdPreview::getFieldThreadPingPong( void *object, const char *data )
 {
    GuiShapeEdPreview* gui = static_cast<GuiShapeEdPreview*>( object );
-   if ( gui && ( gui->mActiveThread >= 0 ) )
+   if ( gui && (gui->mThreads.size() && gui->mActiveThread >= 0 ) )
       return Con::getIntArg( gui->mThreads[gui->mActiveThread].pingpong );
    else
       return "0";
@@ -478,7 +478,7 @@ void GuiShapeEdPreview::setTimeScale( F32 scale )
 
 void GuiShapeEdPreview::setActiveThreadSequence(const char* seqName, F32 duration, F32 pos, bool play)
 {
-   if ( mActiveThread == -1 )
+   if ( mActiveThread == -1 || mThreads.empty())
       return;
 
    setThreadSequence(mThreads[mActiveThread], mModel, seqName, duration, pos, play);
@@ -533,7 +533,7 @@ void GuiShapeEdPreview::setThreadSequence(GuiShapeEdPreview::Thread& thread, TSS
 
 const char* GuiShapeEdPreview::getThreadSequence() const
 {
-   return ( mActiveThread >= 0 ) ? mThreads[mActiveThread].seqName.c_str() : "";
+   return ( mActiveThread >= 0 && mThreads.size()) ? mThreads[mActiveThread].seqName.c_str() : "";
 }
 
 void GuiShapeEdPreview::refreshThreadSequences()