示例#1
0
void Game::draw(GLUTRenderingContext * g) {

	AABBf selectionUIVisual = selectedArea;
	selectionUIVisual.validate();
	g->setColor(0x88ff88);
	selectionUIVisual.glDraw(false);

	if (doingOperation) {
		g->setColor(0xaaaaff);
		g->drawLine(operationPoint, mousePosition);
	}

	delauny->draw(g_screen);
//	return;
	// draw selected obstacle indicator
	if (selectedObstacles.size() > 0) {
		g->setColor(0xaaffaa);
		for (int i = 0; i < selectedObstacles.size(); ++i) {
			Shape * s = selectedObstacles[i]->getShape();
			g->drawCircle(s->getCenter(), s->getRadius(), false);
			s->draw(g, true);
		}
		g->drawCircle(selectedOrigin, .1f, true);
	}

	g->setColor(0x00aaff);
	g->printf(mousePosition, "%.2f, %.2f", mousePosition.x, mousePosition.y);
	g->drawCircle(mousePosition, .1f, false);
//	int layerColors[] = { 0x0088aa, 0x66aa88, 0x88aa22, 0x123456 };
//	int layerColorsCount = sizeof(layerColors) / sizeof(layerColors[0]);
//	objectMap.draw(g, layerColors, layerColorsCount);

	// testing cone stuff
	RaycastHit rh;
	V2f hit, norm;
	float dist = 0, maxDist = 0;
	Obstacle * o;
	g->drawCircle(userRay.start, .05f, true);
	// TEST <-- TODO
	V2f delta = mousePosition - userRay.start;
	if (!delta.isZero()) { dist = delta.magnitude(); delta /= dist; }
	maxDist = dist;

	//TemplateSet<int> cellList;
	//staticObstaclesMap->raycastCellList(mouseClick, delta, dist, cellList);
	//for (int i = 0; i < cellList.size(); ++i) { staticObstaclesMap->cells[cellList[i]]->glDraw(true); }

	if (raycast(userRay, rh, userRayDistance, false, o, -1))
	{
		g->setColor(0);
		drawRaycastHit(rh, 1);
		g->printf(rh.point, "%.2f, ", rh.distance);
	}
	g->drawLine(userRay.start, userRay.start + userRay.direction * userRayDistance);//userRay.glDraw();

	for (int i = 0; i < obstacles.size(); ++i) {
		Obstacle * obs = obstacles[i];
		g->setColor(0x333333);
		obs->getShape()->draw(g, false);
		obs->getShape()->getClosestRaycastHit(mousePosition, rh);
		g->setColor(0x888888);
		drawRaycastHit(rh, .2f);
	}
}