New render code
This commit is contained in:
@@ -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
211
Renderer.cpp
Normal 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
6
Renderer.h
Normal 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
|
||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -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();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ DataModelInstance::DataModelInstance(void)
|
|||||||
_loadedFileName="..//skooter.rbxm";
|
_loadedFileName="..//skooter.rbxm";
|
||||||
listicon = 5;
|
listicon = 5;
|
||||||
running = false;
|
running = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataModelInstance::toggleRun()
|
void DataModelInstance::toggleRun()
|
||||||
@@ -255,7 +255,7 @@ Color3 bcToRGB(short bc)
|
|||||||
bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
||||||
{
|
{
|
||||||
xml_node<> * watchFirstNode = scanNode->first_node();
|
xml_node<> * watchFirstNode = scanNode->first_node();
|
||||||
|
|
||||||
for (xml_node<> *node = scanNode->first_node();node; node = node->next_sibling())
|
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 xmlName = attr->name();
|
||||||
std::string xmlValue = attr->value();
|
std::string xmlValue = attr->value();
|
||||||
|
|
||||||
if (xmlValue=="CFrame" | xmlValue=="CoordinateFrame")
|
if (xmlValue=="CFrame" | xmlValue=="CoordinateFrame")
|
||||||
{
|
{
|
||||||
cFrameNode = partPropNode;
|
cFrameNode = partPropNode;
|
||||||
@@ -322,7 +322,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
|||||||
{
|
{
|
||||||
sizeNode=featureNode;
|
sizeNode=featureNode;
|
||||||
_legacyLoad=true;
|
_legacyLoad=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -348,11 +348,11 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
|||||||
G = getFloatValue(colorNode,"G");
|
G = getFloatValue(colorNode,"G");
|
||||||
B = getFloatValue(colorNode,"B");
|
B = getFloatValue(colorNode,"B");
|
||||||
}
|
}
|
||||||
|
|
||||||
Enum::Shape::Value partshape = Enum::Shape::Block;
|
Enum::Shape::Value partshape = Enum::Shape::Block;
|
||||||
std::string pshape = shapeNode->value();
|
std::string pshape = shapeNode->value();
|
||||||
if (shapeNode)
|
if (shapeNode)
|
||||||
{
|
{
|
||||||
if(pshape == "0" || pshape == "Ball"){
|
if(pshape == "0" || pshape == "Ball"){
|
||||||
partshape = Enum::Shape::Ball;
|
partshape = Enum::Shape::Ball;
|
||||||
}
|
}
|
||||||
@@ -363,7 +363,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
|||||||
partshape = Enum::Shape::Cylinder;
|
partshape = Enum::Shape::Cylinder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string newName = nameNode->value();
|
std::string newName = nameNode->value();
|
||||||
float X = getFloatValue(cFrameNode,"X");
|
float X = getFloatValue(cFrameNode,"X");
|
||||||
float Y = getFloatValue(cFrameNode,"Y");
|
float Y = getFloatValue(cFrameNode,"Y");
|
||||||
@@ -396,10 +396,10 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
|||||||
test->setSize(Vector3(sizeX,sizeY+_modY,sizeZ));
|
test->setSize(Vector3(sizeX,sizeY+_modY,sizeZ));
|
||||||
test->setName(newName);
|
test->setName(newName);
|
||||||
CoordinateFrame cf;
|
CoordinateFrame cf;
|
||||||
|
|
||||||
if (_legacyLoad)
|
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 = 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);
|
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.translation = Vector3(X,Y,Z);
|
||||||
cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
|
cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
|
||||||
}
|
}
|
||||||
|
|
||||||
test->setCFrame(cf);
|
test->setCFrame(cf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -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: ";
|
||||||
@@ -610,4 +610,4 @@ GuiRootInstance* DataModelInstance::getGuiRoot()
|
|||||||
LevelInstance* DataModelInstance::getLevel()
|
LevelInstance* DataModelInstance::getLevel()
|
||||||
{
|
{
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.",
|
||||||
@@ -70,4 +70,4 @@ void LevelInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
Instance::PropUpdate(pItem);
|
Instance::PropUpdate(pItem);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
@@ -69,9 +70,9 @@ void PartInstance::postRender(RenderDevice *rd)
|
|||||||
{
|
{
|
||||||
if(distance < 0)
|
if(distance < 0)
|
||||||
distance = distance*-1;
|
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);
|
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)
|
if(part->shape == Enum::Shape::Block)
|
||||||
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidBox(getSphere(), part->getBox());
|
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidBox(getSphere(), part->getBox());
|
||||||
else
|
else
|
||||||
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidSphere(getSphere(), part->getSphere());
|
return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidSphere(getSphere(), part->getSphere());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NEW_BOX_RENDER
|
#ifdef NEW_BOX_RENDER
|
||||||
Box PartInstance::getBox()
|
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));
|
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();
|
CoordinateFrame c = getCFrameRenderBased();
|
||||||
itemBox = c.toWorldSpace(box);
|
itemBox = c.toWorldSpace(box);
|
||||||
return itemBox;
|
return itemBox;
|
||||||
}
|
}
|
||||||
Sphere PartInstance::getSphere()
|
Sphere PartInstance::getSphere()
|
||||||
{
|
{
|
||||||
Sphere sphere = Sphere(Vector3(0,0,0), size.y/2);
|
Sphere sphere = Sphere(Vector3(0,0,0), size.y/2);
|
||||||
CoordinateFrame c = getCFrameRenderBased();
|
CoordinateFrame c = getCFrameRenderBased();
|
||||||
//itemBox = c.toWorldSpace(Sphere);
|
//itemBox = c.toWorldSpace(Sphere);
|
||||||
@@ -280,74 +281,16 @@ 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);
|
||||||
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
|
Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -359,7 +302,7 @@ void PartInstance::addPlus(Vector3 v1)
|
|||||||
vx1 = v1 + Vector3(0, renderY, 0.1f);
|
vx1 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
||||||
vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -371,7 +314,7 @@ void PartInstance::addPlus(Vector3 v1)
|
|||||||
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
||||||
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -383,7 +326,7 @@ void PartInstance::addPlus(Vector3 v1)
|
|||||||
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
||||||
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -391,7 +334,7 @@ void PartInstance::addPlus(Vector3 v1)
|
|||||||
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
addSingularNormal(cross(vx1-vx3,vx2-vx3).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 vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
|
Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -413,7 +356,7 @@ void PartInstance::addPlus2(Vector3 v1)
|
|||||||
vx3 = v1 + Vector3(0, renderY, 0.1f);
|
vx3 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
vx2 = v1 + Vector3(0, renderY, -0.1f);
|
||||||
vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -425,7 +368,7 @@ void PartInstance::addPlus2(Vector3 v1)
|
|||||||
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
vx1 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
vx2 = v1 + Vector3(0, 0.1f, -renderY);
|
||||||
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
vx3 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -437,7 +380,7 @@ void PartInstance::addPlus2(Vector3 v1)
|
|||||||
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
vx1 = v1 + Vector3(0, 0.1f, renderY);
|
||||||
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
vx2 = v1 + Vector3(0, -0.1f, renderY);
|
||||||
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
vx3 = v1 + Vector3(0, -0.1f, -renderY);
|
||||||
|
|
||||||
addVertex(vx1,Color3::WHITE);
|
addVertex(vx1,Color3::WHITE);
|
||||||
addVertex(vx2,Color3::WHITE);
|
addVertex(vx2,Color3::WHITE);
|
||||||
addVertex(vx3,Color3::WHITE);
|
addVertex(vx3,Color3::WHITE);
|
||||||
@@ -445,63 +388,11 @@ void PartInstance::addPlus2(Vector3 v1)
|
|||||||
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
|
||||||
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
|
||||||
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) {
|
||||||
@@ -512,383 +403,31 @@ void PartInstance::render(RenderDevice* rd) {
|
|||||||
//postRenderStack.push_back(this);
|
//postRenderStack.push_back(this);
|
||||||
if (changed)
|
if (changed)
|
||||||
{
|
{
|
||||||
|
|
||||||
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),
|
|
||||||
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;
|
glNewList(glList, GL_COMPILE_AND_EXECUTE);
|
||||||
glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]);
|
glColor(this->color);
|
||||||
glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]);
|
renderShape(this->shape, renderSize, color);
|
||||||
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();
|
glEndList();
|
||||||
|
changed = false;
|
||||||
|
return;
|
||||||
|
|
||||||
|
changed=false;
|
||||||
|
|
||||||
}
|
}
|
||||||
rd->setObjectToWorldMatrix(cFrame);
|
rd->setObjectToWorldMatrix(cFrame);
|
||||||
glCallList(glList);
|
glCallList(glList);
|
||||||
postRender(rd);
|
postRender(rd);
|
||||||
//rd->setObjectToWorldMatrix(cFrame);
|
//rd->setObjectToWorldMatrix(cFrame);
|
||||||
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void PartInstance::render(RenderDevice* rd)
|
void PartInstance::render(RenderDevice* rd)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(changed)
|
if(changed)
|
||||||
{
|
{
|
||||||
Box box = getBox();
|
Box box = getBox();
|
||||||
@@ -897,7 +436,7 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
glColor(color);
|
glColor(color);
|
||||||
/*glEnable( GL_TEXTURE_2D );
|
/*glEnable( GL_TEXTURE_2D );
|
||||||
glEnable(GL_BLEND);// you enable blending function
|
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);
|
glBindTexture( GL_TEXTURE_2D, Globals::surfaceId);
|
||||||
glBegin(GL_QUADS);*/
|
glBegin(GL_QUADS);*/
|
||||||
for(int i = 0; i < 96; i+=16)
|
for(int i = 0; i < 96; i+=16)
|
||||||
@@ -934,7 +473,7 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
glVertex3fv(v3);*/
|
glVertex3fv(v3);*/
|
||||||
|
|
||||||
glEnable(GL_BLEND);// you enable blending function
|
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 );
|
glBegin( GL_QUADS );
|
||||||
glNormal3fv((v1 - v0).cross(v3 - v0).direction());
|
glNormal3fv((v1 - v0).cross(v3 - v0).direction());
|
||||||
//glTexCoord2d(0.0,0.0+add);
|
//glTexCoord2d(0.0,0.0+add);
|
||||||
@@ -961,7 +500,7 @@ void PartInstance::render(RenderDevice* rd)
|
|||||||
children.at(i)->render(rd);
|
children.at(i)->render(rd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1078,7 +617,7 @@ void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
|
|||||||
std::vector<PROPGRIDITEM> PartInstance::getProperties()
|
std::vector<PROPGRIDITEM> PartInstance::getProperties()
|
||||||
{
|
{
|
||||||
std::vector<PROPGRIDITEM> properties = PVInstance::getProperties();
|
std::vector<PROPGRIDITEM> properties = PVInstance::getProperties();
|
||||||
|
|
||||||
|
|
||||||
properties.push_back(createPGI(
|
properties.push_back(createPGI(
|
||||||
"Properties",
|
"Properties",
|
||||||
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
5
src/source/Properties/BoolProperty.cpp
Normal file
5
src/source/Properties/BoolProperty.cpp
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
//#include "Properties/BoolProperty.h"
|
||||||
|
//PROPGRIDITEM BoolProperty::getPropGridItem()
|
||||||
|
//{
|
||||||
|
//return PROPGRIDITEM();
|
||||||
|
//}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#include "Properties/Property.h"
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void Property<T>::setProperty(LPPROPGRIDITEM item)
|
||||||
|
{
|
||||||
|
_owner->propertiesChanged();
|
||||||
|
}
|
||||||
@@ -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));
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
/// This source is distributed in the hope that it will be useful,
|
/// This source is distributed in the hope that it will be useful,
|
||||||
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
/// 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.8: Version 1.8 changes labelled thus.
|
||||||
//DWM 1.9: Version 1.9 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'"
|
// expected 'unsigned char *' but found 'unsigned long'"
|
||||||
#ifdef __POCC__
|
#ifdef __POCC__
|
||||||
#pragma warn(disable:2234)
|
#pragma warn(disable:2234)
|
||||||
@@ -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))
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
//DWM 1.2: Converted the following 4 items to constants
|
//DWM 1.2: Converted the following 4 items to constants
|
||||||
#define SELECT _T("T") ///< PIT_CHECK select
|
#define SELECT _T("T") ///< PIT_CHECK select
|
||||||
#define UNSELECT _T("F") ///< PIT_CHECK unselect
|
#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
|
#define UNCHECKED UNSELECT ///< PIT_CHECK unchecked
|
||||||
|
|
||||||
//DWM 1.3: Added
|
//DWM 1.3: Added
|
||||||
@@ -142,7 +142,7 @@
|
|||||||
/// in a list box.
|
/// in a list box.
|
||||||
///
|
///
|
||||||
/// @param hwndCtl The handle of a listbox.
|
/// @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.
|
/// @param yPos The y coordinate of a point.
|
||||||
///
|
///
|
||||||
/// @returns The return value contains the index of the nearest item
|
/// @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.
|
/// @brief Get the Instance data associated with this instance.
|
||||||
///
|
///
|
||||||
/// @param hControl Handle to Current 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
|
/// @returns TRUE if successful
|
||||||
static BOOL Control_GetInstanceData(HWND hControl, LPINSTANCEDATA * ppInstanceData)
|
static BOOL Control_GetInstanceData(HWND hControl, LPINSTANCEDATA * ppInstanceData)
|
||||||
@@ -362,7 +362,7 @@ static LPTSTR NewString(LPTSTR str)
|
|||||||
|
|
||||||
if(NULL == tmp)
|
if(NULL == tmp)
|
||||||
{
|
{
|
||||||
return (LPTSTR)calloc(1, sizeof(TCHAR));
|
return (LPTSTR)calloc(1, sizeof(TCHAR));
|
||||||
}
|
}
|
||||||
return (LPTSTR)_tmemmove(tmp, str, _tcslen(str));
|
return (LPTSTR)_tmemmove(tmp, str, _tcslen(str));
|
||||||
}
|
}
|
||||||
@@ -386,7 +386,7 @@ static LPTSTR NewStringArray(LPTSTR szzStr)
|
|||||||
|
|
||||||
if(NULL == tmp)
|
if(NULL == tmp)
|
||||||
{
|
{
|
||||||
return (LPTSTR)calloc(1, sizeof(TCHAR));
|
return (LPTSTR)calloc(1, sizeof(TCHAR));
|
||||||
}
|
}
|
||||||
return (LPTSTR)_tmemmove(tmp, szzStr, iLen);
|
return (LPTSTR)_tmemmove(tmp, szzStr, iLen);
|
||||||
}
|
}
|
||||||
@@ -482,7 +482,7 @@ static VOID Editor_OnKillFocus(HWND hwnd, HWND hwndNewFocus)
|
|||||||
g_lpInst->fGotFocus =
|
g_lpInst->fGotFocus =
|
||||||
(NULL != hwndNewFocus &&
|
(NULL != hwndNewFocus &&
|
||||||
(g_lpInst->hwndListBox == hwndNewFocus ||
|
(g_lpInst->hwndListBox == hwndNewFocus ||
|
||||||
g_lpInst->hwndCtl1 == hwndNewFocus ||
|
g_lpInst->hwndCtl1 == hwndNewFocus ||
|
||||||
g_lpInst->hwndCtl2 == hwndNewFocus ||
|
g_lpInst->hwndCtl2 == hwndNewFocus ||
|
||||||
g_lpInst->hwndPropDesc == hwndNewFocus ||
|
g_lpInst->hwndPropDesc == hwndNewFocus ||
|
||||||
g_lpInst->hwndToolTip == 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.left += 1;
|
||||||
rect.bottom += 1;
|
rect.bottom += 1;
|
||||||
rect.right += 1;
|
rect.right += 1;
|
||||||
|
|
||||||
DrawBorder(hdc, &rect, BF_RECT, GetSysColor(COLOR_WINDOW));
|
DrawBorder(hdc, &rect, BF_RECT, GetSysColor(COLOR_WINDOW));
|
||||||
|
|
||||||
ReleaseDC(hwnd, hdc);
|
ReleaseDC(hwnd, hdc);
|
||||||
@@ -1149,7 +1149,7 @@ static HWND CreateIpEdit(HINSTANCE hInstance, HWND hwndParent, INT id, LPRECT lp
|
|||||||
NULL,
|
NULL,
|
||||||
dwStyle,
|
dwStyle,
|
||||||
CW_USEDEFAULT, // x position can be changed after creation
|
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->right - lprc->left, // width can only be set here
|
||||||
lprc->bottom - lprc->top, // height can only be set here
|
lprc->bottom - lprc->top, // height can only be set here
|
||||||
hwndParent, (HMENU)id, hInstance, NULL);
|
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,
|
FillSolidRect(hdc,MAKE_PRECT(0, g_lpInst->iVDivider - 2,
|
||||||
WIDTH(rc), g_lpInst->iVDivider),GetSysColor(COLOR_BTNFACE));
|
WIDTH(rc), g_lpInst->iVDivider),GetSysColor(COLOR_BTNFACE));
|
||||||
ReleaseDC(hwnd,hdc);
|
ReleaseDC(hwnd,hdc);
|
||||||
}
|
}
|
||||||
return FORWARD_WM_CTLCOLORSTATIC(hwnd, hdc, hwndChild, DefWindowProc);
|
return FORWARD_WM_CTLCOLORSTATIC(hwnd, hdc, hwndChild, DefWindowProc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user