Browse Source

tutorial: test some advanced shapes for easymesh.

legacy
Sam Hocevar sam 12 years ago
parent
commit
f74b85fcf7
2 changed files with 87 additions and 8 deletions
  1. +4
    -1
      src/easymesh/easymesh.h
  2. +83
    -7
      tutorial/05_easymesh.cpp

+ 4
- 1
src/easymesh/easymesh.h View File

@@ -32,12 +32,13 @@ public:
void MeshConvert();
void Render(mat4 const &model, float damage = 0.f);

private:
void OpenBrace();
void CloseBrace();

void SetCurColor(vec4 const &color);
void SetCurColor2(vec4 const &color);

private:
void AddVertex(vec3 const &coord);
void AddDuplicateVertex(int i);
void AppendQuad(int i1, int i2, int i3, int i4, int base);
@@ -46,6 +47,8 @@ private:
void AppendTriangleDuplicateVerts(int i1, int i2, int i3, int base);
void ComputeNormals(int start, int vcount);
void SetVertColor(vec4 const &color);

public:
void SetCurVertNormal(vec3 const &normal);
void SetCurVertColor(vec4 const &color);



+ 83
- 7
tutorial/05_easymesh.cpp View File

@@ -20,19 +20,95 @@ using namespace lol;
class EasyMeshTutorial : public WorldEntity
{
public:
void AddPiece(int x, int y, int h, int dx, int dy, int dh)
{
m_mesh.OpenBrace();
for (int j = 0; j < y; ++j)
for (int i = 0; i < x; ++i)
{
m_mesh.OpenBrace();
m_mesh.Compile("ad12,2.2,0 ty.1 ac12,.2,2.4,2.2,0,1 ty.8 ac12,1.7,2.4,2.4,0,1 ty2.5");
m_mesh.Translate(vec3(i * 8.f, (h - 1) * 3.2f, j * 8.f));
m_mesh.CloseBrace();
}
m_mesh.OpenBrace();
m_mesh.AppendFlatChamfBox(vec3(x * 8.f, h * 3.2f, y * 8.f), -.1f);
m_mesh.Translate(vec3((x - 1) * 4.f, (h - 1) * 1.6f, (y - 1) * 4.f));
m_mesh.CloseBrace();
m_mesh.Translate(vec3(dx * 8.f, dh * 3.2f, dy * 8.f));
m_mesh.CloseBrace();
}

EasyMeshTutorial()
{
m_angle = 0;
m_mesh.Compile("sc#e94 scb#964 [asph11 7 7 7 tx10]");
m_mesh.Compile("sc#94e scb#649 [asph3 7 7 7 tx-6 tz-9]");
m_mesh.Compile("sc#49e scb#469 [asph31 7 7 7 tx-6 tz9]");
//m_mesh.Compile("sc#e94 scb#964 [asph11 7 7 7 tx10]");
//m_mesh.Compile("sc#94e scb#649 [asph3 7 7 7 tx-6 tz-9]");
//m_mesh.Compile("sc#49e scb#469 [asph31 7 7 7 tx-6 tz9]");
m_mesh.Compile("sc#1c1 scb#1c1");
AddPiece(16, 16, 1, -8, -8, -4);

/* Flat white LOL */
m_mesh.Compile("sc#ccc scb#ccc");

AddPiece(1, 4, 1, -7, -7, -3);
AddPiece(2, 1, 1, -6, -4, -3);

AddPiece(1, 4, 1, -3, -7, -3);
AddPiece(2, 1, 1, -2, -7, -3);
AddPiece(2, 1, 1, -2, -4, -3);
AddPiece(1, 2, 1, -1, -6, -3);

AddPiece(1, 4, 1, 1, -7, -3);
AddPiece(2, 1, 1, 2, -4, -3);

/* High red LOL */
m_mesh.Compile("sc#e33 scb#e33");

AddPiece(3, 1, 3, 3, 4, -3);
AddPiece(1, 1, 3, 5, 4, 0);
AddPiece(1, 1, 3, 5, 4, 3);
AddPiece(1, 1, 3, 5, 4, 6);

AddPiece(3, 1, 3, -1, 4, -3);
AddPiece(1, 1, 3, 1, 4, 0);
AddPiece(1, 1, 3, 1, 4, 3);
AddPiece(1, 1, 3, -1, 4, 0);
AddPiece(1, 1, 3, -1, 4, 3);
AddPiece(3, 1, 3, -1, 4, 6);

AddPiece(3, 1, 3, -5, 4, -3);
AddPiece(1, 1, 3, -3, 4, 0);
AddPiece(1, 1, 3, -3, 4, 3);
AddPiece(1, 1, 3, -3, 4, 6);

/* Some random crap */
m_mesh.Compile("sc#e0e scb#e0e");
AddPiece(1, 1, 1, -1, 0, 2);
m_mesh.Compile("sc#0ee scb#0ee");
AddPiece(2, 1, 1, -1, 0, 1);
m_mesh.Compile("sc#e94 scb#e94");
AddPiece(1, 1, 1, 0, 0, 0);
m_mesh.Compile("sc#94e scb#94e");
AddPiece(2, 1, 1, 0, 0, -1);
m_mesh.Compile("sc#9e4 scb#9e4");
AddPiece(1, 2, 3, -1, -1, -2);
m_mesh.Compile("sc#49e scb#49e");
AddPiece(2, 3, 1, 0, -1, -2);
m_mesh.Compile("sc#4e9 scb#4e9");
AddPiece(6, 2, 1, -2, 0, -3);
m_mesh.Compile("sc#e49 scb#e49");
AddPiece(6, 2, 1, -2, -2, -3);

/* Center everything -- is it needed? */
m_mesh.Compile("tx4 tz4");

m_camera = new Camera(vec3(0.f, 600.f, 0.f),
vec3(0.f, 0.f, 0.f),
vec3(0, 1, 0));
m_camera->SetPerspective(70.f, 640.f, 480.f, .1f, 1000.f);
m_camera->SetTarget(vec3(0.f, -5.f, 0.f));
m_camera->SetPosition(vec3(-20.f, 20.f, 0.f));
m_camera->SetPerspective(70.f, 960.f, 600.f, .1f, 1000.f);
m_camera->SetTarget(vec3(0.f, -10.f, 0.f));
m_camera->SetPosition(vec3(-100.f, 60.f, 0.f));
Ticker::Ref(m_camera);

m_ready = false;
@@ -76,7 +152,7 @@ private:

int main(int argc, char **argv)
{
Application app("Tutorial 5: EasyMesh", ivec2(640, 480), 60.0f);
Application app("Tutorial 5: EasyMesh", ivec2(960, 600), 60.0f);
new EasyMeshTutorial();
app.Run();



Loading…
Cancel
Save