void TerEdit_Tx_SetColor()
{
wait(3);
int skin_int = teredit_tx_selected+1+(teredit_tx_set-1)*max_teredit_tx_items;
if (skin_int > teredit_tx_count) return; // protection
if (!ent_getskin(terrain_entity, skin_int))
{
return;
}
TerEdit_Tx_Color( bmap_for_entity(terrain_entity , skin_int) , vector(teredit_tx_blue,teredit_tx_green,teredit_tx_red) );
wait_for(TerEdit_Tx_Color);
}
void TerEdit_Tx_Color(BMAP* bmap_pointer, COLOR* to_color)
{
if (bmap_pointer == NULL)
{
return;
}
var pixel_format = bmap_lock(bmap_pointer,0); // lock and get format
if (pixel_format >= 565)
{
var pixel;
COLOR pixel_color;
var pixel_alpha;
int i,j;
for(i=0;i<bmap_width(bmap_pointer);i++)
{
for(j=0;j<bmap_height(bmap_pointer);j++)
{
pixel = pixel_for_bmap( bmap_pointer , i , j ); // get pixel
pixel_to_vec( pixel_color , pixel_alpha , pixel_format , pixel ); // get color and alpha
pixel = pixel_for_vec( to_color , pixel_alpha , pixel_format ); // set alpha
pixel_to_bmap( bmap_pointer , i , j , pixel ); // set pixel
}
}
}
bmap_unlock(bmap_pointer);
bmap_to_mipmap(bmap_pointer); // @@@ update mipmaps after unlocking, to avoid the original skin to appear from big distance
wait(1);
TerEdit_Tx_UpdateSets32(); // uses bmap_blit to copy skin texture to thumbnail
TerrHmp_Tx_UpdateMaterialSkins(); // sets material skins to entity skins due to shader requirements
wait(1);
}