State::ID TransitionFn::next_state(const AttributeMap& interaction, AttributeMap& global_state) const { if (!script_fn_) throw Util::MissingTransitionFnScriptError(id_); stringstream function_name_ss; function_name_ss << Util::kTransitionFnScriptFunctionName << id_; return state_at(script_fn_->execute(function_name_ss.str(), interaction, global_state)); }
int nfa2dfa() { char state[40][40]; int i = 0; int n = 1; char next[40]; int j; strcpy(state[0], "0"); for (i = 0; i < n; i++) { for (j = 0; j < NFA_symbols; j++) { next_state(next, state[i], j); DFAtab[i][j] = state_at(next, state, &n); } } return n; }
float history_rotateValue(history_t* past, U16 frame) { state_t* rotations = dict_lookup(past->states, "rotate"); if (rotations) //should always be true. { float angle = state_value(rotations, frame); state_t* flags = dict_lookup(past->states, "flags"); U16 currentflags = state_value(flags, frame); if (currentflags & IF_FIXED_ALIGNMENT) { flags = state_at(flags, frame); if (frame == past->firstFrame) frame++; state_t *x, *y; float dx, dy, pathAngle; do { x = dict_lookup(past->states, "x"); dx = state_value(x, frame) - state_value(x, frame - 1); y = dict_lookup(past->states, "y"); dy = state_value(y, frame) - state_value(y, frame - 1); frame--; } while (dx == 0 && dy == 0 && frame > past->firstFrame); if (frame == past->firstFrame) pathAngle = 0; else pathAngle = getAngle(dx, dy) / M_PI * 180; return angle + flags->params.instanceAngle + pathAngle - flags->params.pathAngle; } else return angle; } syntaxerror("no history found to get a value for parameter rotate.\n"); return 0; }