示例#1
0
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));
}
示例#2
0
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;
}