#include <stdio.h>
#include <ppl.h>
#include <time.h>
#include <concurrent_queue.h>
#include <concurrent_vector.h>
#include <array>
#include <vector>
#include <tuple>
#include <algorithm>

#include <xsi_application.h>
#include <xsi_context.h>
#include <xsi_pluginregistrar.h>
#include <xsi_status.h>

#ifndef linux
#define WIN32_LEAN_AND_MEAN
#include <windows.h> // Needed for OpenGL on windows
#endif

#include "GL/glew.h"
#if defined(_WIN32)
#  include "GL/wglew.h"
#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
#  include "GL/glxew.h"
#endif

#include <xsi_math.h>
#include <xsi_vector3f.h>
#include <xsi_argument.h>
#include <xsi_toolcontext.h>
#include <xsi_menu.h>
#include <xsi_menuitem.h>
#include <xsi_utils.h>

#include <xsi_kinematics.h>
#include <xsi_fcurve.h>
#include <xsi_preferences.h>
#include <xsi_selection.h>
#include <xsi_operator.h>
#include <xsi_filter.h>
#include <xsi_geometry.h>
#include <xsi_primitive.h>
#include <xsi_polygonmesh.h>
#include <xsi_geometryaccessor.h>
#include <xsi_triangle.h>
#include <xsi_kinematicstate.h>
#include <xsi_boolarray.h>
#include <xsi_polygonface.h>
#include <xsi_vertex.h>
#include <xsi_triangle.h>
#include <xsi_trianglevertex.h>
#include <xsi_plugin.h>

#include "rayTriangleIntersection.h"
#include "triboxCollision.h"
#include "Intersection.h"
#include "swept_sphere/stdafx.h"
#include "BrushTool.h"
#include "xsi_utility.h"
#include "ButtonBar.h"

#define kKeyJ	0x4A			// J
#define kKeyK	0x4B			// K
#define kKeyL 	0x4C			// L
#define kKeyR 	0x52			// R
