AIStateMachine fixes.
Things (one debug code only) that don't happen currently, but that I ran into with AIMultiGrid.
This commit is contained in:
@@ -700,6 +700,10 @@ void AIStateMachine::multiplex(event_type event)
|
||||
// Mark that we're added to this engine, and at the same time, that we're not added to the previous one.
|
||||
state_w->current_engine = engine;
|
||||
}
|
||||
#ifdef SHOW_ASSERT
|
||||
// We are leaving the loop, but we're not idle. The statemachine should re-enter the loop again.
|
||||
mDebugShouldRun = true;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -217,8 +217,16 @@ class AIStateMachine : public LLThreadSafeRefCount
|
||||
{ }
|
||||
|
||||
protected:
|
||||
// The user should call finish() (or abort(), or kill() from the call back when finish_impl() calls run()), not delete a class derived from AIStateMachine directly.
|
||||
virtual ~AIStateMachine() { llassert(multiplex_state_type_rat(mState)->base_state == bs_killed); }
|
||||
// The user should call finish() (or abort(), or kill() from the call back when finish_impl() calls run()),
|
||||
// not delete a class derived from AIStateMachine directly. Deleting it directly before calling run() is
|
||||
// ok however.
|
||||
virtual ~AIStateMachine()
|
||||
{
|
||||
#ifdef SHOW_ASSERT
|
||||
base_state_type state = multiplex_state_type_rat(mState)->base_state;
|
||||
llassert(state == bs_killed || state == bs_reset);
|
||||
#endif
|
||||
}
|
||||
|
||||
public:
|
||||
// These functions may be called directly after creation, or from within finish_impl(), or from the call back function.
|
||||
|
||||
Reference in New Issue
Block a user