diff --git a/Blocks3D.vcproj b/Blocks3D.vcproj
index f8a502f..723eafc 100644
--- a/Blocks3D.vcproj
+++ b/Blocks3D.vcproj
@@ -288,6 +288,10 @@
RelativePath=".\src\source\PropertyWindow.cpp"
>
+
+
@@ -619,6 +623,10 @@
+
+
@@ -641,10 +649,6 @@
RelativePath=".\src\include\ax.h"
>
-
-
@@ -689,6 +693,10 @@
RelativePath=".\src\include\PropertyWindow.h"
>
+
+
@@ -836,6 +844,10 @@
+
+
diff --git a/Renderer.cpp b/Renderer.cpp
new file mode 100644
index 0000000..39f7368
--- /dev/null
+++ b/Renderer.cpp
@@ -0,0 +1,211 @@
+#include "Renderer.h"
+#include
+
+float _bevelSize = 0.07F;
+std::vector _debugUniqueVertices;
+std::vector _vertices;
+std::vector _normals;
+std::vector _indices;
+Color3 color;
+
+void addVertex(const Vector3& vertexPos,const 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 addNormals(const 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 addSingularNormal(const Vector3& normal)
+{
+ _normals.push_back(normal.x);
+ _normals.push_back(normal.y);
+ _normals.push_back(normal.z);
+}
+ void addTriangle(const Vector3& v1, const Vector3& v2, const Vector3& v3)
+{
+ addVertex(v1,color);
+ addVertex(v2,color);
+ addVertex(v3,color);
+ //addNormals(cross(v2-v1,v3-v1).direction());
+ addSingularNormal(cross(v2-v1,v3-v1).direction());
+ addSingularNormal(cross(v3-v2,v1-v2).direction());
+ addSingularNormal(cross(v1-v3,v2-v3).direction());
+}
+
+void addQuad(const Vector3& v1, const Vector3& v2, const Vector3& v3, const Vector3& v4)
+{
+ addTriangle(v1, v2, v3);
+ addTriangle(v1, v3, v4);
+}
+
+void 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]));
+}
+
+void renderBlock(const Vector3& renderSize)
+{
+ _vertices.clear();
+ _indices.clear();
+ _normals.clear();
+ 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);
+ }
+
+ 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]);
+ glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
+}
+
+void renderShape(const Enum::Shape::Value& shape, const Vector3& size, const Color3& ncolor)
+{
+ color = ncolor;
+ switch(shape)
+ {
+ case Enum::Shape::Block:
+ renderBlock(size);
+ break;
+ case Enum::Shape::Ball:
+ glColor(ncolor);
+ glScalef(size.x, size.y, size.z);
+ gluSphere(gluNewQuadric(), 1, 20, 20);
+ break;
+ default:
+ glColor(ncolor);
+ glScalef(size.x, size.y, size.z);
+ glPushMatrix();
+ glRotatef(90, 0, 1, 0);
+ glTranslatef(0,0,1);
+ gluDisk(gluNewQuadric(), 0, 1, 12, 12);
+ glTranslatef(0,0,-2);
+ gluCylinder(gluNewQuadric(), 1, 1, 2, 12, 1);
+ glRotatef(180, 1, 0, 0);
+ gluDisk(gluNewQuadric(), 0, 1, 12, 12);
+ glPopMatrix();
+ }
+}
\ No newline at end of file
diff --git a/Renderer.h b/Renderer.h
new file mode 100644
index 0000000..25618ae
--- /dev/null
+++ b/Renderer.h
@@ -0,0 +1,6 @@
+#ifndef RENDERUTIL
+#define RENDERUTIL
+#include "Enum.h"
+#include "DataModelV2/Instance.h"
+void renderShape(const Enum::Shape::Value& shape, const Vector3& size, const Color3& ncolor);
+#endif
diff --git a/src/include/DataModelV2/Instance.h b/src/include/DataModelV2/Instance.h
index 596fa9f..b8009bd 100644
--- a/src/include/DataModelV2/Instance.h
+++ b/src/include/DataModelV2/Instance.h
@@ -2,7 +2,7 @@
#include
#include "propertyGrid.h"
#include "map"
-#include "Properties/BoolProperty.h"
+//#include "Properties/BoolProperty.h"
class Instance
{
diff --git a/src/include/DataModelV2/PartInstance.h b/src/include/DataModelV2/PartInstance.h
index 6df56b7..9aadd0c 100644
--- a/src/include/DataModelV2/PartInstance.h
+++ b/src/include/DataModelV2/PartInstance.h
@@ -48,20 +48,8 @@ public:
virtual std::vector getProperties();
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
#ifdef NEW_BOX_RENDER
- void addVertex(Vector3 vertexPos,Color3 color);
- void addNormals(Vector3 normal);
- void addSingularNormal(Vector3 normal);
- void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
- void addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4);
- void genSmoothNormals(int);
- void addSmoothTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
- void makeSmoothFace(int vertex1, int vertex2, int vertex3);
void addPlus(Vector3 v1);
void addPlus2(Vector3 v1);
- void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
- void makeFace(int vertex1, int vertex2, int vertex3);
- void fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd);
- bool isUniqueVertex(Vector3 pos);
#endif
private:
Vector3 position;
@@ -71,14 +59,6 @@ private:
float _bevelSize;
int _parseVert;
int _debugTimer;
- std::vector _debugUniqueVertices;
- #ifdef NEW_BOX_RENDER
- std::vector _vertices;
- std::vector _normals;
- #else
- GLfloat _vertices[96];
- #endif
- std::vector _indices;
bool changed;
Box itemBox;
GLuint glList;
diff --git a/src/include/Globals.h b/src/include/Globals.h
index 3e86d95..04d6f04 100644
--- a/src/include/Globals.h
+++ b/src/include/Globals.h
@@ -19,7 +19,7 @@ public:
static const int patch;
static G3D::TextureRef surface;
static int surfaceId;
- static const std::string g_PlaceholderName;
+ static const std::string g_appName;
static COLORREF g_acrCustClr[16]; //Will be dynamic later
static HWND mainHwnd;
};
@@ -38,4 +38,4 @@ extern std::string cameraSound;
extern std::string clickSound;
extern std::string dingSound;
extern HWND mainHwnd;
-const std::string g_PlaceholderName = "Dygysphere";
\ No newline at end of file
+const std::string g_appName = "Blocks3D";
\ No newline at end of file
diff --git a/src/include/Properties/BoolProperty.h b/src/include/Properties/BoolProperty.h
index ebdfe51..ef541ec 100644
--- a/src/include/Properties/BoolProperty.h
+++ b/src/include/Properties/BoolProperty.h
@@ -1,13 +1,12 @@
#pragma once
#include "Property.h"
-#pragma once
class BoolProperty : public Property
{
public:
- template
- BoolProperty(std::string name, bool& value)
+ BoolProperty(std::string name, bool& value, Instance& owner)
{
- Property(name, (T)value);
+ Property(name, value, owner);
}
~BoolProperty(void);
+ PROPGRIDITEM getPropGridItem();
};
diff --git a/src/include/Properties/Property.h b/src/include/Properties/Property.h
index 1519818..2a3a0d9 100644
--- a/src/include/Properties/Property.h
+++ b/src/include/Properties/Property.h
@@ -1,19 +1,30 @@
#pragma once
-#include "propertyGrid.h"
+#include "DataModelV2/Instance.h"
+#include
+class Instance;
+
template
class Property
{
public:
- Property(std::string name, T& value)
+ Property(std::string name, T& value, Instance& owner)
{
- value = t;
+ _value = value;
+ _owner = owner;
}
~Property(void);
- T getValue();
- void setValue(T);
- PROPGRIDITEM getPropGridItem();
+ const T getValue()
+ {
+ return _value;
+ }
+ const void setValue(T val)
+ {
+ _value = val;
+ }
+ virtual PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM item);
protected:
- std::string name;
- T* value;
+ Instance* _owner;
+ std::string _name;
+ T* _value;
};
diff --git a/src/source/Application.cpp b/src/source/Application.cpp
index d768ee8..dab8079 100644
--- a/src/source/Application.cpp
+++ b/src/source/Application.cpp
@@ -68,7 +68,7 @@ void Application::setFocus(bool focus)
Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(settings,window) {
- std::string tempPath = ((std::string)getenv("temp")) + "/"+g_PlaceholderName;
+ std::string tempPath = ((std::string)getenv("temp")) + "/"+g_appName;
CreateDirectory(tempPath.c_str(), NULL);
_hWndMain = parentWindow;
diff --git a/src/source/DataModelV2/DataModelInstance.cpp b/src/source/DataModelV2/DataModelInstance.cpp
index 8316b85..49484cc 100644
--- a/src/source/DataModelV2/DataModelInstance.cpp
+++ b/src/source/DataModelV2/DataModelInstance.cpp
@@ -31,7 +31,7 @@ DataModelInstance::DataModelInstance(void)
_loadedFileName="..//skooter.rbxm";
listicon = 5;
running = false;
-
+
}
void DataModelInstance::toggleRun()
@@ -255,7 +255,7 @@ Color3 bcToRGB(short bc)
bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
{
xml_node<> * watchFirstNode = scanNode->first_node();
-
+
for (xml_node<> *node = scanNode->first_node();node; node = node->next_sibling())
{
@@ -278,7 +278,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
{
std::string xmlName = attr->name();
std::string xmlValue = attr->value();
-
+
if (xmlValue=="CFrame" | xmlValue=="CoordinateFrame")
{
cFrameNode = partPropNode;
@@ -322,7 +322,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
{
sizeNode=featureNode;
_legacyLoad=true;
- }
+ }
}
}
}
@@ -348,11 +348,11 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
G = getFloatValue(colorNode,"G");
B = getFloatValue(colorNode,"B");
}
-
+
Enum::Shape::Value partshape = Enum::Shape::Block;
std::string pshape = shapeNode->value();
if (shapeNode)
- {
+ {
if(pshape == "0" || pshape == "Ball"){
partshape = Enum::Shape::Ball;
}
@@ -363,7 +363,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
partshape = Enum::Shape::Cylinder;
}
}
-
+
std::string newName = nameNode->value();
float X = getFloatValue(cFrameNode,"X");
float Y = getFloatValue(cFrameNode,"Y");
@@ -396,10 +396,10 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
test->setSize(Vector3(sizeX,sizeY+_modY,sizeZ));
test->setName(newName);
CoordinateFrame cf;
-
+
if (_legacyLoad)
{
-
+
cf = CoordinateFrame(Vector3(-X,Y,Z))*CoordinateFrame(Vector3(-sizeX/2,(sizeY+_modY)/2,sizeZ/2)*Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22));
cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
}
@@ -408,7 +408,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
cf.translation = Vector3(X,Y,Z);
cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
}
-
+
test->setCFrame(cf);
}
else
@@ -564,9 +564,9 @@ void DataModelInstance::drawMessage(RenderDevice* rd)
}
}
char brkc[12];
- sprintf_s(brkc, "%d", brickCount);
+ sprintf(brkc, "%d", brickCount);
char instc[12];
- sprintf_s(instc, "%d", instCount);
+ sprintf(instc, "%d", instCount);
message = "Bricks: ";
message += brkc;
message += " Snaps: ";
@@ -610,4 +610,4 @@ GuiRootInstance* DataModelInstance::getGuiRoot()
LevelInstance* DataModelInstance::getLevel()
{
return level;
-}
\ No newline at end of file
+}
diff --git a/src/source/DataModelV2/LevelInstance.cpp b/src/source/DataModelV2/LevelInstance.cpp
index 7757916..01f9b3d 100644
--- a/src/source/DataModelV2/LevelInstance.cpp
+++ b/src/source/DataModelV2/LevelInstance.cpp
@@ -36,8 +36,8 @@ std::vector LevelInstance::getProperties()
PIT_EDIT));
- sprintf_s(timerTxt, "%g", timer);
- sprintf_s(scoreTxt, "%d", score);
+ sprintf(timerTxt, "%g", timer);
+ sprintf(scoreTxt, "%d", score);
properties.push_back(createPGI("Gameplay",
"InitialTimerValue",
"The ammount of time in seconds the player has to complete this level.\r\n\r\nPut 0 if time is limitless.",
@@ -70,4 +70,4 @@ void LevelInstance::PropUpdate(LPPROPGRIDITEM &pItem)
}
else
Instance::PropUpdate(pItem);
-}
\ No newline at end of file
+}
diff --git a/src/source/DataModelV2/PartInstance.cpp b/src/source/DataModelV2/PartInstance.cpp
index 9a9033c..a0e71f8 100644
--- a/src/source/DataModelV2/PartInstance.cpp
+++ b/src/source/DataModelV2/PartInstance.cpp
@@ -1,5 +1,6 @@
#include "DataModelV2/PartInstance.h"
#include "Globals.h"
+#include "../../Renderer.h"
#include
#include
@@ -69,9 +70,9 @@ void PartInstance::postRender(RenderDevice *rd)
{
if(distance < 0)
distance = distance*-1;
- glDisable(GL_DEPTH_TEST);
+ glDisable(GL_DEPTH_TEST);
fnt->draw3D(rd, name, CoordinateFrame(rd->getCameraToWorldMatrix().rotation, gamepoint), 0.03*distance, Color3::yellow(), Color3::black(), G3D::GFont::XALIGN_CENTER, G3D::GFont::YALIGN_CENTER);
- glEnable(GL_DEPTH_TEST);
+ glEnable(GL_DEPTH_TEST);
}
}
}
@@ -222,21 +223,21 @@ bool PartInstance::collides(PartInstance * part)
{
if(part->shape == Enum::Shape::Block)
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidBox(getSphere(), part->getBox());
- else
+ else
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidSphere(getSphere(), part->getSphere());
}
}
#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;
}
Sphere PartInstance::getSphere()
-{
+{
Sphere sphere = Sphere(Vector3(0,0,0), size.y/2);
CoordinateFrame c = getCFrameRenderBased();
//itemBox = c.toWorldSpace(Sphere);
@@ -280,74 +281,16 @@ bool PartInstance::collides(Box box)
return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box);
}
#ifdef NEW_BOX_RENDER
-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::addSingularNormal(Vector3 normal)
-{
- _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());
- addSingularNormal(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(v3-v2,v1-v2).direction());
- addSingularNormal(cross(v1-v3,v2-v3).direction());
-}
-
-void PartInstance::addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4)
-{
- addTriangle(v1, v2, v3);
- addTriangle(v1, v3, v4);
-}
-
-void PartInstance::genSmoothNormals(int count = -1)
-{
- if(count < 0)
- {
-
- }
-}
-
-void PartInstance::addSmoothTriangle(Vector3 v1, Vector3 v2, Vector3 v3)
-{
- addVertex(v1,color);
- addVertex(v2,color);
- addVertex(v3,color);
- //addNormals(cross(v2-v1,v3-v1).direction());
- //addSingularNormal(Vector3(cross(v2-v1,v3-v1) + cross(v3-v2,v1-v2) + cross(v1-v3,v2-v3)).direction());
- addSingularNormal(v1.direction());
- addSingularNormal(v2.direction());
- addSingularNormal(v3.direction());
-}
-void PartInstance::addPlus(Vector3 v1)
+
+/*void PartInstance::addPlus(Vector3 v1)
{
float renderY = max(size.z, max(size.x, size.y))/2 * 0.775;
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);
@@ -359,7 +302,7 @@ void PartInstance::addPlus(Vector3 v1)
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);
@@ -371,7 +314,7 @@ void PartInstance::addPlus(Vector3 v1)
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);
@@ -383,7 +326,7 @@ void PartInstance::addPlus(Vector3 v1)
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);
@@ -391,7 +334,7 @@ void PartInstance::addPlus(Vector3 v1)
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
+
}
@@ -401,7 +344,7 @@ void PartInstance::addPlus2(Vector3 v1)
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);
@@ -413,7 +356,7 @@ void PartInstance::addPlus2(Vector3 v1)
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);
@@ -425,7 +368,7 @@ void PartInstance::addPlus2(Vector3 v1)
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);
@@ -437,7 +380,7 @@ void PartInstance::addPlus2(Vector3 v1)
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);
@@ -445,63 +388,11 @@ void PartInstance::addPlus2(Vector3 v1)
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)
-{
- _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]));
-}
- void PartInstance::fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd)
-{
- for(unsigned int i = 0; i < countVN; i++)
- {
- _vertices.push_back(verts[i]);
- _normals.push_back(norms[i]);
- }
- for(unsigned int i = 0; i < countInd; i++)
- {
- _indices.push_back(ind[i]);
- }
}
-void PartInstance::makeSmoothFace(int vertex1,int vertex2, int vertex3)
-{
- addSmoothTriangle(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;
-}
+*/
+
+
//int rings = 15;
//int sectors = 15;
void PartInstance::render(RenderDevice* rd) {
@@ -512,383 +403,31 @@ void PartInstance::render(RenderDevice* rd) {
//postRenderStack.push_back(this);
if (changed)
{
-
+
getBox();
- _vertices.clear();
- _normals.clear();
- _indices.clear();
//std::vector(_vertices).swap(_vertices); //Clear the memory
Vector3 renderSize = size/2;
- switch(this->shape)
- {
- case Enum::Shape::Ball:
- {
- glNewList(glList, GL_COMPILE);
- glColor(this->color);
- glPushMatrix();
- glScalef(renderSize.x, renderSize.y, renderSize.z);
- gluSphere(gluNewQuadric(), 1, 20, 20);
- glPopMatrix();
- glEndList();
- rd->setObjectToWorldMatrix(cFrame);
- glCallList(glList);
- changed = false;
- return;
- }
- break;
- 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:
- {
- /*int fsize = renderSize.y/(pi()/2);
- //makeFace(0,0,48);
- // Front
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z)
- );
-
- addTriangle(Vector3(-renderSize.x,renderSize.y-fsize,renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z),
- Vector3(renderSize.x,renderSize.y-fsize,renderSize.z)
- );
-
- // Top
- addTriangle(Vector3(renderSize.x,renderSize.y,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y,-renderSize.z+fsize),
- Vector3(-renderSize.x,renderSize.y,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,renderSize.y,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y,-renderSize.z+fsize),
- Vector3(-renderSize.x,renderSize.y,-renderSize.z+fsize)
- );
-
- // Back
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z),
- Vector3(renderSize.x,-renderSize.y+fsize,-renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z)
- );
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z),
- Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z)
- );
-
- // Bottom
- addTriangle(Vector3(renderSize.x,-renderSize.y,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y,renderSize.z-fsize),
- Vector3(-renderSize.x,-renderSize.y,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,-renderSize.y,renderSize.z-fsize),
- Vector3(-renderSize.x,-renderSize.y,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y,-renderSize.z+fsize)
- );
- // Left
- /*addTriangle(Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(-renderSize.x,renderSize.y-fsize,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z+fsize)
- );
- // Right
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z-fsize),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z+fsize)
- );
- addTriangle(Vector3(renderSize.x,-renderSize.y+fsize,-renderSize.z+fsize),
- Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z-fsize)
- );//*/
-
-
- /*// 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);*/
- /*float radius = renderSize.y + (renderSize.y * (1 - cos(pi() / 12)));
- Vector2 xy[13];
- for(int i = 0; i < 13; i++)
- {
- //Get the next point
- float y = radius * cos(((double)i-G3D::toRadians(29)) * pi()/6);
- float z = radius * sin(((double)i-G3D::toRadians(29)) * pi()/6);
- xy[i] = Vector2(y,z);
- }
- for(int i = 0; i < 12; i++)
- {
- //Create a Quad for the face (i to i+1)
- addSmoothTriangle(
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y));
- addSmoothTriangle(
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
- Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
- //Cap on the right
- addTriangle(
- Vector3(renderSize.x, xy[0].x, xy[0].y),
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
- //Cap on the left
- addTriangle(
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
- Vector3(-renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[0].x, xy[0].y));
- }*/
- /*float facetRatio = renderSize.x / (pi() * 0.5F);
- addQuad(
- Vector3(renderSize.x, renderSize.y, renderSize.z-facetRatio),
- Vector3(renderSize.x, renderSize.y, -renderSize.z+facetRatio),
- Vector3(-renderSize.x, renderSize.y, -renderSize.z+facetRatio),
- Vector3(-renderSize.x, renderSize.y, renderSize.z-facetRatio));
-
- addQuad(
- Vector3(renderSize.x, renderSize.y-facetRatio, renderSize.z),
- Vector3(-renderSize.x, renderSize.y-facetRatio, renderSize.z),
- Vector3(-renderSize.x, -renderSize.y+facetRatio, renderSize.z),
- Vector3(renderSize.x, -renderSize.y+facetRatio, renderSize.z));
- addQuad(
- Vector3(-renderSize.x, -renderSize.y, renderSize.z-facetRatio),
- Vector3(-renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
- Vector3(renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
- Vector3(renderSize.x, -renderSize.y, renderSize.z-facetRatio));
- addQuad(
- Vector3(renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
- Vector3(-renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
- Vector3(-renderSize.x, renderSize.y-facetRatio, -renderSize.z),
- Vector3(renderSize.x, renderSize.y-facetRatio, -renderSize.z));*/
-
- /*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++) {
- _indices.push_back(i);
- }
- //std::reverse(_vertices.begin(), _vertices.end());
- //std::reverse(_normals.begin(), _normals.end());
- )*/
- GLUquadric* q = gluNewQuadric();
-
- 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++) {
- _indices.push_back(i);
- }
- 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]);
- glNewList(glList, GL_COMPILE);
- glColor(this->color);
- glPushMatrix();
- glRotatef(90, 0, 1, 0);
- glScalef(renderSize.x, renderSize.y, renderSize.z);
- glTranslatef(0,0,1);
- gluDisk(q, 0, 1, 12, 12);
- glTranslatef(0,0,-2);
- gluCylinder(q, 1, 1, 2, 12, 1);
- glRotatef(180, 1, 0, 0);
- gluDisk(q, 0, 1, 12, 12);
- glPopMatrix();
- glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
- glEndList();
- rd->setObjectToWorldMatrix(cFrame);
- glCallList(glList);
- changed = false;
- return;
-
- }
- break;
- }
- 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]);
- glNewList(glList, GL_COMPILE);
- //glPushMatrix();
- //glTranslatef(2,7,0);
- glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
- //glPopMatrix();
+ glNewList(glList, GL_COMPILE_AND_EXECUTE);
+ glColor(this->color);
+ renderShape(this->shape, renderSize, color);
glEndList();
+ changed = false;
+ return;
+
+ changed=false;
+
}
rd->setObjectToWorldMatrix(cFrame);
glCallList(glList);
postRender(rd);
//rd->setObjectToWorldMatrix(cFrame);
-
+
}
#else
void PartInstance::render(RenderDevice* rd)
{
-
+
if(changed)
{
Box box = getBox();
@@ -897,7 +436,7 @@ void PartInstance::render(RenderDevice* rd)
glColor(color);
/*glEnable( GL_TEXTURE_2D );
glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture( GL_TEXTURE_2D, Globals::surfaceId);
glBegin(GL_QUADS);*/
for(int i = 0; i < 96; i+=16)
@@ -934,7 +473,7 @@ void PartInstance::render(RenderDevice* rd)
glVertex3fv(v3);*/
glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin( GL_QUADS );
glNormal3fv((v1 - v0).cross(v3 - v0).direction());
//glTexCoord2d(0.0,0.0+add);
@@ -961,7 +500,7 @@ void PartInstance::render(RenderDevice* rd)
children.at(i)->render(rd);
}
}
-
+
}
#endif
@@ -1078,7 +617,7 @@ void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
std::vector PartInstance::getProperties()
{
std::vector properties = PVInstance::getProperties();
-
+
properties.push_back(createPGI(
"Properties",
@@ -1094,7 +633,7 @@ std::vector PartInstance::getProperties()
(LPARAM)anchored,
PIT_CHECK
));
- sprintf_s(pto, "%g, %g, %g", position.x, position.y, position.z);
+ sprintf(pto, "%g, %g, %g", position.x, position.y, position.z);
properties.push_back(createPGI(
"Item",
"Offset",
@@ -1102,7 +641,7 @@ std::vector PartInstance::getProperties()
(LPARAM)pto,
PIT_EDIT
));
- sprintf_s(pto2, "%g, %g, %g", size.x, size.y, size.z);
+ sprintf(pto2, "%g, %g, %g", size.x, size.y, size.z);
properties.push_back(createPGI(
"Item",
"Size",
diff --git a/src/source/ErrorFunctions.cpp b/src/source/ErrorFunctions.cpp
index 86beba2..4b224f1 100644
--- a/src/source/ErrorFunctions.cpp
+++ b/src/source/ErrorFunctions.cpp
@@ -3,12 +3,13 @@
#include "Globals.h"
+
void OnError(int err, std::string msg)
{
//g_usableApp->window()->setInputCaptureCount(0);
//g_usableApp->window()->setMouseVisible(true);
- std::string emsg = "An unexpected error has occured and "+g_PlaceholderName+" has to quit. We're sorry!" + msg;
- std::string title = g_PlaceholderName+"Crash";
+ std::string emsg = "An unexpected error has occured and "+g_appName+" has to quit. We're sorry!" + msg;
+ std::string title = g_appName+" Crash";
//clearInstances();
MessageBox(NULL, emsg.c_str(), title.c_str(), MB_OK);
exit(err);
@@ -17,13 +18,13 @@ void OnError(int err, std::string msg)
void MessageBoxStr(std::string msg)
{
- std::string title = g_PlaceholderName;
+ std::string title = g_appName;
MessageBox(NULL, msg.c_str(), title.c_str(), MB_OK);
}
void MessageBoxStream(std::stringstream msg)
{
std::string strMsg = msg.str();
- std::string title = g_PlaceholderName;
+ std::string title = g_appName;
MessageBox(NULL, strMsg.c_str(), title.c_str(), MB_OK);
}
\ No newline at end of file
diff --git a/src/source/IEBrowser.cpp b/src/source/IEBrowser.cpp
index b67b75e..60e91cd 100644
--- a/src/source/IEBrowser.cpp
+++ b/src/source/IEBrowser.cpp
@@ -123,7 +123,7 @@ bool IEBrowser::navigateSyncURL(wchar_t* url)
}
else
{
- MessageBox(NULL,"Cannot read IWebBrowser2...",(g_PlaceholderName+" Crash").c_str(),MB_OK);
+ MessageBox(NULL,"Cannot read IWebBrowser2...",(g_appName+" Crash").c_str(),MB_OK);
}
return false;
diff --git a/src/source/Properties/BoolProperty.cpp b/src/source/Properties/BoolProperty.cpp
new file mode 100644
index 0000000..744db4b
--- /dev/null
+++ b/src/source/Properties/BoolProperty.cpp
@@ -0,0 +1,5 @@
+//#include "Properties/BoolProperty.h"
+//PROPGRIDITEM BoolProperty::getPropGridItem()
+//{
+ //return PROPGRIDITEM();
+//}
\ No newline at end of file
diff --git a/src/source/Properties/Property.cpp b/src/source/Properties/Property.cpp
index e69de29..3221ffb 100644
--- a/src/source/Properties/Property.cpp
+++ b/src/source/Properties/Property.cpp
@@ -0,0 +1,7 @@
+#include "Properties/Property.h"
+
+template
+void Property::setProperty(LPPROPGRIDITEM item)
+{
+ _owner->propertiesChanged();
+}
\ No newline at end of file
diff --git a/src/source/main.cpp b/src/source/main.cpp
index 9af942d..541355c 100644
--- a/src/source/main.cpp
+++ b/src/source/main.cpp
@@ -2,6 +2,7 @@
#define _WIN32_WINNT 0x0400
#define _WIN32_WINDOWS 0x0400
#define WINVER 0x0400
+#define _CRTBLD
#include "resource.h"
#include "Application.h"
@@ -205,7 +206,7 @@ int main(int argc, char** argv) {
);
if(hwndMain == NULL)
{
- MessageBox(NULL, "Critical error loading: Failed to create HWND, must exit", (g_PlaceholderName + " Crash").c_str() , MB_OK);
+ MessageBox(NULL, "Critical error loading: Failed to create HWND, must exit", (g_appName + " Crash").c_str() , MB_OK);
return 0;
}
SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE));
diff --git a/src/source/propertyGrid.cpp b/src/source/propertyGrid.cpp
index 6efa9cc..2de3fae 100644
--- a/src/source/propertyGrid.cpp
+++ b/src/source/propertyGrid.cpp
@@ -10,12 +10,12 @@
/// This source is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-///
-/// @date 2-27-16
-///
-/// @todo
///
-/// @bug
+/// @date 2-27-16
+///
+/// @todo
+///
+/// @bug
///
//////////////////////////////////////////////////////////////////////////////
@@ -29,7 +29,7 @@
//DWM 1.8: Version 1.8 changes labelled thus.
//DWM 1.9: Version 1.9 changes labelled thus.
-//DWM 1.9: Suppress POCC Warning "Argument x to 'sscanf' does not match the format string;
+//DWM 1.9: Suppress POCC Warning "Argument x to 'sscanf' does not match the format string;
// expected 'unsigned char *' but found 'unsigned long'"
#ifdef __POCC__
#pragma warn(disable:2234)
@@ -73,7 +73,7 @@
#define _tmemcpy memcpy_s
#define _tmemmove memmove
#define _tmemset memset
-#define _stprintf _snprintf_s
+#define _stprintf _snprintf
#endif
#define ToolTip_AddTool(hwnd,lpti) (BOOL)SNDMSG((hwnd),TTM_ADDTOOL,0,(LPARAM)(LPTOOLINFO)(lpti))
@@ -103,7 +103,7 @@
//DWM 1.2: Converted the following 4 items to constants
#define SELECT _T("T") ///< PIT_CHECK select
#define UNSELECT _T("F") ///< PIT_CHECK unselect
-#define CHECKED SELECT ///< PIT_CHECK checked
+#define CHECKED SELECT ///< PIT_CHECK checked
#define UNCHECKED UNSELECT ///< PIT_CHECK unchecked
//DWM 1.3: Added
@@ -142,7 +142,7 @@
/// in a list box.
///
/// @param hwndCtl The handle of a listbox.
-/// @param xPos The x coordinate of a point.
+/// @param xPos The x coordinate of a point.
/// @param yPos The y coordinate of a point.
///
/// @returns The return value contains the index of the nearest item
@@ -290,7 +290,7 @@ static LPINSTANCEDATA g_lpInst; ///< instance data (this) pointer
/// @brief Get the Instance data associated with this instance.
///
/// @param hControl Handle to Current instance.
-/// @param ppInstanceData - Pointer to the address of an INSTANCEDATA struct.
+/// @param ppInstanceData - Pointer to the address of an INSTANCEDATA struct.
///
/// @returns TRUE if successful
static BOOL Control_GetInstanceData(HWND hControl, LPINSTANCEDATA * ppInstanceData)
@@ -362,7 +362,7 @@ static LPTSTR NewString(LPTSTR str)
if(NULL == tmp)
{
- return (LPTSTR)calloc(1, sizeof(TCHAR));
+ return (LPTSTR)calloc(1, sizeof(TCHAR));
}
return (LPTSTR)_tmemmove(tmp, str, _tcslen(str));
}
@@ -386,7 +386,7 @@ static LPTSTR NewStringArray(LPTSTR szzStr)
if(NULL == tmp)
{
- return (LPTSTR)calloc(1, sizeof(TCHAR));
+ return (LPTSTR)calloc(1, sizeof(TCHAR));
}
return (LPTSTR)_tmemmove(tmp, szzStr, iLen);
}
@@ -482,7 +482,7 @@ static VOID Editor_OnKillFocus(HWND hwnd, HWND hwndNewFocus)
g_lpInst->fGotFocus =
(NULL != hwndNewFocus &&
(g_lpInst->hwndListBox == hwndNewFocus ||
- g_lpInst->hwndCtl1 == hwndNewFocus ||
+ g_lpInst->hwndCtl1 == hwndNewFocus ||
g_lpInst->hwndCtl2 == hwndNewFocus ||
g_lpInst->hwndPropDesc == hwndNewFocus ||
g_lpInst->hwndToolTip == hwndNewFocus));
@@ -653,7 +653,7 @@ static BOOL Editor_OnPaint(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
rect.left += 1;
rect.bottom += 1;
rect.right += 1;
-
+
DrawBorder(hdc, &rect, BF_RECT, GetSysColor(COLOR_WINDOW));
ReleaseDC(hwnd, hdc);
@@ -1149,7 +1149,7 @@ static HWND CreateIpEdit(HINSTANCE hInstance, HWND hwndParent, INT id, LPRECT lp
NULL,
dwStyle,
CW_USEDEFAULT, // x position can be changed after creation
- CW_USEDEFAULT, // y position can be changed after creation
+ CW_USEDEFAULT, // y position can be changed after creation
lprc->right - lprc->left, // width can only be set here
lprc->bottom - lprc->top, // height can only be set here
hwndParent, (HMENU)id, hInstance, NULL);
@@ -3272,7 +3272,7 @@ static HBRUSH Grid_OnCtlColorStatic(HWND hwnd, HDC hdc, HWND hwndChild, INT type
FillSolidRect(hdc,MAKE_PRECT(0, g_lpInst->iVDivider - 2,
WIDTH(rc), g_lpInst->iVDivider),GetSysColor(COLOR_BTNFACE));
ReleaseDC(hwnd,hdc);
- }
+ }
return FORWARD_WM_CTLCOLORSTATIC(hwnd, hdc, hwndChild, DefWindowProc);
}