Example #1
0
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;
}
Example #2
0
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;
}
Example #3
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]);
    }
}
Example #4
0
WeaponSystem::WeaponSystem() {
    
    instance = this;
    
    weaponsVisible = new std::list<rWeapon*>();
    viewdistance = 500;
    vector_zero(visorigin);
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
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;
}
Example #8
0
CDrawTilemap::CDrawTilemap(void* _go)
  : Component((GO*)_go, PRIORITY_SHOW), map(NULL),
    layer(LAYER_BACKGROUND), map_dirty(1) {
  vector_zero(&offset);
  renderer = new TileMapRenderer(NULL);
}
Example #9
0
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);
}
Example #10
0
CStaticSprite::CStaticSprite(void* go)
  : Component((GO*)go, PRIORITY_SHOW), entry(NULL),
    angle_offset(0.0), layer(LAYER_PLAYER) {
  vector_zero(&offset);
}
Example #11
0
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;
}