Added shapes, found and fixed possible memory leak
This commit is contained in:
@@ -136,7 +136,7 @@ Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(setti
|
|||||||
SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this);
|
SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this);
|
||||||
_propWindow = new PropertyWindow(0, 0, 200, 640, hThisInstance);
|
_propWindow = new PropertyWindow(0, 0, 200, 640, hThisInstance);
|
||||||
IEBrowser* webBrowser = new IEBrowser(_hwndToolbox);
|
IEBrowser* webBrowser = new IEBrowser(_hwndToolbox);
|
||||||
//webBrowser->navigateSyncURL(L"http://scottbeebiwan.tk/g3d/toolbox/");
|
webBrowser->navigateSyncURL(L"http://androdome.com/g3d/toolbox/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
4
Enum.h
4
Enum.h
@@ -5,13 +5,13 @@ namespace Enum
|
|||||||
namespace SurfaceType
|
namespace SurfaceType
|
||||||
{
|
{
|
||||||
enum Value {
|
enum Value {
|
||||||
Smooth, Bumps, Welds, Glue
|
Smooth, Snaps, Inlets, Glue, Weld, Spawn, Hinge, Motor, Bumps
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
namespace Shape
|
namespace Shape
|
||||||
{
|
{
|
||||||
enum Value {
|
enum Value {
|
||||||
Block, Sphere, Cylinder
|
Ball = 0, Block = 1, Cylinder = 2
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
2
Enums.h
2
Enums.h
@@ -1,3 +1,4 @@
|
|||||||
|
#ifdef UENUMS
|
||||||
#ifndef ENUM_H
|
#ifndef ENUM_H
|
||||||
#define ENUM_H
|
#define ENUM_H
|
||||||
static enum BinType {GameTool, Grab, Clone, Hammer};
|
static enum BinType {GameTool, Grab, Clone, Hammer};
|
||||||
@@ -12,3 +13,4 @@ static enum SoundType {NoSound, Boing, Bomb, Break, Click, Clock, Slingshot, Pag
|
|||||||
static enum PartType {Ball, Block, Cylinder};
|
static enum PartType {Ball, Block, Cylinder};
|
||||||
static enum KeywordFilterType {Include, Exclude};
|
static enum KeywordFilterType {Include, Exclude};
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
@@ -302,6 +302,10 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\PartType.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\propertyGrid.cpp"
|
RelativePath=".\propertyGrid.cpp"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ void Instance::update()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
PROPGRIDITEM Instance::createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type)
|
PROPGRIDITEM Instance::createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[])
|
||||||
{
|
{
|
||||||
PROPGRIDITEM pItem;
|
PROPGRIDITEM pItem;
|
||||||
PropGrid_ItemInit(pItem);
|
PropGrid_ItemInit(pItem);
|
||||||
@@ -45,6 +45,8 @@ PROPGRIDITEM Instance::createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc,
|
|||||||
pItem.lpszPropDesc=propDesc;
|
pItem.lpszPropDesc=propDesc;
|
||||||
pItem.lpCurValue=curVal;
|
pItem.lpCurValue=curVal;
|
||||||
pItem.iItemType=type;
|
pItem.iItemType=type;
|
||||||
|
if(choices != NULL)
|
||||||
|
pItem.lpszzCmbItems = choices;
|
||||||
return pItem;
|
return pItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
std::string className;
|
std::string className;
|
||||||
Instance* parent; // Another pointer.
|
Instance* parent; // Another pointer.
|
||||||
PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type);
|
PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[] = NULL);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
299
PartInstance.cpp
299
PartInstance.cpp
@@ -128,12 +128,27 @@ Vector3 PartInstance::getPosition()
|
|||||||
{
|
{
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
void PartInstance::setShape(Enum::Shape::Value shape)
|
||||||
|
{
|
||||||
|
switch(shape)
|
||||||
|
{
|
||||||
|
case Enum::Shape::Block:
|
||||||
|
this->shape = shape;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this->shape = shape;
|
||||||
|
this->setSize(this->getSize());
|
||||||
|
}
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
void PartInstance::setPosition(Vector3 pos)
|
void PartInstance::setPosition(Vector3 pos)
|
||||||
{
|
{
|
||||||
position = pos;
|
position = pos;
|
||||||
cFrame = CoordinateFrame(pos);
|
cFrame = CoordinateFrame(pos);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoordinateFrame PartInstance::getCFrame()
|
CoordinateFrame PartInstance::getCFrame()
|
||||||
{
|
{
|
||||||
return cFrame;
|
return cFrame;
|
||||||
@@ -228,6 +243,114 @@ void PartInstance::addVertex(Vector3 vertexPos,Color3 color)
|
|||||||
addSingularNormal(cross(v3-v2,v1-v2).direction());
|
addSingularNormal(cross(v3-v2,v1-v2).direction());
|
||||||
addSingularNormal(cross(v1-v3,v2-v3).direction());
|
addSingularNormal(cross(v1-v3,v2-v3).direction());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PartInstance::addPlus(Vector3 v1)
|
||||||
|
{
|
||||||
|
float renderY = size.y/2 - 0.25f;
|
||||||
|
Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
|
Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx1 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
||||||
|
vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
||||||
|
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
||||||
|
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PartInstance::addPlus2(Vector3 v1)
|
||||||
|
{
|
||||||
|
float renderY = max(size.z, max(size.x, size.y))/2 - 0.25f;
|
||||||
|
Vector3 vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
|
Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx3 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
||||||
|
vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
||||||
|
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
||||||
|
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
|
||||||
|
addVertex(vx1,Color3::WHITE);
|
||||||
|
addVertex(vx2,Color3::WHITE);
|
||||||
|
addVertex(vx3,Color3::WHITE);
|
||||||
|
//addNormals(cross(v2-v1,v3-v1).direction());
|
||||||
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
|
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
|
||||||
|
|
||||||
|
}
|
||||||
void PartInstance::debugPrintVertexIDs(RenderDevice* rd,GFontRef font,Matrix3 rot)
|
void PartInstance::debugPrintVertexIDs(RenderDevice* rd,GFontRef font,Matrix3 rot)
|
||||||
{
|
{
|
||||||
_debugUniqueVertices.clear();
|
_debugUniqueVertices.clear();
|
||||||
@@ -273,8 +396,138 @@ void PartInstance::render(RenderDevice* rd) {
|
|||||||
|
|
||||||
getBox();
|
getBox();
|
||||||
_vertices.clear();
|
_vertices.clear();
|
||||||
|
_normals.clear();
|
||||||
|
_indices.clear();
|
||||||
//std::vector<GLfloat>(_vertices).swap(_vertices); //Clear the memory
|
//std::vector<GLfloat>(_vertices).swap(_vertices); //Clear the memory
|
||||||
Vector3 renderSize = size/2;
|
Vector3 renderSize = size/2;
|
||||||
|
switch(this->shape)
|
||||||
|
{
|
||||||
|
case Enum::Shape::Block:
|
||||||
|
{
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Enum::Shape::Cylinder:
|
||||||
|
{
|
||||||
// Front
|
// Front
|
||||||
addTriangle(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),
|
||||||
@@ -388,9 +641,16 @@ void PartInstance::render(RenderDevice* rd) {
|
|||||||
// Back Left Bottom Corner
|
// Back Left Bottom Corner
|
||||||
makeFace(174,84,132);
|
makeFace(174,84,132);
|
||||||
|
|
||||||
|
|
||||||
|
addPlus(Vector3(-renderSize.x-0.01,0,0));
|
||||||
|
addPlus2(Vector3(renderSize.x+0.01,0,0));
|
||||||
|
|
||||||
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
||||||
_indices.push_back(i);
|
_indices.push_back(i);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
changed=false;
|
changed=false;
|
||||||
|
|
||||||
glNewList(glList, GL_COMPILE);
|
glNewList(glList, GL_COMPILE);
|
||||||
@@ -497,6 +757,28 @@ char pto[512];
|
|||||||
char pto2[512];
|
char pto2[512];
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
static Enum::Shape::Value strEnum(TCHAR* shape)
|
||||||
|
{
|
||||||
|
if(strcmp("Block", shape) == 0)
|
||||||
|
return Enum::Shape::Block;
|
||||||
|
if(strcmp("Cylinder", shape) == 0)
|
||||||
|
return Enum::Shape::Cylinder;
|
||||||
|
return Enum::Shape::Ball;
|
||||||
|
}
|
||||||
|
|
||||||
|
static TCHAR* enumStr(int shape)
|
||||||
|
{
|
||||||
|
switch(shape)
|
||||||
|
{
|
||||||
|
case Enum::Shape::Block:
|
||||||
|
return "Block";
|
||||||
|
case Enum::Shape::Ball:
|
||||||
|
return "Ball";
|
||||||
|
case Enum::Shape::Cylinder:
|
||||||
|
return "Cylinder";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
|
void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
|
||||||
{
|
{
|
||||||
if(strcmp(item->lpszPropName, "Color3") == 0)
|
if(strcmp(item->lpszPropName, "Color3") == 0)
|
||||||
@@ -561,10 +843,16 @@ void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
|
|||||||
setSize(size);
|
setSize(size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(strcmp(item->lpszPropName, "Shape") == 0)
|
||||||
|
{
|
||||||
|
printf("%s", enumStr(strEnum((TCHAR*)item->lpCurValue)));
|
||||||
|
setShape(strEnum((TCHAR*)item->lpCurValue));
|
||||||
|
}
|
||||||
else PVInstance::PropUpdate(item);
|
else PVInstance::PropUpdate(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::vector<PROPGRIDITEM> PartInstance::getProperties()
|
std::vector<PROPGRIDITEM> PartInstance::getProperties()
|
||||||
{
|
{
|
||||||
std::vector<PROPGRIDITEM> properties = PVInstance::getProperties();
|
std::vector<PROPGRIDITEM> properties = PVInstance::getProperties();
|
||||||
@@ -594,6 +882,15 @@ std::vector<PROPGRIDITEM> PartInstance::getProperties()
|
|||||||
(LPARAM)pto2,
|
(LPARAM)pto2,
|
||||||
PIT_EDIT
|
PIT_EDIT
|
||||||
));
|
));
|
||||||
|
properties.push_back(createPGI(
|
||||||
|
"Item",
|
||||||
|
"Shape",
|
||||||
|
"The shape of the object in the workspace",
|
||||||
|
(LPARAM)enumStr(shape),
|
||||||
|
PIT_COMBO,
|
||||||
|
TEXT("Ball\0Block\0Cylinder\0")
|
||||||
|
));
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public:
|
|||||||
CoordinateFrame getCFrameRenderBased();
|
CoordinateFrame getCFrameRenderBased();
|
||||||
Vector3 getSize();
|
Vector3 getSize();
|
||||||
void setSize(Vector3);
|
void setSize(Vector3);
|
||||||
|
void setShape(Enum::Shape::Value shape);
|
||||||
bool canCollide;
|
bool canCollide;
|
||||||
bool anchored;
|
bool anchored;
|
||||||
Vector3 rotVelocity;
|
Vector3 rotVelocity;
|
||||||
@@ -43,6 +44,8 @@ public:
|
|||||||
void addNormals(Vector3 normal);
|
void addNormals(Vector3 normal);
|
||||||
void addSingularNormal(Vector3 normal);
|
void addSingularNormal(Vector3 normal);
|
||||||
void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
||||||
|
void addPlus(Vector3 v1);
|
||||||
|
void addPlus2(Vector3 v1);
|
||||||
void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
|
void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
|
||||||
void makeFace(int vertex1, int vertex2, int vertex3);
|
void makeFace(int vertex1, int vertex2, int vertex3);
|
||||||
bool isUniqueVertex(Vector3 pos);
|
bool isUniqueVertex(Vector3 pos);
|
||||||
|
|||||||
9
PartType.cpp
Normal file
9
PartType.cpp
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#include "PartType.h"
|
||||||
|
|
||||||
|
PartType::PartType(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PartType::~PartType(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
9
ShapeRenderer.cpp
Normal file
9
ShapeRenderer.cpp
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#include "ShapeRenderer.h"
|
||||||
|
|
||||||
|
ShapeRenderer::ShapeRenderer(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ShapeRenderer::~ShapeRenderer(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user