Mat4 createIdMatrix() { Mat4 mat; mat.n1 = createVec4(1.0f, 0.0f, 0.0f, 0.0f); mat.n2 = createVec4(0.0f, 1.0f, 0.0f, 0.0f); mat.n3 = createVec4(0.0f, 0.0f, 1.0f, 0.0f); mat.n4 = createVec4(0.0f, 0.0f, 0.0f, 1.0f); return mat; }
Mat4 createOrthogonalMatrix(int w, int h, float near, float far) { Mat4 mat; float clip1, clip2; if ((far - near) == 0.0f) { clip1 = -1.0f; clip2 = 0.0f; } else { clip1 = 1.0f/(far-near); clip2 = -1.0f * ((far + near)/(far-near)); } mat.n1 = createVec4(2.0f/(float)w, 0.0f, 0.0f, 0.0f); mat.n2 = createVec4(0.0f, 2.0f/(float)h, 0.0f, 0.0f); mat.n3 = createVec4(0.0f, 0.0f, clip1, 0.0f); mat.n4 = createVec4(-1.0f, -1.0f, clip2, 1.0f); return mat; }
Mat4 translate(Mat4 * mat, Vec3 * vec) { float x, y, z; Mat4 translatedMat; // Calculating translation x = (mat->n1.x * vec->x) * (mat->n4.x); y = (mat->n2.y * vec->y) * (mat->n4.y); z = (mat->n3.z * vec->z) * (mat->n4.z); translatedMat.n1 = mat->n1; translatedMat.n2 = mat->n2; translatedMat.n3 = mat->n3; translatedMat.n4 = createVec4(x, y, z, 1); return translatedMat; }
void PropertyManager::addAttribute(wxPropertyGridManager *pg, std::unique_ptr<Attribute> &a) { switch (a->getType()) { case Enums::ENUM: createEnum(pg, a); break; case Enums::BOOL: createBool(pg, a); break; case Enums::BVEC4: createBVec4(pg, a); break; case Enums::INT: createInt(pg, a); break; case Enums::IVEC3: createIVec3(pg, a); break; case Enums::UINT: createUInt(pg, a); break; case Enums::UIVEC2: createUIVec2(pg, a); break; case Enums::UIVEC3: createUIVec3(pg, a); break; case Enums::FLOAT: createFloat(pg, a); break; case Enums::VEC2: createVec2(pg, a); break; case Enums::VEC3: createVec3(pg, a); break; case Enums::VEC4: createVec4(pg, a); break; case Enums::MAT3: createMat3(pg, a); break; case Enums::MAT4: createMat4(pg, a); break; case Enums::STRING: createString(pg, a); break; default: assert(false && "Missing datatype in property manager"); } }
void drawSquare(Sprite * sprite, float x, float y, float width, float height, ColorRGBA color) { Vec4 uvs = createVec4(0.0f, 0.0f, 1.0f, 1.0f); updateSprite(sprite, x, y, width, height, color, &uvs, 0x0); drawVertexes(sprite, DRAW_OUTLINE); }