void registerAllTypes(asIScriptEngine* engine) { registerColor(engine); registerInt(engine); registerIntVector(engine); registerFloat(engine); registerFloatVector(engine); registerGradient(engine); registerPoint(engine); registerRect(engine); registerString(engine); registerMesh(engine); // After Point registerPath(engine); // After Point registerPolygon(engine); // After Path registerAnimation(engine); }
// ################################################################# // グリフ作成のための頂点を生成 void Glyph::generateVertex(const FB::Vec3i idx, const float* pos, const char* str, const int m_bid) { FB::Vec3f b; // セルセンターのシフトインデクス FB::Vec3f c; // セルセンター座標 FB::Vec3f p[8]; // グリフの8頂点 float w = 0.25; // Glyph幅の係数 float d = 0.05; // Glyph厚さの係数 b.assign((float)idx.x-0.5, (float)idx.y-0.5, (float)idx.z-0.5); c = org + b * pch; if ( !strcasecmp("x-", str)) { b.assign( -pos[0], -w, -w); p[0] = c + b * pch; b.assign(d-pos[0], -w, -w); p[1] = c + b * pch; b.assign(d-pos[0], w, -w); p[2] = c + b * pch; b.assign( -pos[0], w, -w); p[3] = c + b * pch; b.assign( -pos[0], -w, w); p[4] = c + b * pch; b.assign(d-pos[0], -w, w); p[5] = c + b * pch; b.assign(d-pos[0], w, w); p[6] = c + b * pch; b.assign( -pos[0], w, w); p[7] = c + b * pch; registerPolygon(p, m_bid); } else if ( !strcasecmp("x+", str)) { b.assign(pos[1]-d, -w, -w); p[0] = c + b * pch; b.assign(pos[1] , -w, -w); p[1] = c + b * pch; b.assign(pos[1] , w, -w); p[2] = c + b * pch; b.assign(pos[1]-d, w, -w); p[3] = c + b * pch; b.assign(pos[1]-d, -w, w); p[4] = c + b * pch; b.assign(pos[1] , -w, w); p[5] = c + b * pch; b.assign(pos[1] , w, w); p[6] = c + b * pch; b.assign(pos[1]-d, w, w); p[7] = c + b * pch; registerPolygon(p, m_bid); } else if ( !strcasecmp("y-", str)) { b.assign(-w, -pos[2], -w); p[0] = c + b * pch; b.assign( w, -pos[2], -w); p[1] = c + b * pch; b.assign( w, d-pos[2], -w); p[2] = c + b * pch; b.assign(-w, d-pos[2], -w); p[3] = c + b * pch; b.assign(-w, -pos[2], w); p[4] = c + b * pch; b.assign( w, -pos[2], w); p[5] = c + b * pch; b.assign( w, d-pos[2], w); p[6] = c + b * pch; b.assign(-w, d-pos[2], w); p[7] = c + b * pch; registerPolygon(p, m_bid); } else if ( !strcasecmp("y+", str)) { b.assign(-w, pos[3]-d, -w); p[0] = c + b * pch; b.assign( w, pos[3]-d, -w); p[1] = c + b * pch; b.assign( w, pos[3] , -w); p[2] = c + b * pch; b.assign(-w, pos[3] , -w); p[3] = c + b * pch; b.assign(-w, pos[3]-d, w); p[4] = c + b * pch; b.assign( w, pos[3]-d, w); p[5] = c + b * pch; b.assign( w, pos[3] , w); p[6] = c + b * pch; b.assign(-w, pos[3] , w); p[7] = c + b * pch; registerPolygon(p, m_bid); } else if ( !strcasecmp("z-", str)) { b.assign(-w, -w, -pos[4]); p[0] = c + b * pch; b.assign( w, -w, -pos[4]); p[1] = c + b * pch; b.assign( w, w, -pos[4]); p[2] = c + b * pch; b.assign(-w, w, -pos[4]); p[3] = c + b * pch; b.assign(-w, -w, d-pos[4]); p[4] = c + b * pch; b.assign( w, -w, d-pos[4]); p[5] = c + b * pch; b.assign( w, w, d-pos[4]); p[6] = c + b * pch; b.assign(-w, w, d-pos[4]); p[7] = c + b * pch; registerPolygon(p, m_bid); } else if ( !strcasecmp("z+", str)) { b.assign(-w, -w, pos[5]-d); p[0] = c + b * pch; b.assign( w, -w, pos[5]-d); p[1] = c + b * pch; b.assign( w, w, pos[5]-d); p[2] = c + b * pch; b.assign(-w, w, pos[5]-d); p[3] = c + b * pch; b.assign(-w, -w, pos[5] ); p[4] = c + b * pch; b.assign( w, -w, pos[5] ); p[5] = c + b * pch; b.assign( w, w, pos[5] ); p[6] = c + b * pch; b.assign(-w, w, pos[5] ); p[7] = c + b * pch; registerPolygon(p, m_bid); } else { Exit(0); } }