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; }
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(); }
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; }