void font_init() { array_reserve(s_fontCtx.fonts, 16); s_fontCtx.fontShader = shader_create_fromfiles("font.vert", "font.frag"); s_fontCtx.fontSettingsParam = shader_get_param( s_fontCtx.fontShader, "FontSettings", ShaderParamType_UniformBlock ); vector_t translation = vector_zero(); vector_t scale = vector(1/640.0f, 1/480.0f, 1.0f, 0.f); vector_t rotation = vector_zero(); font_shader_settings_t settings; settings.color = vector(1.0f,1.0f,1.0f,1.0f); settings.transform = create_transform_matrix(translation, scale, rotation); s_fontCtx.fontSettingsBuffer = shader_uniformbuffer_create( s_fontCtx.fontSettingsParam, (void*) &settings ); s_fontCtx.fontState.useBlend = true; s_fontCtx.fontState.srcBlendState = BlendState_SrcAlpha; s_fontCtx.fontState.dstBlendState = BlendState_One; s_fontCtx.fontState.useStencil = false; }
DECLARE_TEST(matrix, vec) { vector_t vec; VECTOR_ALIGN float32_t aligned_rotm[] = { 0, 2, 0, 11, 0, 0, 3, 12, 1, 0, 0, 13, 7, 8, 9, 10 }; VECTOR_ALIGN float32_t aligned_tformm[] = { 0, 2, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, -1, 2, 5, 1 }; vec = matrix_rotate(matrix_zero(), vector_zero()); EXPECT_VECTOREQ(vec, vector_zero()); vec = matrix_rotate(matrix_zero(), vector_one()); EXPECT_VECTOREQ(vec, vector(0, 0, 0, 1)); vec = matrix_rotate(matrix_identity(), vector_one()); EXPECT_VECTOREQ(vec, vector_one()); vec = matrix_rotate(matrix_aligned(aligned_rotm), vector_xaxis()); EXPECT_VECTOREQ(vec, vector(0, 2, 0, 1)); vec = matrix_rotate(matrix_aligned(aligned_rotm), vector_yaxis()); EXPECT_VECTOREQ(vec, vector(0, 0, 3, 1)); vec = matrix_rotate(matrix_aligned(aligned_rotm), vector_zaxis()); EXPECT_VECTOREQ(vec, vector(1, 0, 0, 1)); vec = matrix_transform(matrix_zero(), vector_zero()); EXPECT_VECTOREQ(vec, vector_zero()); vec = matrix_transform(matrix_zero(), vector_one()); EXPECT_VECTOREQ(vec, vector(0, 0, 0, 0)); vec = matrix_transform(matrix_identity(), vector_one()); EXPECT_VECTOREQ(vec, vector_one()); vec = matrix_transform(matrix_aligned(aligned_tformm), vector_xaxis()); EXPECT_VECTOREQ(vec, vector(-1, 4, 5, 1)); vec = matrix_transform(matrix_aligned(aligned_tformm), vector_yaxis()); EXPECT_VECTOREQ(vec, vector(-1, 2, 8, 1)); vec = matrix_transform(matrix_aligned(aligned_tformm), vector_zaxis()); EXPECT_VECTOREQ(vec, vector(0, 2, 5, 1)); return 0; }
static void __box_get_vertices(const Bounding *box, Vector *vertices) { __assert_bounding(box, bounding_box); assert(vertices && "Bad vertices pointer."); Vector p; __bounding_get_effective_position(box, &p); Vector e[3]; e[0] = *box->direction; // d. VECTOR_NORMALIZE(&e[0]); VECTOR_SCALE(&e[0], box->data.extent.x); vector_vector_mul(box->orientation, box->direction, &e[1]); // s. VECTOR_NORMALIZE(&e[1]); VECTOR_SCALE(&e[1], box->data.extent.y); e[2] = *box->orientation; // t. VECTOR_NORMALIZE(&e[2]); VECTOR_SCALE(&e[2], box->data.extent.z); for (size_t i = 0; i < 8; i++) { Vector v; vector_zero(&v); for (size_t j = 0; j < 3; j++) { (i & (1 << j) ? vector_add : vector_sub)(&v, &e[j], &v); } vector_add(&p, &v, &vertices[i]); } }
WeaponSystem::WeaponSystem() { instance = this; weaponsVisible = new std::list<rWeapon*>(); viewdistance = 500; vector_zero(visorigin); }
CTestDisplay::CTestDisplay(void* go) : Component((GO*)go, PRIORITY_SHOW), w(10), h(10), layer(LAYER_PLAYER) { vector_zero(&offset); color.r = 1.0f; color.g = 0.0f; color.b = 1.0f; color.a = 1.0f; }
DECLARE_TEST(matrix, construct) { matrix_t mat; mat = matrix_zero(); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_identity(); EXPECT_VECTOREQ(mat.row[0], vector(1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, 1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, 1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, 1)); float32_t unaligned[] = { 0, 1, -2, 3, -4, -5, 6, -7, 8, 9, 10, 11, 12, -13, -14, -15, -16 }; mat = matrix_unaligned(&unaligned[1]); EXPECT_VECTOREQ(mat.row[0], vector(1, -2, 3, -4)); EXPECT_VECTOREQ(mat.row[1], vector(-5, 6, -7, 8)); EXPECT_VECTOREQ(mat.row[2], vector(9, 10, 11, 12)); EXPECT_VECTOREQ(mat.row[3], vector(-13, -14, -15, -16)); VECTOR_ALIGN float32_t aligned[] = { 1, -2, 3, -4, -5, 6, -7, 8, 9, 10, 11, 12, -13, -14, -15, -16 }; mat = matrix_aligned(aligned); EXPECT_VECTOREQ(mat.row[0], vector(1, -2, 3, -4)); EXPECT_VECTOREQ(mat.row[1], vector(-5, 6, -7, 8)); EXPECT_VECTOREQ(mat.row[2], vector(9, 10, 11, 12)); EXPECT_VECTOREQ(mat.row[3], vector(-13, -14, -15, -16)); return 0; }
rTarcom::rTarcom(Entity* obj) { object = obj; assert(object != NULL); quat_zero(ori0); vector_zero(pos0); near = new std::list<rTarget*>(); far = new std::list<rTarget*>(); enemies = new std::list<rTarget*>(); selected = 0; nearbyEnemy = 0; switching = false; switchnext = false; switchprev = false; }
CDrawTilemap::CDrawTilemap(void* _go) : Component((GO*)_go, PRIORITY_SHOW), map(NULL), layer(LAYER_BACKGROUND), map_dirty(1) { vector_zero(&offset); renderer = new TileMapRenderer(NULL); }
CSpriterSprite::CSpriterSprite(void* _go) : Component((GO*)_go, PRIORITY_SHOW), animation(NULL), layer(LAYER_BACKGROUND), current_time(0), time_scale(1), scale_x(1), scale_y(1) { vector_zero(&offset); }
CStaticSprite::CStaticSprite(void* go) : Component((GO*)go, PRIORITY_SHOW), entry(NULL), angle_offset(0.0), layer(LAYER_PLAYER) { vector_zero(&offset); }
DECLARE_TEST(matrix, ops) { matrix_t mat; VECTOR_ALIGN float32_t aligned[] = { 1, -2, 3, -4, -5, 6, -7, 8, 9, 10, 11, 12, -13, -14, -15, -16 }; float32_t unaligned[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; mat = matrix_transpose(matrix_aligned(aligned)); EXPECT_VECTOREQ(mat.row[0], vector(1, -5, 9, -13)); EXPECT_VECTOREQ(mat.row[1], vector(-2, 6, 10, -14)); EXPECT_VECTOREQ(mat.row[2], vector(3, -7, 11, -15)); EXPECT_VECTOREQ(mat.row[3], vector(-4, 8, 12, -16)); mat = matrix_add(matrix_zero(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_add(matrix_zero(), matrix_identity()); EXPECT_VECTOREQ(mat.row[0], vector(1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, 1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, 1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, 1)); mat = matrix_add(matrix_identity(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector(1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, 1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, 1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, 1)); mat = matrix_add(matrix_aligned(aligned), matrix_unaligned(unaligned)); EXPECT_VECTOREQ(mat.row[0], vector(1, -1, 5, -1)); EXPECT_VECTOREQ(mat.row[1], vector(-1, 11, -1, 15)); EXPECT_VECTOREQ(mat.row[2], vector(17, 19, 21, 23)); EXPECT_VECTOREQ(mat.row[3], vector(-1, -1, -1, -1)); mat = matrix_add(matrix_aligned(aligned), matrix_transpose(matrix_aligned(aligned))); EXPECT_VECTOREQ(mat.row[0], vector(2, -7, 12, -17)); EXPECT_VECTOREQ(mat.row[1], vector(-7, 12, 3, -6)); EXPECT_VECTOREQ(mat.row[2], vector(12, 3, 22, -3)); EXPECT_VECTOREQ(mat.row[3], vector(-17, -6, -3, -32)); mat = matrix_sub(matrix_zero(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_sub(matrix_zero(), matrix_identity()); EXPECT_VECTOREQ(mat.row[0], vector(-1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, -1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, -1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, -1)); mat = matrix_add(matrix_identity(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector(1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, 1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, 1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, 1)); mat = matrix_sub(matrix_aligned(aligned), matrix_unaligned(unaligned)); EXPECT_VECTOREQ(mat.row[0], vector(1, -3, 1, -7)); EXPECT_VECTOREQ(mat.row[1], vector(-9, 1, -13, 1)); EXPECT_VECTOREQ(mat.row[2], vector(1, 1, 1, 1)); EXPECT_VECTOREQ(mat.row[3], vector(-25, -27, -29, -31)); mat = matrix_sub(matrix_aligned(aligned), matrix_transpose(matrix_aligned(aligned))); EXPECT_VECTOREQ(mat.row[0], vector(0, 3, -6, 9)); EXPECT_VECTOREQ(mat.row[1], vector(-3, 0, -17, 22)); EXPECT_VECTOREQ(mat.row[2], vector(6, 17, 0, 27)); EXPECT_VECTOREQ(mat.row[3], vector(-9, -22, -27, 0)); mat = matrix_mul(matrix_zero(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_mul(matrix_zero(), matrix_identity()); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_mul(matrix_identity(), matrix_zero()); EXPECT_VECTOREQ(mat.row[0], vector_zero()); EXPECT_VECTOREQ(mat.row[1], vector_zero()); EXPECT_VECTOREQ(mat.row[2], vector_zero()); EXPECT_VECTOREQ(mat.row[3], vector_zero()); mat = matrix_mul(matrix_identity(), matrix_identity()); EXPECT_VECTOREQ(mat.row[0], vector(1, 0, 0, 0)); EXPECT_VECTOREQ(mat.row[1], vector(0, 1, 0, 0)); EXPECT_VECTOREQ(mat.row[2], vector(0, 0, 1, 0)); EXPECT_VECTOREQ(mat.row[3], vector(0, 0, 0, 1)); mat = matrix_mul(matrix_aligned(aligned), matrix_unaligned(unaligned)); EXPECT_VECTOREQ(mat.row[0], vector(-8 + 24 - 48, 1 - 10 + 27 - 4 * 13, 2 - 12 + 30 - 4 * 14, 3 - 14 + 33 - 4 * 15)); EXPECT_VECTOREQ(mat.row[1], vector(6 * 4 - 7 * 8 + 8 * 12, -5 * 1 + 6 * 5 - 7 * 9 + 8 * 13, -5 * 2 + 6 * 6 - 7 * 10 + 8 * 14, -5 * 3 + 6 * 7 - 7 * 11 + 8 * 15)); EXPECT_VECTOREQ(mat.row[2], vector(10 * 4 + 11 * 8 + 12 * 12, 9 * 1 + 10 * 5 + 11 * 9 + 12 * 13, 9 * 2 + 10 * 6 + 11 * 10 + 12 * 14, 9 * 3 + 10 * 7 + 11 * 11 + 12 * 15)); EXPECT_VECTOREQ(mat.row[3], vector(-14 * 4 - 15 * 8 - 16 * 12, -13 * 1 - 14 * 5 - 15 * 9 - 16 * 13, -13 * 2 - 14 * 6 - 15 * 10 - 16 * 14, -13 * 3 - 14 * 7 - 15 * 11 - 16 * 15)); return 0; }