Пример #1
0
void MenuController::leapMenuOpen(const Leap::Controller& controller, const Leap::Frame& frame)
{
	updateLeapPointer(controller, frame);

	if (pointer_.isValid()) {
		Vec2 v = (leap - viewport_.center());
		float radians = v.anglePositive();
		float radius = v.length();

		float innerRadius = min(viewport_.width, viewport_.height) * 0.5 * 0.55;
		float hitRadius = min(viewport_.width, viewport_.height) * 0.5 * 0.7;
		float outerRadius = min(viewport_.width, viewport_.height) * 0.5 * 0.85;
		selected_ = -1;
		if (radius > innerRadius) {
			int highlightedItem = calcHighlightedMenu(radians);
			selected_ = highlightedItem;
			progress_ = gl::clamp((radius - innerRadius) / (outerRadius - innerRadius), 0.0f, 1.0f);

			if (radius > outerRadius && selected_ >= 0 && menu_) {
					(*menu_)[highlightedItem].trigger();
			}
		}
	}
}