凡エラー
変数nFloorが0〜2の間にあることを確かめるコードのはずが……
SE_ASSERT_RETURNVALUE( nFloor >= 0 && 0 < 3, false );
意図的に
_ASSERT( false );
とかすることはあるけど、ミスって書いてしまうとは情けない。ちなみにアサーションマクロの定義ですが、
#define SE_FILELINE "(%s [%d])\n", __FILE__, __LINE__ #define SE_ASSERT_RETURNVALUE(b,r)\ if( !(b) ){ \ SEError( SE_FILELINE ); \ _ASSERT( 0 ); \ return (r); \ }
というようにしています。基本はエラーが起こった場所をログに書き出して、デバッグビルド時にはデバッガで引っかかるようにして、リリースビルド時には何らかの異常を示す戻り値を返してます。