void draw_sprite_general(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar width, gs_scalar height, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, double rot, int c1, int c2, int c3, int c4, gs_scalar a1, gs_scalar a2, gs_scalar a3, gs_scalar a4) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbw = spr2d->width/spr2d->texbordxarray[usi], tbh = spr2d->height/spr2d->texbordyarray[usi], w = width*xscale, h = height*yscale; rot *= M_PI/180; const gs_scalar wcosrot = w*cos(rot), wsinrot = w*sin(rot); const gs_scalar ulcx = x + xscale * cos(M_PI+rot) + yscale * cos(M_PI/2+rot), ulcy = y - yscale * sin(M_PI+rot) - yscale * sin(M_PI/2+rot); const gs_scalar ulcx2 = ulcx + h * cos(3*M_PI/2 + rot), ulcy2 = ulcy - h * sin(3*M_PI/2 + rot); const gs_scalar data[4*8] = { ulcx,ulcy, left/tbw,top/tbh, __GETR(c1), __GETG(c1), __GETB(c1), a1, ulcx + wcosrot, ulcy - wsinrot, (left+width)/tbw,top/tbh, __GETR(c2), __GETG(c2), __GETB(c2), a2, ulcx2 + wcosrot, ulcy2 - wsinrot, (left+width)/tbw,(top+height)/tbh, __GETR(c3), __GETG(c3), __GETB(c3), a3, ulcx2,ulcy2, left/tbw,(top+height)/tbh, __GETR(c4), __GETG(c4), __GETB(c4), a4 }; plane2D_rotated(data); }
void draw_sprite_tiled(int spr, int subimg, gs_scalar x, gs_scalar y) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], xoff = fmod(spr2d->xoffset+x,spr2d->width)-spr2d->width, yoff = fmod(spr2d->yoffset+y,spr2d->height)-spr2d->height; const int hortil = int(ceil((view_enabled ? int(view_xview[view_current] + view_wview[view_current]) : room_width) / (spr2d->width*tbx))) + 1, vertil = int(ceil((view_enabled ? int(view_yview[view_current] + view_hview[view_current]) : room_height) / (spr2d->height*tby))) + 1; gs_scalar xvert1 = xoff, xvert2 = xvert1 + spr2d->width, yvert1, yvert2; for (int i=0; i<hortil; i++) { yvert1 = yoff; yvert2 = yvert1 + spr2d->height; for (int c=0; c<vertil; c++) { const gs_scalar data[4*8] = { xvert1, yvert1, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, xvert2, yvert1, tbx, 0.0, 1.0, 1.0, 1.0, 1.0, xvert2, yvert2, tbx, tby, 1.0, 1.0, 1.0, 1.0, xvert1, yvert2, 0.0, tby, 1.0, 1.0, 1.0, 1.0 }; plane2D_rotated(data); yvert1 = yvert2; yvert2 += spr2d->height; } xvert1 = xvert2; xvert2 += spr2d->width; } }
void draw_sprite_ext(int spr, int subimg, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, double rot, int blend, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); rot *= M_PI/180; const gs_scalar w = spr2d->width*xscale, h = spr2d->height*yscale, tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], wsinrot = w*sin(rot), wcosrot = w*cos(rot); const gs_scalar ulcx = x - xscale * spr2d->xoffset * cos(rot) + yscale * spr2d->yoffset * cos(M_PI/2+rot), ulcy = y + xscale * spr2d->xoffset * sin(rot) - yscale * spr2d->yoffset * sin(M_PI/2+rot); const double mpr = 3*M_PI/2 + rot; const gs_scalar ulcx2 = ulcx + h * cos(mpr), ulcy2 = ulcy - h * sin(mpr); const gs_scalar r = __GETR(blend), g = __GETG(blend), b = __GETB(blend); const gs_scalar data[4*8] = { ulcx, ulcy, 0.0, 0.0, r, g, b, alpha, ulcx + wcosrot, ulcy - wsinrot, tbx, 0.0, r, g, b, alpha, ulcx2 + wcosrot, ulcy2 - wsinrot, tbx, tby, r, g, b, alpha, ulcx2, ulcy2, 0.0, tby, r, g, b, alpha }; plane2D_rotated(data); }
void draw_sprite_ext(int spr, int subimg, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, double rot, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; rot *= M_PI/180; const float w = spr2d->width*xscale, h = spr2d->height*yscale, tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], wsinrot = w*sin(rot), wcosrot = w*cos(rot); draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); float ulcx = x - xscale * spr2d->xoffset * cos(rot) + yscale * spr2d->yoffset * cos(M_PI/2+rot), ulcy = y + xscale * spr2d->xoffset * sin(rot) - yscale * spr2d->yoffset * sin(M_PI/2+rot); draw_vertex_texture_color(ulcx,ulcy, 0,0, color, alpha); draw_vertex_texture_color(ulcx + wcosrot, ulcy - wsinrot, tbx, 0, color, alpha); const double mpr = 3*M_PI/2 + rot; ulcx += h * cos(mpr); ulcy -= h * sin(mpr); draw_vertex_texture_color(ulcx,ulcy, 0,tby, color, alpha); draw_vertex_texture_color(ulcx + wcosrot, ulcy - wsinrot, tbx,tby, color, alpha); draw_primitive_end(); }
void draw_sprite_tiled_ext(int spr, int subimg, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; const float tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], width_scaled = spr2d->width*xscale, height_scaled = spr2d->height*yscale, xoff = fmod(spr2d->xoffset*xscale+x,width_scaled)-width_scaled, yoff = fmod(spr2d->yoffset*yscale+y,height_scaled)-height_scaled; const int hortil = int(ceil((view_enabled ? int(view_xview[view_current] + view_wview[view_current]) : room_width) / (width_scaled*tbx))) + 1, vertil = int(ceil((view_enabled ? int(view_yview[view_current] + view_hview[view_current]) : room_height) / (height_scaled*tby))) + 1; float xvert1 = xoff, xvert2 = xvert1 + width_scaled, yvert1, yvert2; for (int i=0; i<hortil; i++) { yvert1 = yoff; yvert2 = yvert1 + height_scaled; for (int c=0; c<vertil; c++) { draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,0,0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbx,0,color,alpha); draw_vertex_texture_color(xvert1,yvert2,0,tby,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbx,tby,color,alpha); draw_primitive_end(); yvert1 = yvert2; yvert2 += height_scaled; } xvert1 = xvert2; xvert2 += width_scaled; } }
void draw_sprite_general(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar width, gs_scalar height, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, double rot, int c1, int c2, int c3, int c4, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; const float tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], tbw = spr2d->width/tbx, tbh = spr2d->height/tby, w = width*xscale, h = height*yscale; rot *= M_PI/180; const float wcosrot = w*cos(rot), wsinrot = w*sin(rot); draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); float ulcx = x + xscale * cos(M_PI+rot) + yscale * cos(M_PI/2+rot), ulcy = y - yscale * sin(M_PI+rot) - yscale * sin(M_PI/2+rot); draw_vertex_texture_color(ulcx, ulcy, left/tbw, top/tbh, c1, alpha); draw_vertex_texture_color((ulcx + wcosrot), (ulcy - wsinrot), (left+width)/tbw, top/tbh, c2, alpha); ulcx += h * cos(3*M_PI/2 + rot); ulcy -= h * sin(3*M_PI/2 + rot); draw_vertex_texture_color((ulcx + wcosrot), (ulcy - wsinrot), (left+width)/tbw, (top+height)/tbh, c4, alpha); draw_vertex_texture_color(ulcx, ulcy, left/tbw, (top+height)/tbh, c3, alpha); draw_primitive_end(); }
void draw_sprite_tiled(int spr, int subimg, gs_scalar x, gs_scalar y, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; x = ((spr2d->xoffset+x)<0?0:spr2d->width)-fmod(spr2d->xoffset+x,spr2d->width); y = ((spr2d->yoffset+y)<0?0:spr2d->height)-fmod(spr2d->yoffset+y,spr2d->height); const gs_scalar tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi]; const int hortil = int(ceil((view_enabled ? (gs_scalar)(view_xview[view_current] + view_wview[view_current]) : (gs_scalar)room_width) / ((gs_scalar)spr2d->width))) + 1, vertil = int(ceil((view_enabled ? (gs_scalar)(view_yview[view_current] + view_hview[view_current]) : (gs_scalar)room_height) / ((gs_scalar)spr2d->height))) + 1; gs_scalar xvert1 = -x, xvert2 = xvert1 + spr2d->width, yvert1, yvert2; for (int i=0; i<hortil; ++i) { yvert1 = -y; yvert2 = yvert1 + spr2d->height; for (int c=0; c<vertil; ++c) { draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,0,0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbx,0,color,alpha); draw_vertex_texture_color(xvert1,yvert2,0,tby,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbx,tby,color,alpha); draw_primitive_end(); yvert1 = yvert2; yvert2 += spr2d->height; } xvert1 = xvert2; xvert2 += spr2d->width; } }
void draw_sprite_pos(int spr, int subimg, gs_scalar x1, gs_scalar y1, gs_scalar x2, gs_scalar y2, gs_scalar x3, gs_scalar y3, gs_scalar x4, gs_scalar y4, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; const float tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi]; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(x1,y1,0,0,draw_get_color(),alpha); draw_vertex_texture_color(x2,y1,tbx,0,draw_get_color(),alpha); draw_vertex_texture_color(x1,y2,0,tby,draw_get_color(),alpha); draw_vertex_texture_color(x2,y2,tbx,tby,draw_get_color(),alpha); draw_primitive_end(); }
void draw_sprite(int spr,int subimg, gs_scalar x, gs_scalar y, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; const float tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], xvert1 = x-spr2d->xoffset, xvert2 = xvert1 + spr2d->width, yvert1 = y-spr2d->yoffset, yvert2 = yvert1 + spr2d->height; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,0,0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbx,0,color,alpha); draw_vertex_texture_color(xvert1,yvert2, 0,tby,color,alpha); draw_vertex_texture_color(xvert2,yvert2, tbx,tby,color,alpha); draw_primitive_end(); }
void draw_sprite_part(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar width, gs_scalar height, gs_scalar x, gs_scalar y, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; float tbw = spr2d->width/(float)spr2d->texbordxarray[usi], tbh = spr2d->height/(float)spr2d->texbordyarray[usi], tbx1 = left/tbw, tbx2 = tbx1 + width/tbw, tby1 = top/tbh, tby2 = tby1 + height/tbh; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(x,y,tbx1,tby1,color,alpha); draw_vertex_texture_color(x+width,y,tbx2,tby1,color,alpha); draw_vertex_texture_color(x,y+height,tbx1,tby2,color,alpha); draw_vertex_texture_color(x+width,y+height,tbx2,tby2,color,alpha); draw_primitive_end(); }
void draw_sprite_stretched(int spr, int subimg, gs_scalar x, gs_scalar y, gs_scalar width, gs_scalar height) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], xvert1 = x-spr2d->xoffset, xvert2 = xvert1 + width, yvert1 = y-spr2d->yoffset, yvert2 = yvert1 + height; const gs_scalar data[4*8] = { xvert1, yvert1, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, xvert2, yvert1, tbx, 0.0, 1.0, 1.0, 1.0, 1.0, xvert2, yvert2, tbx, tby, 1.0, 1.0, 1.0, 1.0, xvert1, yvert2, 0.0, tby, 1.0, 1.0, 1.0, 1.0 }; plane2D_rotated(data); }
void draw_sprite_part(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar width, gs_scalar height, gs_scalar x, gs_scalar y) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbw = spr2d->width/(float)spr2d->texbordxarray[usi], tbh = spr2d->height/(float)spr2d->texbordyarray[usi], tbx1 = left/tbw, tbx2 = tbx1 + width/tbw, tby1 = top/tbh, tby2 = tby1 + height/tbh; const gs_scalar data[4*8] = { x, y, tbx1, tby1, 1.0, 1.0, 1.0, 1.0, x+width, y, tbx2, tby1, 1.0, 1.0, 1.0, 1.0, x+width, y+height, tbx2, tby2, 1.0, 1.0, 1.0, 1.0, x, y+height, tbx1, tby2, 1.0, 1.0, 1.0, 1.0 }; plane2D_rotated(data); }
void draw_sprite_part_ext(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar width, gs_scalar height, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, int blend, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbw = spr2d->width/(float)spr2d->texbordxarray[usi], tbh = spr2d->height/(float)spr2d->texbordyarray[usi], xvert1 = x, xvert2 = xvert1 + width*xscale, yvert1 = y, yvert2 = yvert1 + height*yscale, tbx1 = left/tbw, tbx2 = tbx1 + width/tbw, tby1 = top/tbh, tby2 = tby1 + height/tbh; const gs_scalar r = __GETR(blend), g = __GETG(blend), b = __GETB(blend); const gs_scalar data[4*8] = { xvert1,yvert1, tbx1,tby1, r, g, b, alpha, xvert2,yvert1, tbx2,tby1, r, g, b, alpha, xvert2,yvert2, tbx2,tby2, r, g, b, alpha, xvert1,yvert2, tbx1,tby2, r, g, b, alpha }; plane2D_rotated(data); }
void draw_sprite_tiled_ext(int spr, int subimg, gs_scalar x, gs_scalar y, gs_scalar xscale, gs_scalar yscale, int blend, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; texture_use(GmTextures[spr2d->texturearray[usi]]->gltex); const gs_scalar tbx = spr2d->texbordxarray[usi], tby = spr2d->texbordyarray[usi], width_scaled = spr2d->width*xscale, height_scaled = spr2d->height*yscale, xoff = fmod(spr2d->xoffset*xscale+x,width_scaled)-width_scaled, yoff = fmod(spr2d->yoffset*yscale+y,height_scaled)-height_scaled; const int hortil = int(ceil((view_enabled ? int(view_xview[view_current] + view_wview[view_current]) : room_width) / (width_scaled*tbx))) + 1, vertil = int(ceil((view_enabled ? int(view_yview[view_current] + view_hview[view_current]) : room_height) / (height_scaled*tby))) + 1; gs_scalar xvert1 = xoff, xvert2 = xvert1 + width_scaled, yvert1, yvert2; const gs_scalar r = __GETR(blend), g = __GETG(blend), b = __GETB(blend); for (int i=0; i<hortil; i++) { yvert1 = yoff; yvert2 = yvert1 + height_scaled; for (int c=0; c<vertil; c++) { const gs_scalar data[4*8] = { xvert1, yvert1, 0.0, 0.0, r, g, b, alpha, xvert2, yvert1, tbx, 0.0, r, g, b, alpha, xvert2, yvert2, tbx, tby, r, g, b, alpha, xvert1, yvert2, 0.0, tby, r, g, b, alpha }; plane2D_rotated(data); yvert1 = yvert2; yvert2 += height_scaled; } xvert1 = xvert2; xvert2 += width_scaled; } }
//Draw padded void draw_sprite_padded(int spr, int subimg, gs_scalar left, gs_scalar top, gs_scalar right, gs_scalar bottom, gs_scalar x1, gs_scalar y1, gs_scalar x2, gs_scalar y2, int color, gs_scalar alpha) { get_spritev(spr2d,spr); const int usi = subimg >= 0 ? (subimg % spr2d->subcount) : int(((enigma::object_graphics*)enigma::instance_event_iterator->inst)->image_index) % spr2d->subcount; //Order x1,y1,x2,y2 correctly if (x1>x2) {gs_scalar tx = x2; x2 = x1, x1 = tx;} if (y1>y2) {gs_scalar ty = y2; y2 = y1, y1 = ty;} //Minimum w = left+right and minimum h = top+bottom gs_scalar w = x2-x1, h = y2-y1; if (w<left+right) x2 = x1+left+right, w = x2-x1; if (h<top+bottom) y2 = y1+top+bottom, h = y2-y1; const gs_scalar midw = w-left-right, midh = h-top-bottom; const gs_scalar midtw = spr2d->width-left-right, midth = spr2d->height-bottom-top; const gs_scalar tbw = spr2d->width/(gs_scalar)spr2d->texbordxarray[usi], tbh = spr2d->height/(gs_scalar)spr2d->texbordyarray[usi]; const gs_scalar tbl = left/tbw, tbt = top/tbh, tbr = right/tbw, tbb = bottom/tbh, tbmw = midtw/tbw, tbmh = midth/tbh; //Draw top-left corner gs_scalar xvert1 = x1, xvert2 = xvert1 + left, yvert1 = y1, yvert2 = yvert1 + top; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,0.0,0.0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl,0.0,color,alpha); draw_vertex_texture_color(xvert1,yvert2,0.0,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl,tbt,color,alpha); //Draw left side xvert1 = x1, xvert2 = xvert1 + left, yvert1 = y1 + top, yvert2 = yvert1 + midh; draw_vertex_texture_color(xvert1,yvert1,0.0,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl,tbt,color,alpha); draw_vertex_texture_color(xvert1,yvert2,0.0,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl,tbt+tbmh,color,alpha); //Draw bottom-left corner xvert1 = x1, xvert2 = xvert1 + left, yvert1 = y1 + top + midh, yvert2 = yvert1 + bottom; draw_vertex_texture_color(xvert1,yvert1,0.0,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert1,yvert2,0.0,tbt+tbmh+tbb,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl,tbt+tbmh+tbb,color,alpha); draw_primitive_end(); //Draw top xvert1 = x1 + left, xvert2 = xvert1 + midw, yvert1 = y1, yvert2 = yvert1 + top; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,tbl,0.0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw,0.0,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw,tbt,color,alpha); //Draw middle xvert1 = x1 + left, xvert2 = xvert1 + midw, yvert1 = y1 + top, yvert2 = yvert1 + midh; draw_vertex_texture_color(xvert1,yvert1,tbl,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw,tbt,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw,tbt+tbmh,color,alpha); //Draw bottom xvert1 = x1 + left, xvert2 = xvert1 + midw, yvert1 = y1 + midh + top, yvert2 = yvert1 + bottom; draw_vertex_texture_color(xvert1,yvert1,tbl,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl,tbt+tbmh+tbb,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw,tbt+tbmh+tbb,color,alpha); draw_primitive_end(); //Draw top-right corner xvert1 = x1 + midw + left, xvert2 = xvert1 + right, yvert1 = y1, yvert2 = yvert1 + top; draw_primitive_begin_texture(pr_trianglestrip, spr2d->texturearray[usi]); draw_vertex_texture_color(xvert1,yvert1,tbl+tbmw,0.0,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw+tbr,0.0,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl+tbmw,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw+tbr,tbt,color,alpha); //Draw right side xvert1 = x1 + midw + left, xvert2 = xvert1 + right, yvert1 = y1 + top, yvert2 = yvert1 + midh; draw_vertex_texture_color(xvert1,yvert1,tbl+tbmw,tbt,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw+tbr,tbt,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl+tbmw,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw+tbr,tbt+tbmh,color,alpha); //Draw bottom-right corner xvert1 = x1 + midw + left, xvert2 = xvert1 + right, yvert1 = y1 + top + midh, yvert2 = yvert1 + bottom; draw_vertex_texture_color(xvert1,yvert1,tbl+tbmw,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert2,yvert1,tbl+tbmw+tbr,tbt+tbmh,color,alpha); draw_vertex_texture_color(xvert1,yvert2,tbl+tbmw,tbt+tbmh+tbb,color,alpha); draw_vertex_texture_color(xvert2,yvert2,tbl+tbmw+tbr,tbt+tbmh+tbb,color,alpha); draw_primitive_end(); }