凡エラー

変数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); \
  }

というようにしています。基本はエラーが起こった場所をログに書き出して、デバッグビルド時にはデバッガで引っかかるようにして、リリースビルド時には何らかの異常を示す戻り値を返してます。