AttackParticlePolicy::AttackParticlePolicy(Vec3 color, Vec3 position, int intensity, float timeToLive, float velocity, Vec3 direction) : ParticlePolicy(color, position, intensity, timeToLive, velocity) { this->direction = direction; emitt(); }
void genobj( void ) { short int *symbol, *target; short int *p, *q, *r; short int action; set_size *mp; a_sym *sym; a_pro *pro; an_item *item; a_state *x; a_shift_action *tx; a_reduce_action *rx; int i, j, savings; for( i = nterm; i < nsym; ++i ) symtab[i]->token = i - nterm; label = OPTENTRY( nstate - 1 ); emitins( JMP, TOKENTRY( startstate->sidx ) ); target = CALLOC( nsym, short int ); for( i = 0; i < nsym; ++i ) target[i] = DEFAULT; symbol = CALLOC( nsym, short int ); for( i = 0; i < nstate; ++i ) { x = statetab[i]; q = symbol; for( tx = x->trans; (sym = tx->sym) != NULL; ++tx ) { if( sym == eofsym ) { action = ACCEPT; } else if( sym->idx < nterm ) { action = TOKENTRY(tx->state->sidx); } else { action = OPTENTRY(tx->state->sidx); } *q++ = sym->idx; target[sym->idx] = action; } savings = 0; for( rx = x->redun; (pro = rx->pro) != NULL; ++rx ) { action = PROENTRY( pro->pidx ); mp = Members( rx->follow ); if( mp - setmembers > savings ) { savings = mp - setmembers; r = q; } while( --mp >= setmembers ) { *q++ = *mp; target[*mp] = action; } } action = DEFAULT; if( savings ) { action = target[*r]; p = r; while( --savings >= 0 ) { target[*p++] = DEFAULT; } } emitins( LBL, TOKENTRY( x->sidx ) ); emitins( SCAN, 0 ); emitins( LBL, OPTENTRY( x->sidx ) ); emitins( CALL, VBLENTRY( x->sidx ) ); q = symbol; for( j = nterm; j < nsym; ++j ) { if( target[j] != DEFAULT ) { *q++ = j; } } if( q != symbol ) { emitv( symbol, target, q - symbol ); for( p = symbol; p < q; ++p ) { target[*p] = DEFAULT; } } emitins( LBL, VBLENTRY( x->sidx ) ); q = symbol; for( j = 0; j < nterm; ++j ) { if( target[j] != DEFAULT ) { *q++ = j; } } emitt( symbol, target, q - symbol, action ); for( p = symbol; p < q; ++p ) { target[*p] = DEFAULT; } } FREE( target ); FREE( symbol ); for( i = 0; i < npro; ++i ) { pro = protab[i]; if( pro != startpro ) { for( item = pro->item; item->p.sym != NULL; ) { ++item; } emitins( LBL, PROENTRY( pro->pidx ) ); emitins( ACTION, PROPACK( item - pro->item, i ) ); emitins( REDUCE, PROPACK( item - pro->item, pro->sym->token ) ); } } writeobj( label + 1 ); }