From 56eaa27d4daca9264dac2e822b1126cf6eb8cbf4 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Wed, 4 May 2016 23:45:29 +0800 Subject: Piano keyboard: first steps. --- visualization/extrasmeltutils.cpp | 91 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 visualization/extrasmeltutils.cpp (limited to 'visualization/extrasmeltutils.cpp') diff --git a/visualization/extrasmeltutils.cpp b/visualization/extrasmeltutils.cpp new file mode 100644 index 0000000..3e86549 --- /dev/null +++ b/visualization/extrasmeltutils.cpp @@ -0,0 +1,91 @@ +#include "extrasmeltutils.hpp" +SMELT *smEntity3D::sm=NULL; +smEntity3D::smEntity3D() +{ + sm=smGetInterface(SMELT_APILEVEL); + surfaces.clear(); +} +void smEntity3D::pushSurface(smQuad q) +{surfaces.push_back(q);} +void smEntity3D::pushCube(smvec3d a,smvec3d b,DWORD color,DWORD mask) +{ + //a: top left corner b: bottom right corner + smQuad q;q.blend=BLEND_ALPHABLEND;q.tex=0; + for(int i=0;i<4;++i)q.v[i].col=color,q.v[i].tx=q.v[i].ty=0; + //top + if(mask&1) + { + q.v[0].x=a.x;q.v[0].y=a.y;q.v[0].z=a.z; + q.v[1].x=b.x;q.v[1].y=a.y;q.v[1].z=a.z; + q.v[2].x=b.x;q.v[2].y=b.y;q.v[2].z=a.z; + q.v[3].x=a.x;q.v[3].y=b.y;q.v[3].z=a.z; + pushSurface(q); + } + //bottom + if(mask&2) + { + q.v[0].x=a.x;q.v[0].y=a.y;q.v[0].z=b.z; + q.v[1].x=b.x;q.v[1].y=a.y;q.v[1].z=b.z; + q.v[2].x=b.x;q.v[2].y=b.y;q.v[2].z=b.z; + q.v[3].x=a.x;q.v[3].y=b.y;q.v[3].z=b.z; + pushSurface(q); + } + //left + if(mask&4) + { + q.v[0].x=a.x;q.v[0].y=b.y;q.v[0].z=a.z; + q.v[1].x=a.x;q.v[1].y=b.y;q.v[1].z=b.z; + q.v[2].x=a.x;q.v[2].y=a.y;q.v[2].z=b.z; + q.v[3].x=a.x;q.v[3].y=a.y;q.v[3].z=a.z; + pushSurface(q); + } + //right + if(mask&8) + { + q.v[0].x=b.x;q.v[0].y=b.y;q.v[0].z=a.z; + q.v[1].x=b.x;q.v[1].y=b.y;q.v[1].z=b.z; + q.v[2].x=b.x;q.v[2].y=a.y;q.v[2].z=b.z; + q.v[3].x=b.x;q.v[3].y=a.y;q.v[3].z=a.z; + pushSurface(q); + } + //front + if(mask&16) + { + q.v[0].x=a.x;q.v[0].y=b.y;q.v[0].z=a.z; + q.v[1].x=b.x;q.v[1].y=b.y;q.v[1].z=a.z; + q.v[2].x=b.x;q.v[2].y=b.y;q.v[2].z=b.z; + q.v[3].x=a.x;q.v[3].y=b.y;q.v[3].z=b.z; + pushSurface(q); + } + //back + if(mask&32) + { + q.v[0].x=a.x;q.v[0].y=a.y;q.v[0].z=a.z; + q.v[1].x=b.x;q.v[1].y=a.y;q.v[1].z=a.z; + q.v[2].x=b.x;q.v[2].y=a.y;q.v[2].z=b.z; + q.v[3].x=a.x;q.v[3].y=a.y;q.v[3].z=b.z; + pushSurface(q); + } +} +void smEntity3D::drawAt(smvec3d p) +{ + for(unsigned i=0;ismRenderQuad(&tq); + } +} +void smEntity3D::drawWithTransformation(smMatrix t,smvec3d p) +{ + for(unsigned i=0;ismRenderQuad(&tq); + } +} -- cgit v1.2.3