Manual merge... (Improved renderer, and added bevels.)
This commit is contained in:
@@ -7,18 +7,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CameraController::CameraController(){
|
CameraController::CameraController() :
|
||||||
yaw=0;
|
yaw(0),
|
||||||
pitch=0;
|
pitch(0),
|
||||||
moveRate=0.5f;
|
moveRate(1.0f),
|
||||||
forwards=false;
|
forwards(false),
|
||||||
backwards=false;
|
backwards(false),
|
||||||
left=false;
|
left(false),
|
||||||
right=false;
|
right(false),
|
||||||
zoom=7.f;
|
zoom(14.f),
|
||||||
rightButtonHolding=false;
|
rightButtonHolding(false),
|
||||||
focusPosition=Vector3(0,0,0);
|
focusPosition(Vector3(0,0,0)) {}
|
||||||
}
|
|
||||||
|
|
||||||
GCamera* CameraController::getCamera()
|
GCamera* CameraController::getCamera()
|
||||||
{
|
{
|
||||||
@@ -209,10 +208,10 @@ void CameraController::update(Demo* demo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(GetHoldKeyState(VK_RSHIFT) || GetHoldKeyState(VK_LSHIFT)) {
|
if(GetHoldKeyState(VK_RSHIFT) || GetHoldKeyState(VK_LSHIFT)) {
|
||||||
moveRate = 1;
|
moveRate = 2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
moveRate = 0.5;
|
moveRate = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetHoldKeyState(VK_RBUTTON))
|
if(GetHoldKeyState(VK_RBUTTON))
|
||||||
|
|||||||
@@ -25,10 +25,17 @@ Instance::Instance(const Instance &oinst)
|
|||||||
|
|
||||||
void Instance::render(RenderDevice* rd)
|
void Instance::render(RenderDevice* rd)
|
||||||
{
|
{
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
|
||||||
for(size_t i = 0; i < children.size(); i++)
|
for(size_t i = 0; i < children.size(); i++)
|
||||||
{
|
{
|
||||||
children.at(i)->render(rd);
|
children.at(i)->render(rd);
|
||||||
}
|
}
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
252
PartInstance.cpp
252
PartInstance.cpp
@@ -1,8 +1,10 @@
|
|||||||
#include "PartInstance.h"
|
#include "PartInstance.h"
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
#include <sstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
|
||||||
PartInstance::PartInstance(void)
|
PartInstance::PartInstance(void) : _bevelSize(0.03f), _parseVert(0), _debugTimer(0)
|
||||||
{
|
{
|
||||||
PVInstance::PVInstance();
|
PVInstance::PVInstance();
|
||||||
name = "Unnamed PVItem";
|
name = "Unnamed PVItem";
|
||||||
@@ -108,12 +110,20 @@ void PartInstance::setCFrame(CoordinateFrame coordinateFrame)
|
|||||||
position = coordinateFrame.translation;
|
position = coordinateFrame.translation;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
// Can probably be deleted
|
||||||
CoordinateFrame PartInstance::getCFrameRenderBased()
|
CoordinateFrame PartInstance::getCFrameRenderBased()
|
||||||
{
|
{
|
||||||
return CoordinateFrame(getCFrame().rotation,Vector3(getCFrame().translation.x/2, getCFrame().translation.y/2, getCFrame().translation.z/2));
|
return CoordinateFrame(getCFrame().rotation,Vector3(getCFrame().translation.x, getCFrame().translation.y, getCFrame().translation.z));
|
||||||
}
|
}
|
||||||
|
#ifdef NEW_BOX_RENDER
|
||||||
|
Box PartInstance::getBox()
|
||||||
|
{
|
||||||
|
Box box = Box(Vector3(size.x/2, size.y/2, size.z/2) ,Vector3(-size.x/2,-size.y/2,-size.z/2));
|
||||||
|
CoordinateFrame c = getCFrameRenderBased();
|
||||||
|
itemBox = c.toWorldSpace(box);
|
||||||
|
return itemBox;
|
||||||
|
}
|
||||||
|
#else
|
||||||
Box PartInstance::getBox()
|
Box PartInstance::getBox()
|
||||||
{
|
{
|
||||||
if(changed)
|
if(changed)
|
||||||
@@ -124,32 +134,227 @@ Box PartInstance::getBox()
|
|||||||
Vector3 v0,v1,v2,v3;
|
Vector3 v0,v1,v2,v3;
|
||||||
for (int f = 0; f < 6; f++) {
|
for (int f = 0; f < 6; f++) {
|
||||||
itemBox.getFaceCorners(f, v0,v1,v2,v3);
|
itemBox.getFaceCorners(f, v0,v1,v2,v3);
|
||||||
vertecies[f*16] = v0.x;
|
_vertices[f*16] = v0.x;
|
||||||
vertecies[(f*16)+1] = v0.y;
|
_vertices[(f*16)+1] = v0.y;
|
||||||
vertecies[(f*16)+2] = v0.z;
|
_vertices[(f*16)+2] = v0.z;
|
||||||
vertecies[(f*16)+3] = v1.x;
|
_vertices[(f*16)+3] = v1.x;
|
||||||
vertecies[(f*16)+4] = v1.y;
|
_vertices[(f*16)+4] = v1.y;
|
||||||
vertecies[(f*16)+5] = v1.z;
|
_vertices[(f*16)+5] = v1.z;
|
||||||
vertecies[(f*16)+6] = v2.x;
|
_vertices[(f*16)+6] = v2.x;
|
||||||
vertecies[(f*16)+7] = v2.y;
|
_vertices[(f*16)+7] = v2.y;
|
||||||
vertecies[(f*16)+8] = v2.z;
|
_vertices[(f*16)+8] = v2.z;
|
||||||
vertecies[(f*16)+9] = v3.x;
|
_vertices[(f*16)+9] = v3.x;
|
||||||
vertecies[(f*16)+10] = v3.y;
|
_vertices[(f*16)+10] = v3.y;
|
||||||
vertecies[(f*16)+11] = v3.z;
|
_vertices[(f*16)+11] = v3.z;
|
||||||
vertecies[(f*16)+12] = color.r;
|
_vertices[(f*16)+12] = color.r;
|
||||||
vertecies[(f*16)+13] = color.g;
|
_vertices[(f*16)+13] = color.g;
|
||||||
vertecies[(f*16)+14] = color.b;
|
_vertices[(f*16)+14] = color.b;
|
||||||
vertecies[(f*16)+15] = 1;
|
_vertices[(f*16)+15] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return itemBox;
|
return itemBox;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool PartInstance::collides(Box box)
|
bool PartInstance::collides(Box box)
|
||||||
{
|
{
|
||||||
return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box);
|
return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PartInstance::addVertex(Vector3 vertexPos,Color3 color)
|
||||||
|
{
|
||||||
|
_vertices.push_back(vertexPos.x);
|
||||||
|
_vertices.push_back(vertexPos.y);
|
||||||
|
_vertices.push_back(vertexPos.z);
|
||||||
|
_vertices.push_back(color.r);
|
||||||
|
_vertices.push_back(color.g);
|
||||||
|
_vertices.push_back(color.b);
|
||||||
|
}
|
||||||
|
void PartInstance::addNormals(Vector3 normal)
|
||||||
|
{
|
||||||
|
for (unsigned int i=0;i<3;i+=1) {
|
||||||
|
_normals.push_back(normal.x);
|
||||||
|
_normals.push_back(normal.y);
|
||||||
|
_normals.push_back(normal.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void PartInstance::addTriangle(Vector3 v1,Vector3 v2,Vector3 v3)
|
||||||
|
{
|
||||||
|
addVertex(v1,color);
|
||||||
|
addVertex(v2,color);
|
||||||
|
addVertex(v3,color);
|
||||||
|
addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
}
|
||||||
|
void PartInstance::debugPrintVertexIDs(RenderDevice* rd,GFontRef font,Matrix3 rot)
|
||||||
|
{
|
||||||
|
_debugUniqueVertices.clear();
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
for (unsigned int i=0;i<_vertices.size();i+=6)
|
||||||
|
{
|
||||||
|
std::stringstream stream;
|
||||||
|
stream << std::fixed << std::setprecision(1) << i;
|
||||||
|
Vector3 testVector = Vector3(_vertices[i],_vertices[i+1],_vertices[i+2]);
|
||||||
|
if (isUniqueVertex(testVector))
|
||||||
|
{
|
||||||
|
|
||||||
|
font->draw3D(rd, stream.str(), CoordinateFrame(testVector) * -rot, 0.05, Color3::fromARGB(0xFF4F0000), Color4::clear());
|
||||||
|
_debugUniqueVertices.push_back(testVector);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
void PartInstance::makeFace(int vertex1,int vertex2, int vertex3)
|
||||||
|
{
|
||||||
|
addTriangle(Vector3(_vertices[vertex1],_vertices[vertex1+1],_vertices[vertex1+2]),
|
||||||
|
Vector3(_vertices[vertex2],_vertices[vertex2+1],_vertices[vertex2+2]),
|
||||||
|
Vector3(_vertices[vertex3],_vertices[vertex3+1],_vertices[vertex3+2]));
|
||||||
|
}
|
||||||
|
bool PartInstance::isUniqueVertex(Vector3 pos)
|
||||||
|
{
|
||||||
|
for (unsigned int i=0;i<_debugUniqueVertices.size();i+=1)
|
||||||
|
{
|
||||||
|
if (pos==_debugUniqueVertices[i])
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NEW_BOX_RENDER
|
||||||
|
void PartInstance::render(RenderDevice* rd) {
|
||||||
|
if (changed)
|
||||||
|
{
|
||||||
|
getBox();
|
||||||
|
_vertices.clear();
|
||||||
|
Vector3 renderSize = size/2;
|
||||||
|
// Front
|
||||||
|
addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,renderSize.z),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,renderSize.z),
|
||||||
|
Vector3(renderSize.x-_bevelSize,-renderSize.y+_bevelSize,renderSize.z)
|
||||||
|
);
|
||||||
|
|
||||||
|
addTriangle(Vector3(-renderSize.x+_bevelSize,renderSize.y-_bevelSize,renderSize.z),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,renderSize.z),
|
||||||
|
Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,renderSize.z)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Top
|
||||||
|
addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y,renderSize.z-_bevelSize),
|
||||||
|
Vector3(renderSize.x-_bevelSize,renderSize.y,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,renderSize.y,renderSize.z-_bevelSize)
|
||||||
|
);
|
||||||
|
addTriangle(Vector3(-renderSize.x+_bevelSize,renderSize.y,renderSize.z-_bevelSize),
|
||||||
|
Vector3(renderSize.x-_bevelSize,renderSize.y,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,renderSize.y,-renderSize.z+_bevelSize)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Back
|
||||||
|
addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,-renderSize.z),
|
||||||
|
Vector3(renderSize.x-_bevelSize,-renderSize.y+_bevelSize,-renderSize.z),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,-renderSize.z)
|
||||||
|
);
|
||||||
|
addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,-renderSize.z),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,-renderSize.z),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,renderSize.y-_bevelSize,-renderSize.z)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Bottom
|
||||||
|
addTriangle(Vector3(renderSize.x-_bevelSize,-renderSize.y,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(renderSize.x-_bevelSize,-renderSize.y,renderSize.z-_bevelSize),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y,renderSize.z-_bevelSize)
|
||||||
|
);
|
||||||
|
addTriangle(Vector3(-renderSize.x+_bevelSize,-renderSize.y,renderSize.z-_bevelSize),
|
||||||
|
Vector3(-renderSize.x+_bevelSize,-renderSize.y,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(renderSize.x-_bevelSize,-renderSize.y,-renderSize.z+_bevelSize)
|
||||||
|
);
|
||||||
|
// Left
|
||||||
|
addTriangle(Vector3(-renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(-renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
|
||||||
|
Vector3(-renderSize.x,renderSize.y-_bevelSize,renderSize.z-_bevelSize)
|
||||||
|
);
|
||||||
|
addTriangle(Vector3(-renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
|
||||||
|
Vector3(-renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(-renderSize.x,-renderSize.y+_bevelSize,-renderSize.z+_bevelSize)
|
||||||
|
);
|
||||||
|
// Right
|
||||||
|
addTriangle(Vector3(renderSize.x,renderSize.y-_bevelSize,renderSize.z-_bevelSize),
|
||||||
|
Vector3(renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
|
||||||
|
Vector3(renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize)
|
||||||
|
);
|
||||||
|
addTriangle(Vector3(renderSize.x,-renderSize.y+_bevelSize,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
|
||||||
|
Vector3(renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Bevel Top Front
|
||||||
|
makeFace(0,36,48);
|
||||||
|
makeFace(48,18,0);
|
||||||
|
// Bevel Left Front Corner
|
||||||
|
makeFace(18,156,162);
|
||||||
|
makeFace(24,18,162);
|
||||||
|
// Bevel Left Front Top Corner
|
||||||
|
makeFace(48,156,18);
|
||||||
|
// Bevel Left Front Bottom Corner
|
||||||
|
makeFace(120,6,150);
|
||||||
|
// Bevel Left Top
|
||||||
|
makeFace(48,66,156);
|
||||||
|
makeFace(144,156,66);
|
||||||
|
// Bevel Bottom
|
||||||
|
makeFace(6,120,114);
|
||||||
|
makeFace(114,12,6);
|
||||||
|
// Left Bottom
|
||||||
|
makeFace(120,150,174);
|
||||||
|
makeFace(174,132,120);
|
||||||
|
// Right Front Top Corner
|
||||||
|
makeFace(36,0,180);
|
||||||
|
// Right Front Corner
|
||||||
|
makeFace(180,0,12);
|
||||||
|
makeFace(186,180,12);
|
||||||
|
// Right Front Bottom Corner
|
||||||
|
makeFace(186,12,114);
|
||||||
|
// Right Bottom
|
||||||
|
makeFace(186,114,108);
|
||||||
|
makeFace(108,198,186);
|
||||||
|
// Right Top Corner
|
||||||
|
makeFace(180,192,36);
|
||||||
|
makeFace(192,42,36);
|
||||||
|
// Right Back Top Corner
|
||||||
|
makeFace(72,42,192);
|
||||||
|
// Right Back Bottom Corner
|
||||||
|
makeFace(78,198,108);
|
||||||
|
// Right Back Corner
|
||||||
|
makeFace(72,192,198);
|
||||||
|
makeFace(198,78,72);
|
||||||
|
// Back Bottom Corner
|
||||||
|
makeFace(78,108,132);
|
||||||
|
makeFace(132,84,78);
|
||||||
|
// Back Top
|
||||||
|
makeFace(42,72,102);
|
||||||
|
makeFace(102,66,42);
|
||||||
|
// Back Left Top Corner
|
||||||
|
makeFace(144,66,102);
|
||||||
|
// Back Left Corner
|
||||||
|
makeFace(144,102,84);
|
||||||
|
makeFace(84,174,144);
|
||||||
|
// Back Left Bottom Corner
|
||||||
|
makeFace(174,84,132);
|
||||||
|
|
||||||
|
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
||||||
|
_indices.push_back(i);
|
||||||
|
}
|
||||||
|
changed=false;
|
||||||
|
}
|
||||||
|
glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]);
|
||||||
|
glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]);
|
||||||
|
glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]);
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(position.x,position.y,position.z);
|
||||||
|
glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
#else
|
||||||
void PartInstance::render(RenderDevice* rd)
|
void PartInstance::render(RenderDevice* rd)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -184,14 +389,14 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
else if(face == Inlets)
|
else if(face == Inlets)
|
||||||
add = 0.2;*/
|
add = 0.2;*/
|
||||||
|
|
||||||
Vector3 v0 = Vector3(vertecies[i], vertecies[i+1], vertecies[i+2]), v1 = Vector3(vertecies[i+3], vertecies[i+4], vertecies[i+5]), v3 = Vector3(vertecies[i+9], vertecies[i+10], vertecies[i+11]);
|
Vector3 v0 = Vector3(_vertices[i], _vertices[i+1], _vertices[i+2]), v1 = Vector3(_vertices[i+3], _vertices[i+4], _vertices[i+5]), v3 = Vector3(_vertices[i+9], _vertices[i+10], _vertices[i+11]);
|
||||||
/*glNormal3fv((v1 - v0).cross(v3 - v0).direction());
|
/*glNormal3fv((v1 - v0).cross(v3 - v0).direction());
|
||||||
glTexCoord2f(0.0F,0.0F);
|
glTexCoord2f(0.0F,0.0F);
|
||||||
glVertex3fv(v0);
|
glVertex3fv(v0);
|
||||||
glTexCoord2f(1.0F,0.0F);
|
glTexCoord2f(1.0F,0.0F);
|
||||||
glVertex3fv(v1);
|
glVertex3fv(v1);
|
||||||
glTexCoord2f(1.0F,0.25F);
|
glTexCoord2f(1.0F,0.25F);
|
||||||
glVertex3f(vertecies[i+6], vertecies[i+7], vertecies[i+8]);
|
glVertex3f(_vertices[i+6], _vertices[i+7], _vertices[i+8]);
|
||||||
glTexCoord2f(0.0F,0.25F);
|
glTexCoord2f(0.0F,0.25F);
|
||||||
glVertex3fv(v3);*/
|
glVertex3fv(v3);*/
|
||||||
|
|
||||||
@@ -206,7 +411,7 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
glTexCoord2d( 1.0,0.0+add);
|
glTexCoord2d( 1.0,0.0+add);
|
||||||
glVertex3fv(v1);
|
glVertex3fv(v1);
|
||||||
glTexCoord2d(1.0,0.2+add);
|
glTexCoord2d(1.0,0.2+add);
|
||||||
glVertex3f(vertecies[i+6], vertecies[i+7], vertecies[i+8]);
|
glVertex3f(_vertices[i+6], _vertices[i+7], _vertices[i+8]);
|
||||||
glTexCoord2d( 0.0,0.2+add);
|
glTexCoord2d( 0.0,0.2+add);
|
||||||
glVertex3fv(v3);
|
glVertex3fv(v3);
|
||||||
glEnd();
|
glEnd();
|
||||||
@@ -224,6 +429,7 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
PartInstance::~PartInstance(void)
|
PartInstance::~PartInstance(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
#include "PVInstance.h"
|
#include "PVInstance.h"
|
||||||
#include "Enum.h"
|
#include "Enum.h"
|
||||||
|
|
||||||
|
#define NEW_BOX_RENDER
|
||||||
|
|
||||||
class PartInstance : public PVInstance
|
class PartInstance : public PVInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -35,10 +37,26 @@ public:
|
|||||||
bool collides(Box);
|
bool collides(Box);
|
||||||
virtual std::vector<PROPGRIDITEM> getProperties();
|
virtual std::vector<PROPGRIDITEM> getProperties();
|
||||||
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
||||||
|
void addVertex(Vector3 vertexPos,Color3 color);
|
||||||
|
void addNormals(Vector3 normal);
|
||||||
|
void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
||||||
|
void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
|
||||||
|
void makeFace(int vertex1, int vertex2, int vertex3);
|
||||||
|
bool isUniqueVertex(Vector3 pos);
|
||||||
private:
|
private:
|
||||||
Vector3 position;
|
Vector3 position;
|
||||||
Vector3 size;
|
Vector3 size;
|
||||||
GLfloat vertecies[96];
|
float _bevelSize;
|
||||||
|
int _parseVert;
|
||||||
|
int _debugTimer;
|
||||||
|
std::vector<Vector3> _debugUniqueVertices;
|
||||||
|
#ifdef NEW_BOX_RENDER
|
||||||
|
std::vector<GLfloat> _vertices;
|
||||||
|
std::vector<GLfloat> _normals;
|
||||||
|
#else
|
||||||
|
GLfloat _vertices[96];
|
||||||
|
#endif
|
||||||
|
std::vector<GLushort> _indices;
|
||||||
bool changed;
|
bool changed;
|
||||||
Box itemBox;
|
Box itemBox;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -72,6 +72,8 @@ void TextButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseD
|
|||||||
{
|
{
|
||||||
Vector3 point1;
|
Vector3 point1;
|
||||||
Vector3 point2;
|
Vector3 point2;
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
if(floatBottom)
|
if(floatBottom)
|
||||||
{
|
{
|
||||||
point1 = Vector3(boxBegin.x, rd->getHeight() + boxBegin.y,0);
|
point1 = Vector3(boxBegin.x, rd->getHeight() + boxBegin.y,0);
|
||||||
@@ -104,6 +106,8 @@ void TextButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseD
|
|||||||
Draw::box(Box(point1, point2), rd, boxColor, boxOutlineColor);
|
Draw::box(Box(point1, point2), rd, boxColor, boxOutlineColor);
|
||||||
font->draw2D(rd, title, RelativeTo, textSize, textColor, textOutlineColor);
|
font->draw2D(rd, title, RelativeTo, textSize, textColor, textOutlineColor);
|
||||||
}
|
}
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doNullCheck()
|
void doNullCheck()
|
||||||
|
|||||||
19
main.cpp
19
main.cpp
@@ -1064,17 +1064,17 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters
|
|||||||
{
|
{
|
||||||
|
|
||||||
Color3 outline = Color3::cyan();//Color3(0.098F,0.6F,1.0F);
|
Color3 outline = Color3::cyan();//Color3(0.098F,0.6F,1.0F);
|
||||||
float offsetSize = 0.05F;
|
float offsetSize = 0.1F;
|
||||||
//X
|
//X
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
//Y
|
//Y
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.2, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.2, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.2, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize - 0.2, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize-0.1, to.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.2, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize-0.2, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, to.z - offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.2, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.2, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||||
|
|
||||||
//Z
|
//Z
|
||||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
||||||
@@ -1153,6 +1153,7 @@ void Demo::exitApplication()
|
|||||||
|
|
||||||
void Demo::onGraphics(RenderDevice* rd) {
|
void Demo::onGraphics(RenderDevice* rd) {
|
||||||
|
|
||||||
|
|
||||||
G3D::uint8 num = 0;
|
G3D::uint8 num = 0;
|
||||||
POINT mousepos;
|
POINT mousepos;
|
||||||
mouseOnScreen = true;
|
mouseOnScreen = true;
|
||||||
@@ -1226,6 +1227,8 @@ void Demo::onGraphics(RenderDevice* rd) {
|
|||||||
|
|
||||||
|
|
||||||
dataModel->getWorkspace()->render(rd);
|
dataModel->getWorkspace()->render(rd);
|
||||||
|
//if (dataModel->children[0]->children.size()>0)
|
||||||
|
//((PartInstance*)dataModel->children[0]->children[0])->debugPrintVertexIDs(rd,fntdominant,-cameraController.getCoordinateFrame().rotation);
|
||||||
rd->afterPrimitive();
|
rd->afterPrimitive();
|
||||||
|
|
||||||
|
|
||||||
@@ -1237,7 +1240,7 @@ void Demo::onGraphics(RenderDevice* rd) {
|
|||||||
{
|
{
|
||||||
Vector3 size = part->getSize();
|
Vector3 size = part->getSize();
|
||||||
Vector3 pos = part->getPosition();
|
Vector3 pos = part->getPosition();
|
||||||
drawOutline(Vector3(0+size.x/4, 0+size.y/4, 0+size.z/4) ,Vector3(0-size.x/4,0-size.y/4,0-size.z/4), rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2), part->getCFrameRenderBased());
|
drawOutline(Vector3(size.x/2, size.y/2, size.z/2) ,Vector3(-size.x/2,-size.y/2,-size.z/2), rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x, pos.y, pos.z), part->getCFrameRenderBased());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1259,6 +1262,10 @@ void Demo::onGraphics(RenderDevice* rd) {
|
|||||||
//TODO--Move these to their own instance
|
//TODO--Move these to their own instance
|
||||||
|
|
||||||
std::stringstream stream;
|
std::stringstream stream;
|
||||||
|
stream << std::fixed << std::setprecision(3) << m_graphicsWatch.FPS();
|
||||||
|
fntdominant->draw2D(rd, "FPS: " + stream.str(), Vector2(120, 25), 10, Color3::fromARGB(0xFFFF00), Color3::black());
|
||||||
|
stream.str("");
|
||||||
|
stream.clear();
|
||||||
stream << std::fixed << std::setprecision(1) << dataModel->getLevel()->timer;
|
stream << std::fixed << std::setprecision(1) << dataModel->getLevel()->timer;
|
||||||
fntdominant->draw2D(rd, "Timer: " + stream.str(), Vector2(rd->getWidth() - 120, 25), 20, Color3::fromARGB(0x81C518), Color3::black());
|
fntdominant->draw2D(rd, "Timer: " + stream.str(), Vector2(rd->getWidth() - 120, 25), 20, Color3::fromARGB(0x81C518), Color3::black());
|
||||||
fntdominant->draw2D(rd, "Score: " + Convert(dataModel->getLevel()->score), Vector2(rd->getWidth() - 120, 50), 20, Color3::fromARGB(0x81C518), Color3::black());
|
fntdominant->draw2D(rd, "Score: " + Convert(dataModel->getLevel()->score), Vector2(rd->getWidth() - 120, 50), 20, Color3::fromARGB(0x81C518), Color3::black());
|
||||||
|
|||||||
Reference in New Issue
Block a user