New render code

This commit is contained in:
Vulpovile
2021-03-13 19:07:15 -08:00
parent 8b4460c104
commit cdba7f6eee
18 changed files with 348 additions and 576 deletions

View File

@@ -288,6 +288,10 @@
RelativePath=".\src\source\PropertyWindow.cpp" RelativePath=".\src\source\PropertyWindow.cpp"
> >
</File> </File>
<File
RelativePath=".\Renderer.cpp"
>
</File>
<File <File
RelativePath=".\src\source\StringFunctions.cpp" RelativePath=".\src\source\StringFunctions.cpp"
> >
@@ -619,6 +623,10 @@
<Filter <Filter
Name="Properties" Name="Properties"
> >
<File
RelativePath=".\src\source\Properties\BoolProperty.cpp"
>
</File>
<File <File
RelativePath=".\src\source\Properties\Property.cpp" RelativePath=".\src\source\Properties\Property.cpp"
> >
@@ -641,10 +649,6 @@
RelativePath=".\src\include\ax.h" RelativePath=".\src\include\ax.h"
> >
</File> </File>
<File
RelativePath=".\src\include\Properties\BoolProperty.h"
>
</File>
<File <File
RelativePath=".\src\include\BrowserCallHandler.h" RelativePath=".\src\include\BrowserCallHandler.h"
> >
@@ -689,6 +693,10 @@
RelativePath=".\src\include\PropertyWindow.h" RelativePath=".\src\include\PropertyWindow.h"
> >
</File> </File>
<File
RelativePath=".\Renderer.h"
>
</File>
<File <File
RelativePath=".\src\include\resource.h" RelativePath=".\src\include\resource.h"
> >
@@ -836,6 +844,10 @@
<Filter <Filter
Name="Properties" Name="Properties"
> >
<File
RelativePath=".\src\include\Properties\BoolProperty.h"
>
</File>
<File <File
RelativePath=".\src\include\Properties\Property.h" RelativePath=".\src\include\Properties\Property.h"
> >

211
Renderer.cpp Normal file
View File

@@ -0,0 +1,211 @@
#include "Renderer.h"
#include <G3DAll.h>
float _bevelSize = 0.07F;
std::vector<Vector3> _debugUniqueVertices;
std::vector<GLfloat> _vertices;
std::vector<GLfloat> _normals;
std::vector<GLushort> _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();
}
}

6
Renderer.h Normal file
View File

@@ -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

View File

@@ -2,7 +2,7 @@
#include <G3DAll.h> #include <G3DAll.h>
#include "propertyGrid.h" #include "propertyGrid.h"
#include "map" #include "map"
#include "Properties/BoolProperty.h" //#include "Properties/BoolProperty.h"
class Instance class Instance
{ {

View File

@@ -48,20 +48,8 @@ public:
virtual std::vector<PROPGRIDITEM> getProperties(); virtual std::vector<PROPGRIDITEM> getProperties();
virtual void PropUpdate(LPPROPGRIDITEM &pItem); virtual void PropUpdate(LPPROPGRIDITEM &pItem);
#ifdef NEW_BOX_RENDER #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 addPlus(Vector3 v1);
void addPlus2(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 #endif
private: private:
Vector3 position; Vector3 position;
@@ -71,14 +59,6 @@ private:
float _bevelSize; float _bevelSize;
int _parseVert; int _parseVert;
int _debugTimer; 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;
GLuint glList; GLuint glList;

View File

@@ -19,7 +19,7 @@ public:
static const int patch; static const int patch;
static G3D::TextureRef surface; static G3D::TextureRef surface;
static int surfaceId; 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 COLORREF g_acrCustClr[16]; //Will be dynamic later
static HWND mainHwnd; static HWND mainHwnd;
}; };
@@ -38,4 +38,4 @@ extern std::string cameraSound;
extern std::string clickSound; extern std::string clickSound;
extern std::string dingSound; extern std::string dingSound;
extern HWND mainHwnd; extern HWND mainHwnd;
const std::string g_PlaceholderName = "Dygysphere"; const std::string g_appName = "Blocks3D";

View File

@@ -1,13 +1,12 @@
#pragma once #pragma once
#include "Property.h" #include "Property.h"
#pragma once
class BoolProperty : public Property<bool> class BoolProperty : public Property<bool>
{ {
public: public:
template <typename T> BoolProperty(std::string name, bool& value, Instance& owner)
BoolProperty(std::string name, bool& value)
{ {
Property(name, (T)value); Property<bool>(name, value, owner);
} }
~BoolProperty(void); ~BoolProperty(void);
PROPGRIDITEM getPropGridItem();
}; };

View File

@@ -1,19 +1,30 @@
#pragma once #pragma once
#include "propertyGrid.h" #include "DataModelV2/Instance.h"
#include <string>
class Instance;
template <typename T> template <typename T>
class Property class Property
{ {
public: public:
Property(std::string name, T& value) Property(std::string name, T& value, Instance& owner)
{ {
value = t; _value = value;
_owner = owner;
} }
~Property(void); ~Property(void);
T getValue(); const T getValue()
void setValue(T); {
PROPGRIDITEM getPropGridItem(); return _value;
}
const void setValue(T val)
{
_value = val;
}
virtual PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM item); void setProperty(LPPROPGRIDITEM item);
protected: protected:
std::string name; Instance* _owner;
T* value; std::string _name;
T* _value;
}; };

