Example #1
0
bool TileSet::_get(const StringName& p_name,Variant &r_ret) const {

    String n = p_name;
    int slash = n.find("/");
    if (slash==-1)
        return false;
    int id = String::to_int(n.c_str(),slash);

    ERR_FAIL_COND_V(!tile_map.has(id),false);

    String what = n.substr(slash+1,n.length());

    if (what=="name")
        r_ret=tile_get_name(id);
    else if (what=="texture")
        r_ret=tile_get_texture(id);
    else if (what=="tex_offset")
        r_ret=tile_get_texture_offset(id);
    else if (what=="shape_offset")
        r_ret=tile_get_shape_offset(id);
    else if (what=="region")
        r_ret=tile_get_region(id);
    else if (what=="shape")
        r_ret=tile_get_shape(id);
    else if (what=="shapes")
        r_ret=_tile_get_shapes(id);
    else
        return false;

    return true;

}
Example #2
0
void level_render_tiles(level* l, vec2 camera_position) {

	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glOrtho(camera_position.x - graphics_viewport_width() / 2,
			camera_position.x + graphics_viewport_width() / 2,
			-camera_position.y + graphics_viewport_height() / 2,
			-camera_position.y - graphics_viewport_height() / 2
			, -1, 1);

	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();

	glEnable(GL_TEXTURE_2D);

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	/* Start from 1, 0 is no tiles! */

	for(int i = 1; i < l->num_tile_sets; i++) {

		texture* tile_tex = tile_get_texture(i);
		glBindTexture(GL_TEXTURE_2D, texture_handle(tile_tex));
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

		glEnableClientState(GL_VERTEX_ARRAY);
		glEnableClientState(GL_TEXTURE_COORD_ARRAY);

		glBindBuffer(GL_ARRAY_BUFFER, l->tile_sets[i].positions_buffer);
		glVertexPointer(3, GL_FLOAT, 0, (void*)0);

		glBindBuffer(GL_ARRAY_BUFFER, l->tile_sets[i].texcoords_buffer);
		glTexCoordPointer(2, GL_FLOAT, 0, (void*)0);

		glDrawArrays(GL_QUADS, 0, l->tile_sets[i].num_tiles * 4);

		glBindBuffer(GL_ARRAY_BUFFER, 0);
		glDisableClientState(GL_TEXTURE_COORD_ARRAY);
		glDisableClientState(GL_VERTEX_ARRAY);

	}

	glDisable(GL_BLEND);
	glDisable(GL_TEXTURE_2D);

	glMatrixMode(GL_PROJECTION);
	glPopMatrix();

	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();

}
Example #3
0
bool TileSet::_get(const StringName &p_name, Variant &r_ret) const {

	String n = p_name;
	int slash = n.find("/");
	if (slash == -1)
		return false;
	int id = String::to_int(n.c_str(), slash);

	ERR_FAIL_COND_V(!tile_map.has(id), false);

	String what = n.substr(slash + 1, n.length());

	if (what == "name")
		r_ret = tile_get_name(id);
	else if (what == "texture")
		r_ret = tile_get_texture(id);
	else if (what == "normal_map")
		r_ret = tile_get_normal_map(id);
	else if (what == "tex_offset")
		r_ret = tile_get_texture_offset(id);
	else if (what == "material")
		r_ret = tile_get_material(id);
	else if (what == "modulate")
		r_ret = tile_get_modulate(id);
	else if (what == "region")
		r_ret = tile_get_region(id);
	else if (what == "shape")
		r_ret = tile_get_shape(id, 0);
	else if (what == "shape_offset")
		r_ret = tile_get_shape_transform(id, 0).get_origin();
	else if (what == "shape_transform")
		r_ret = tile_get_shape_transform(id, 0);
	else if (what == "shape_one_way")
		r_ret = tile_get_shape_one_way(id, 0);
	else if (what == "shapes")
		r_ret = _tile_get_shapes(id);
	else if (what == "occluder")
		r_ret = tile_get_light_occluder(id);
	else if (what == "occluder_offset")
		r_ret = tile_get_occluder_offset(id);
	else if (what == "navigation")
		r_ret = tile_get_navigation_polygon(id);
	else if (what == "navigation_offset")
		r_ret = tile_get_navigation_polygon_offset(id);
	else
		return false;

	return true;
}