Программирование игр для Windows. Советы профессионала


ИГРА WARLOCK (КОЛДУН) - часть 8


if ((y_hit_type = world[cell_y][cell_x]) !=0)

// Вычисляем расстояние

dist_y = (long)((xi - x) * inv_cos_table [view angle]);

xi_save = (int)xi;

yb_save = у_bound;

у_ray = INTERSECTION_FOUND;

casting--;

} // Конец обработки наличия блока else

{ // Прекращаем расчет по оси Y

xi += x_step[view angle];

// Вычисляем следующую возможную линию пересечения

у_bound += у_delta;

} // Конец else

}

} // Конец while

// СЕКЦИЯ 6 /////////////////////////////////

// На этом этапе мы вычислили точки пересечения с

// горизонтальными и вертикальными стенами. Теперь

// определяем, которая из них ближе

if (dist_x < dist_y)

{

// Вертикальная стена ближе

// Рассчитать масштаб и умножить его на поправочный

// коэффициент для устранения сферических искажений

scale = (int)(cos_table[ray]/dist_x);

// Отсечь фрагмент текстуры

if (scale>(MAX_SCALE-1)) scale=(MAX_SCALE-1);

scale_row = scale_table[scale-1];

if (scale>(WINDOW_HEIGHT-1))

{

sliver_clip = (scale-(WINDOW_HEIGHT-1)) >> 1;

scale=(WINDOW_HEIGHT-l) ;

}

else

sliver_clip =0;

sliver_scale = scale-1;

// Установить параметры для ассемблерной процедуры

sliver_texture = object.frames[x_hit_type];

sliver_column = (yi_save & 0х00ЗF);

sliver_top     = WINDOW_MIDDLE - (scale >> 1);.

sliver_ray     = ray;

// Отобразить фрагмент текстуры

Render_Sliver_32();

} // Конец if else

// горизонтальная стена ближе

{

//Рассчитать масштаб и умножить его на поправочный

//коэффициент для устранения сферических искажений

scale = (int)(cos_table[ray]/dist_y);

if (scale>(MAX_SCALE-l)) scale=(MAX_SCALE-1);

// Выполняем отсечение

scale_row      = scale_table{scale-l];

if (scale>(WINDOW_HEIGHT-1)) {

sliver_clip = (scale-(WINDOW_HEIGHT-1)) >> 1;

scale=(WINDOW_HEIGHT-l);

}

else

sliver_clip = 0;

sliver_scale = scale-1;

// Устанавливаем параметры для ассемблерной процедуры

sliver_texture= object.frames[y_hit_type+l];

sliver_column = (xi_save & 0x003F);

sliver_top     = WINDOW_MIDDLE - (scale >> 1) ;




Начало  Назад  Вперед



Книжный магазин