View File

@@ -68,7 +68,7 @@ void Application::setFocus(bool focus)
Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(settings,window) { 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); CreateDirectory(tempPath.c_str(), NULL);
_hWndMain = parentWindow; _hWndMain = parentWindow;

View File

@@ -564,9 +564,9 @@ void DataModelInstance::drawMessage(RenderDevice* rd)
} }
} }
char brkc[12]; char brkc[12];
sprintf_s(brkc, "%d", brickCount); sprintf(brkc, "%d", brickCount);
char instc[12]; char instc[12];
sprintf_s(instc, "%d", instCount); sprintf(instc, "%d", instCount);
message = "Bricks: "; message = "Bricks: ";
message += brkc; message += brkc;
message += " Snaps: "; message += " Snaps: ";

View File

@@ -36,8 +36,8 @@ std::vector<PROPGRIDITEM> LevelInstance::getProperties()
PIT_EDIT)); PIT_EDIT));
sprintf_s(timerTxt, "%g", timer); sprintf(timerTxt, "%g", timer);
sprintf_s(scoreTxt, "%d", score); sprintf(scoreTxt, "%d", score);
properties.push_back(createPGI("Gameplay", properties.push_back(createPGI("Gameplay",
"InitialTimerValue", "InitialTimerValue",
"The ammount of time in seconds the player has to complete this level.\r\n\r\nPut 0 if time is limitless.", "The ammount of time in seconds the player has to complete this level.\r\n\r\nPut 0 if time is limitless.",

View File

@@ -1,5 +1,6 @@
#include "DataModelV2/PartInstance.h" #include "DataModelV2/PartInstance.h"
#include "Globals.h" #include "Globals.h"
#include "../../Renderer.h"
#include <sstream> #include <sstream>
#include <iomanip> #include <iomanip>
@@ -280,68 +281,10 @@ bool PartInstance::collides(Box box)
return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box); return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box);
} }
#ifdef NEW_BOX_RENDER #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; float renderY = max(size.z, max(size.x, size.y))/2 * 0.775;
Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f); Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f);
@@ -447,61 +390,9 @@ void PartInstance::addPlus2(Vector3 v1)
addSingularNormal(cross(vx1-vx3,vx2-vx3).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 rings = 15;
//int sectors = 15; //int sectors = 15;
void PartInstance::render(RenderDevice* rd) { void PartInstance::render(RenderDevice* rd) {
@@ -514,370 +405,18 @@ void PartInstance::render(RenderDevice* rd) {
{ {
getBox(); getBox();
_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::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), glNewList(glList, GL_COMPILE_AND_EXECUTE);
Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,renderSize.z), glColor(this->color);
Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,renderSize.z) renderShape(this->shape, renderSize, color);
); glEndList();
changed = false;
// Top return;
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; 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();
glEndList();
} }
rd->setObjectToWorldMatrix(cFrame); rd->setObjectToWorldMatrix(cFrame);
glCallList(glList); glCallList(glList);
@@ -1094,7 +633,7 @@ std::vector<PROPGRIDITEM> PartInstance::getProperties()
(LPARAM)anchored, (LPARAM)anchored,
PIT_CHECK 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( properties.push_back(createPGI(
"Item", "Item",
"Offset", "Offset",
@@ -1102,7 +641,7 @@ std::vector<PROPGRIDITEM> PartInstance::getProperties()
(LPARAM)pto, (LPARAM)pto,
PIT_EDIT 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( properties.push_back(createPGI(
"Item", "Item",
"Size", "Size",

View File

@@ -3,12 +3,13 @@
#include "Globals.h" #include "Globals.h"
void OnError(int err, std::string msg) void OnError(int err, std::string msg)
{ {
//g_usableApp->window()->setInputCaptureCount(0); //g_usableApp->window()->setInputCaptureCount(0);
//g_usableApp->window()->setMouseVisible(true); //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 emsg = "An unexpected error has occured and "+g_appName+" has to quit. We're sorry!" + msg;
std::string title = g_PlaceholderName+"Crash"; std::string title = g_appName+" Crash";
//clearInstances(); //clearInstances();
MessageBox(NULL, emsg.c_str(), title.c_str(), MB_OK); MessageBox(NULL, emsg.c_str(), title.c_str(), MB_OK);
exit(err); exit(err);
@@ -17,13 +18,13 @@ void OnError(int err, std::string msg)
void MessageBoxStr(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); MessageBox(NULL, msg.c_str(), title.c_str(), MB_OK);
} }
void MessageBoxStream(std::stringstream msg) void MessageBoxStream(std::stringstream msg)
{ {
std::string strMsg = msg.str(); 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); MessageBox(NULL, strMsg.c_str(), title.c_str(), MB_OK);
} }

View File

@@ -123,7 +123,7 @@ bool IEBrowser::navigateSyncURL(wchar_t* url)
} }
else 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; return false;

View File

@@ -0,0 +1,5 @@
//#include "Properties/BoolProperty.h"
//PROPGRIDITEM BoolProperty::getPropGridItem()
//{
//return PROPGRIDITEM();
//}

View File

@@ -0,0 +1,7 @@
#include "Properties/Property.h"
template <typename T>
void Property<T>::setProperty(LPPROPGRIDITEM item)
{
_owner->propertiesChanged();
}

View File

@@ -2,6 +2,7 @@
#define _WIN32_WINNT 0x0400 #define _WIN32_WINNT 0x0400
#define _WIN32_WINDOWS 0x0400 #define _WIN32_WINDOWS 0x0400
#define WINVER 0x0400 #define WINVER 0x0400
#define _CRTBLD
#include "resource.h" #include "resource.h"
#include "Application.h" #include "Application.h"
@@ -205,7 +206,7 @@ int main(int argc, char** argv) {
); );
if(hwndMain == NULL) 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; return 0;
} }
SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE));

View File

@@ -73,7 +73,7 @@
#define _tmemcpy memcpy_s #define _tmemcpy memcpy_s
#define _tmemmove memmove #define _tmemmove memmove
#define _tmemset memset #define _tmemset memset
#define _stprintf _snprintf_s #define _stprintf _snprintf
#endif #endif
#define ToolTip_AddTool(hwnd,lpti) (BOOL)SNDMSG((hwnd),TTM_ADDTOOL,0,(LPARAM)(LPTOOLINFO)(lpti)) #define ToolTip_AddTool(hwnd,lpti) (BOOL)SNDMSG((hwnd),TTM_ADDTOOL,0,(LPARAM)(LPTOOLINFO)(lpti))