Added surface selector, made faces reflect G3D faces
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
#include "Tool/SurfaceTool.h"
|
||||
#include "Application.h"
|
||||
|
||||
SurfaceTool::SurfaceTool(Enum::SurfaceType::Value theSurface, int extraParam)
|
||||
SurfaceTool::SurfaceTool(int theSurface, int extraParam)
|
||||
{
|
||||
surface = theSurface;
|
||||
param = extraParam;
|
||||
@@ -11,9 +10,53 @@ SurfaceTool::~SurfaceTool(void)
|
||||
{
|
||||
}
|
||||
|
||||
std::vector<G3D::Box> getSurfaces(PartInstance * part)
|
||||
{
|
||||
std::vector<G3D::Box> planes;
|
||||
G3D::Box box = part->getBox();
|
||||
G3D::Vector3 v0;
|
||||
G3D::Vector3 v1;
|
||||
G3D::Vector3 v2;
|
||||
G3D::Vector3 v3;
|
||||
box.getFaceCorners(0,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
box.getFaceCorners(1,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
box.getFaceCorners(2,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
box.getFaceCorners(3,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
box.getFaceCorners(4,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
box.getFaceCorners(5,v0,v1,v2,v3);
|
||||
planes.push_back(G3D::Box(v0, v2));
|
||||
return planes;
|
||||
}
|
||||
|
||||
void SurfaceTool::onButton1MouseDown(Mouse mouse)
|
||||
{
|
||||
|
||||
AudioPlayer::playSound(dingSound);
|
||||
PartInstance * target = mouse.getTarget();
|
||||
G3D::Ray ray = mouse.getLastRay();
|
||||
std::vector<G3D::Box> surfacesHit = getSurfaces(target);
|
||||
int closest;
|
||||
float nearValue = G3D::inf();
|
||||
for(size_t i = 0; i < surfacesHit.size(); i++)
|
||||
{
|
||||
float newTime = ray.intersectionTime(surfacesHit[i]);
|
||||
if(nearValue > newTime)
|
||||
{
|
||||
nearValue = newTime;
|
||||
closest = (int)i;
|
||||
}
|
||||
}
|
||||
if(G3D::isFinite(nearValue))
|
||||
{
|
||||
|
||||
printf("\n%d\n", closest);
|
||||
target->setSurface(closest, Enum::SurfaceType::Value(surface));
|
||||
}
|
||||
g_usableApp->changeTool(NULL);
|
||||
}
|
||||
void SurfaceTool::onButton1MouseUp(Mouse mouse)
|
||||
{
|
||||
@@ -25,6 +68,7 @@ void SurfaceTool::onMouseMoved(Mouse mouse)
|
||||
}
|
||||
void SurfaceTool::onSelect(Mouse mouse)
|
||||
{
|
||||
AudioPlayer::playSound(dingSound);
|
||||
}
|
||||
|
||||
void SurfaceTool::onKeyDown(int key)
|
||||
|
||||
Reference in New Issue
Block a user