All pastes #555314 Raw Edit

Untitled

public text v1 · immutable
·published 2007-06-10 12:03 UTC
rendered paste body
void fronthandler(measure_t when, action_t action, Object *obj, void *data) {
	if (action == PASS_AFTER) {
		playSound(resourcetable[obj->resource()]);
		removeSprite(obj);
	} else if (action == PASS_BEFORE) {
		addSprite(obj);
	}
}

void rearhandler(measure_t when, action_t action, Object *obj, void *data) {
	if (action == PASS_BEFORE) {
		addSprite(obj);
	} else if (action == PASS_AFTER) {
		removeSprite(obj);
	}
}

Pointer front(player, 0.0f), rear(player, 1.0f);
time_t time = getTicks();
front.addHandler(BMSNoteObject::group, &fronthandler, data);
rear.addHandler(BMSNoteObject::group, &rearhandler, data);
while (true) {
	time_t newtime = getTicks();
	timediff_t delta = newtime - time;
	time = newtime;
	front.advance(delta);
	rear.advance(delta);
	for (Player::iterator it = front.begin(); it != rear.end(); ++it) {
		showSprite(*it); // or should use addSprite/removeSprite instead?
	}
	flushSprite();
}