mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-07-07 03:52:48 +00:00
camera_angle now uses matrix dialog
This commit is contained in:
parent
3e1228b7c7
commit
67d38feabd
21
config.cpp
21
config.cpp
@ -2605,7 +2605,7 @@ EX geom3::eSpatialEmbedding shown_spatial_embedding() {
|
|||||||
return geom3::spatial_embedding;
|
return geom3::spatial_embedding;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool in_tpp() { return pmodel == mdDisk && pconf.camera_angle; }
|
EX bool in_tpp() { return pmodel == mdDisk && !models::camera_straight; }
|
||||||
|
|
||||||
EX void display_embedded_errors() {
|
EX void display_embedded_errors() {
|
||||||
using namespace geom3;
|
using namespace geom3;
|
||||||
@ -2854,19 +2854,7 @@ EX void show3D() {
|
|||||||
dialog::editNumber(mouseaim_sensitivity, -1, 1, 0.002, 0.01, XLAT("mouse aiming sensitivity"), "set to 0 to disable");
|
dialog::editNumber(mouseaim_sensitivity, -1, 1, 0.002, 0.01, XLAT("mouse aiming sensitivity"), "set to 0 to disable");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if(true) {
|
if(true) add_edit(vpconf.cam());
|
||||||
dialog::addSelItem(XLAT("camera rotation"), fts(vpconf.camera_angle), 'S');
|
|
||||||
dialog::add_action([] {
|
|
||||||
dialog::editNumber(vpconf.camera_angle, -180, 180, 5, 0, XLAT("camera rotation"),
|
|
||||||
XLAT("Rotate the camera. Can be used to obtain a first person perspective, "
|
|
||||||
"or third person perspective when combined with Y shift.")
|
|
||||||
);
|
|
||||||
dialog::get_di().extra_options = [] {
|
|
||||||
dialog::addBoolItem(XLAT("render behind the camera"), vpconf.back_and_front, 'R');
|
|
||||||
dialog::add_action([] { vpconf.back_and_front = !vpconf.back_and_front; });
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(GDIM == 2) {
|
if(GDIM == 2) {
|
||||||
dialog::addSelItem(XLAT("fixed facing"), vid.fixed_facing ? fts(vid.fixed_facing_dir) : XLAT("OFF"), 'f');
|
dialog::addSelItem(XLAT("fixed facing"), vid.fixed_facing ? fts(vid.fixed_facing_dir) : XLAT("OFF"), 'f');
|
||||||
dialog::add_action([] () { vid.fixed_facing = !vid.fixed_facing;
|
dialog::add_action([] () { vid.fixed_facing = !vid.fixed_facing;
|
||||||
@ -3960,11 +3948,6 @@ EX int read_config_args() {
|
|||||||
else if(argis("-mrsv")) {
|
else if(argis("-mrsv")) {
|
||||||
PHASEFROM(2); shift(); reserve_limit = argi(); apply_memory_reserve();
|
PHASEFROM(2); shift(); reserve_limit = argi(); apply_memory_reserve();
|
||||||
}
|
}
|
||||||
else if(argis("-yca")) {
|
|
||||||
PHASEFROM(2);
|
|
||||||
shift_arg_formula(vid.yshift);
|
|
||||||
shift_arg_formula(pconf.camera_angle);
|
|
||||||
}
|
|
||||||
else if(argis("-pside")) {
|
else if(argis("-pside")) {
|
||||||
PHASEFROM(2);
|
PHASEFROM(2);
|
||||||
permaside = true;
|
permaside = true;
|
||||||
|
@ -1381,7 +1381,7 @@ void geometry_information::make_floor_textures_here() {
|
|||||||
vid.xres = FLOORTEXTURESIZE;
|
vid.xres = FLOORTEXTURESIZE;
|
||||||
vid.yres = FLOORTEXTURESIZE;
|
vid.yres = FLOORTEXTURESIZE;
|
||||||
pconf.scale = 0.125;
|
pconf.scale = 0.125;
|
||||||
pconf.camera_angle = 0;
|
dynamicval<transmatrix> vm(pconf.cam(), Id);
|
||||||
pconf.alpha = 1;
|
pconf.alpha = 1;
|
||||||
dynamicval<ld> lw(vid.linewidth, 2);
|
dynamicval<ld> lw(vid.linewidth, 2);
|
||||||
|
|
||||||
|
@ -1116,9 +1116,9 @@ EX namespace geom3 {
|
|||||||
EX void switch_tpp() {
|
EX void switch_tpp() {
|
||||||
if(dual::split(switch_fpp)) return;
|
if(dual::split(switch_fpp)) return;
|
||||||
if(rug::rugged) rug::close();
|
if(rug::rugged) rug::close();
|
||||||
if(pmodel == mdDisk && pconf.camera_angle) {
|
if(pmodel == mdDisk && !models::camera_straight) {
|
||||||
vid.yshift = 0;
|
vid.yshift = 0;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = 0;
|
pconf.yposition = 0;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
@ -1126,7 +1126,7 @@ EX namespace geom3 {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vid.yshift = -0.3;
|
vid.yshift = -0.3;
|
||||||
pconf.camera_angle = -45;
|
pconf.cam() = cspin(1, 2, -45._deg);
|
||||||
pconf.scale = 18/16. * vid.xres / vid.yres / multi::players;
|
pconf.scale = 18/16. * vid.xres / vid.yres / multi::players;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = -0.9;
|
pconf.yposition = -0.9;
|
||||||
|
17
graph.cpp
17
graph.cpp
@ -3343,7 +3343,7 @@ EX void drawaura() {
|
|||||||
ld hx = (x * 1. - current_display->xcenter) / rad;
|
ld hx = (x * 1. - current_display->xcenter) / rad;
|
||||||
ld hy = (y * 1. - current_display->ycenter) / rad / pconf.stretch;
|
ld hy = (y * 1. - current_display->ycenter) / rad / pconf.stretch;
|
||||||
|
|
||||||
if(pconf.camera_angle) camrotate(hx, hy);
|
if(!models::camera_straight) camrotate(hx, hy);
|
||||||
|
|
||||||
ld fac = sqrt(hx*hx+hy*hy);
|
ld fac = sqrt(hx*hx+hy*hy);
|
||||||
if(fac < 1) continue;
|
if(fac < 1) continue;
|
||||||
@ -3419,16 +3419,11 @@ EX void drawaura() {
|
|||||||
ld x = rad0 * c;
|
ld x = rad0 * c;
|
||||||
ld y = rad0 * s;
|
ld y = rad0 * s;
|
||||||
|
|
||||||
if(pconf.camera_angle) {
|
if(!models::camera_straight) {
|
||||||
ld z = rad0;
|
hyperpoint p = hyperpoint(x, y, rad0, 1);
|
||||||
|
p = pconf.cam() * p;
|
||||||
ld cam = pconf.camera_angle * degree;
|
x = p[0] * rad0 / p[2];
|
||||||
GLfloat cc = cos(cam);
|
y = p[1] * rad0 / p[2];
|
||||||
GLfloat ss = sin(cam);
|
|
||||||
|
|
||||||
tie(y, z) = make_pair(y * cc - z * ss, z * cc + y * ss);
|
|
||||||
x *= rad0 / z;
|
|
||||||
y *= rad0 / z;
|
|
||||||
}
|
}
|
||||||
cx[r][z][0] = x;
|
cx[r][z][0] = x;
|
||||||
cx[r][z][1] = y * pconf.stretch;
|
cx[r][z][1] = y * pconf.stretch;
|
||||||
|
33
hypgraph.cpp
33
hypgraph.cpp
@ -24,11 +24,9 @@ void ghcheck(hyperpoint &ret, const shiftpoint &H) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX void camrotate(ld& hx, ld& hy) {
|
EX void camrotate(ld& hx, ld& hy) {
|
||||||
ld cam = pconf.camera_angle * degree;
|
hyperpoint p = hyperpoint(hx, hy, 1, 1);
|
||||||
GLfloat cc = cos(cam);
|
p = pconf.cam() * p;
|
||||||
GLfloat ss = sin(cam);
|
hx = p[0] / p[2], hy = p[1] / p[2];
|
||||||
ld ux = hx, uy = hy * cc + ss, uz = cc - ss * hy;
|
|
||||||
hx = ux / uz, hy = uy / uz;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool non_spatial_model() {
|
EX bool non_spatial_model() {
|
||||||
@ -145,7 +143,7 @@ EX shiftpoint gethyper(ld x, ld y) {
|
|||||||
return find_on_screen(hxy, rgpushxto0(ghpm));
|
return find_on_screen(hxy, rgpushxto0(ghpm));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pconf.camera_angle) camrotate(hx, hy);
|
if(!models::camera_straight) camrotate(hx, hy);
|
||||||
|
|
||||||
return shiftless(perspective_to_space(hpxyz(hx, hy, 0)));
|
return shiftless(perspective_to_space(hpxyz(hx, hy, 0)));
|
||||||
}
|
}
|
||||||
@ -703,7 +701,7 @@ EX void apply_other_model(shiftpoint H_orig, hyperpoint& ret, eModel md) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ld tz = get_tz(H);
|
ld tz = get_tz(H);
|
||||||
if(!pconf.camera_angle) {
|
if(models::camera_straight) {
|
||||||
ret[0] = H[0] / tz;
|
ret[0] = H[0] / tz;
|
||||||
ret[1] = H[1] / tz;
|
ret[1] = H[1] / tz;
|
||||||
if(GDIM == 3) ret[2] = H[2] / tz;
|
if(GDIM == 3) ret[2] = H[2] / tz;
|
||||||
@ -713,13 +711,13 @@ EX void apply_other_model(shiftpoint H_orig, hyperpoint& ret, eModel md) {
|
|||||||
else {
|
else {
|
||||||
ld tx = H[0];
|
ld tx = H[0];
|
||||||
ld ty = H[1];
|
ld ty = H[1];
|
||||||
ld cam = pconf.camera_angle * degree;
|
|
||||||
GLfloat cc = cos(cam);
|
hyperpoint p = hyperpoint(tx, ty, tz, 1);
|
||||||
GLfloat ss = sin(cam);
|
p = rot_inverse(pconf.cam()) * p;
|
||||||
ld ux = tx, uy = ty * cc - ss * tz, uz = tz * cc + ss * ty;
|
|
||||||
ret[0] = ux / uz;
|
ret[0] = p[0] / p[2];
|
||||||
ret[1] = uy / uz;
|
ret[1] = p[1] / p[2];
|
||||||
ret[2] = vid.xres * current_display->eyewidth() / 2 / current_display->radius - vid.ipd / uz / 2;
|
ret[2] = vid.xres * current_display->eyewidth() / 2 / current_display->radius - vid.ipd / p[2] / 2;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2386,6 +2384,7 @@ eGeometry backup_geometry;
|
|||||||
eVariation backup_variation;
|
eVariation backup_variation;
|
||||||
videopar backup_vid;
|
videopar backup_vid;
|
||||||
bool backup_lpu;
|
bool backup_lpu;
|
||||||
|
transmatrix backup_cam;
|
||||||
|
|
||||||
/** \brief enable the 'flat' model for drawing HUD. See hr::flat_model_enabler */
|
/** \brief enable the 'flat' model for drawing HUD. See hr::flat_model_enabler */
|
||||||
EX void enable_flat_model(int val) {
|
EX void enable_flat_model(int val) {
|
||||||
@ -2395,6 +2394,7 @@ EX void enable_flat_model(int val) {
|
|||||||
#endif
|
#endif
|
||||||
backup_geometry = geometry;
|
backup_geometry = geometry;
|
||||||
backup_variation = variation;
|
backup_variation = variation;
|
||||||
|
backup_cam = pconf.cam();
|
||||||
backup_lpu = nisot::local_perspective_used;
|
backup_lpu = nisot::local_perspective_used;
|
||||||
backup_vid = vid;
|
backup_vid = vid;
|
||||||
geometry = gNormal;
|
geometry = gNormal;
|
||||||
@ -2404,7 +2404,7 @@ EX void enable_flat_model(int val) {
|
|||||||
pmodel = mdDisk;
|
pmodel = mdDisk;
|
||||||
pconf.alpha = 1;
|
pconf.alpha = 1;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.stretch = 1;
|
pconf.stretch = 1;
|
||||||
|
|
||||||
vid.always3 = false;
|
vid.always3 = false;
|
||||||
@ -2421,6 +2421,7 @@ EX void enable_flat_model(int val) {
|
|||||||
geometry = backup_geometry;
|
geometry = backup_geometry;
|
||||||
variation = backup_variation;
|
variation = backup_variation;
|
||||||
nisot::local_perspective_used = backup_lpu;
|
nisot::local_perspective_used = backup_lpu;
|
||||||
|
pconf.cam() = backup_cam;
|
||||||
vid = backup_vid;
|
vid = backup_vid;
|
||||||
geom3::apply_always3();
|
geom3::apply_always3();
|
||||||
calcparam();
|
calcparam();
|
||||||
@ -2466,7 +2467,7 @@ EX transmatrix atscreenpos(ld x, ld y, ld size) {
|
|||||||
|
|
||||||
void circle_around_center(ld radius, color_t linecol, color_t fillcol, PPR prio) {
|
void circle_around_center(ld radius, color_t linecol, color_t fillcol, PPR prio) {
|
||||||
#if CAP_QUEUE
|
#if CAP_QUEUE
|
||||||
if(among(pmodel, mdDisk, mdEquiarea, mdEquidistant, mdFisheye) && !(pmodel == mdDisk && hyperbolic && pconf.alpha <= -1) && pconf.camera_angle == 0) {
|
if(among(pmodel, mdDisk, mdEquiarea, mdEquidistant, mdFisheye) && !(pmodel == mdDisk && hyperbolic && pconf.alpha <= -1) && models::camera_straight) {
|
||||||
hyperpoint ret;
|
hyperpoint ret;
|
||||||
applymodel(shiftless(xpush0(radius)), ret);
|
applymodel(shiftless(xpush0(radius)), ret);
|
||||||
ld r = hypot_d(2, ret);
|
ld r = hypot_d(2, ret);
|
||||||
|
@ -370,6 +370,12 @@ int read_legacy_args() {
|
|||||||
if(GDIM == 3) shift_arg_formula(models::rotation_xz);
|
if(GDIM == 3) shift_arg_formula(models::rotation_xz);
|
||||||
if(GDIM == 3) shift_arg_formula(models::rotation_xy2); */
|
if(GDIM == 3) shift_arg_formula(models::rotation_xy2); */
|
||||||
}
|
}
|
||||||
|
else if(argis("-yca")) {
|
||||||
|
PHASEFROM(2);
|
||||||
|
shift_arg_formula(vid.yshift);
|
||||||
|
shift(); ld angle = argf();
|
||||||
|
pconf.cam() = cspin(0, 2, angle);
|
||||||
|
}
|
||||||
else return 1;
|
else return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -956,7 +956,7 @@ EX void showStartMenu() {
|
|||||||
pconf.mori() = racing::race_angle;
|
pconf.mori() = racing::race_angle;
|
||||||
racing::race_advance = 1;
|
racing::race_advance = 1;
|
||||||
vid.yshift = 0;
|
vid.yshift = 0;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = 0;
|
pconf.yposition = 0;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
|
13
models.cpp
13
models.cpp
@ -138,13 +138,14 @@ projection_configuration::projection_configuration() {
|
|||||||
ptr_model_orientation = new trans23;
|
ptr_model_orientation = new trans23;
|
||||||
ptr_ball = new transmatrix;
|
ptr_ball = new transmatrix;
|
||||||
*ptr_ball = cspin(1, 2, 20._deg);
|
*ptr_ball = cspin(1, 2, 20._deg);
|
||||||
|
ptr_camera = new transmatrix; *ptr_camera = Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX namespace models {
|
EX namespace models {
|
||||||
|
|
||||||
EX trans23 rotation;
|
EX trans23 rotation;
|
||||||
EX int do_rotate = 1;
|
EX int do_rotate = 1;
|
||||||
EX bool model_straight, model_straight_yz;
|
EX bool model_straight, model_straight_yz, camera_straight;
|
||||||
|
|
||||||
/** screen coordinates to orientation logical coordinates */
|
/** screen coordinates to orientation logical coordinates */
|
||||||
EX void ori_to_scr(hyperpoint& h) { if(!model_straight) h = pconf.mori().get() * h; }
|
EX void ori_to_scr(hyperpoint& h) { if(!model_straight) h = pconf.mori().get() * h; }
|
||||||
@ -171,6 +172,7 @@ EX namespace models {
|
|||||||
EX void configure() {
|
EX void configure() {
|
||||||
model_straight = (pconf.mori().get()[0][0] > 1 - 1e-9);
|
model_straight = (pconf.mori().get()[0][0] > 1 - 1e-9);
|
||||||
model_straight_yz = GDIM == 2 || (pconf.mori().get()[2][2] > 1-1e-9);
|
model_straight_yz = GDIM == 2 || (pconf.mori().get()[2][2] > 1-1e-9);
|
||||||
|
camera_straight = eqmatrix(pconf.cam(), Id);
|
||||||
if(history::on) history::apply();
|
if(history::on) history::apply();
|
||||||
|
|
||||||
if(!euclid) {
|
if(!euclid) {
|
||||||
@ -1057,8 +1059,13 @@ EX namespace models {
|
|||||||
param_custom(p.alpha, sp+"projection", menuitem_projection_distance, 'p')
|
param_custom(p.alpha, sp+"projection", menuitem_projection_distance, 'p')
|
||||||
->help_text = "projection distance|Gans Klein Poincare orthographic stereographic";
|
->help_text = "projection distance|Gans Klein Poincare orthographic stereographic";
|
||||||
|
|
||||||
param_f(p.camera_angle, pp+"cameraangle", sp+"camera angle", 0);
|
param_matrix(p.cam(), pp+"cameraangle", 3)
|
||||||
addsaver(p.ballproj, sp+"ballproj", 1);
|
-> editable(pp+"camera angle", "Rotate the camera. Can be used to obtain a first person perspective, "
|
||||||
|
"or third person perspective when combined with Y shift.", 'S')
|
||||||
|
-> set_extra([] {
|
||||||
|
dialog::addBoolItem(XLAT("render behind the camera"), vpconf.back_and_front, 'R');
|
||||||
|
dialog::add_action([] { vpconf.back_and_front = !vpconf.back_and_front; });
|
||||||
|
});
|
||||||
|
|
||||||
param_matrix(p.ball(), pp+"ballangle", 3)
|
param_matrix(p.ball(), pp+"ballangle", 3)
|
||||||
-> editable("camera rotation in 3D models",
|
-> editable("camera rotation in 3D models",
|
||||||
|
12
racing.cpp
12
racing.cpp
@ -967,12 +967,12 @@ void race_projection() {
|
|||||||
|
|
||||||
dialog::init(XLAT("racing projections"));
|
dialog::init(XLAT("racing projections"));
|
||||||
|
|
||||||
dialog::addBoolItem(XLAT("Poincaré disk model"), pmodel == mdDisk && !pconf.camera_angle, '1');
|
dialog::addBoolItem(XLAT("Poincaré disk model"), pmodel == mdDisk && models::camera_straight, '1');
|
||||||
dialog::add_action([] () {
|
dialog::add_action([] () {
|
||||||
pmodel = mdDisk;
|
pmodel = mdDisk;
|
||||||
race_advance = 0;
|
race_advance = 0;
|
||||||
vid.yshift = 0;
|
vid.yshift = 0;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = 0;
|
pconf.yposition = 0;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
@ -986,7 +986,7 @@ void race_projection() {
|
|||||||
pconf.mori() = race_angle;
|
pconf.mori() = race_angle;
|
||||||
race_advance = 1;
|
race_advance = 1;
|
||||||
vid.yshift = 0;
|
vid.yshift = 0;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = 0;
|
pconf.yposition = 0;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
@ -1000,7 +1000,7 @@ void race_projection() {
|
|||||||
pconf.mori() = race_angle * spin90();
|
pconf.mori() = race_angle * spin90();
|
||||||
race_advance = 0.5;
|
race_advance = 0.5;
|
||||||
vid.yshift = 0;
|
vid.yshift = 0;
|
||||||
pconf.camera_angle = 0;
|
pconf.cam() = Id;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = 0;
|
pconf.yposition = 0;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
@ -1008,12 +1008,12 @@ void race_projection() {
|
|||||||
vid.smart_range_detail = 3;
|
vid.smart_range_detail = 3;
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog::addBoolItem(XLAT("third-person perspective"), pmodel == mdDisk && pconf.camera_angle, '4');
|
dialog::addBoolItem(XLAT("third-person perspective"), pmodel == mdDisk && !models::camera_straight, '4');
|
||||||
dialog::add_action([] () {
|
dialog::add_action([] () {
|
||||||
pmodel = mdDisk;
|
pmodel = mdDisk;
|
||||||
race_advance = 0;
|
race_advance = 0;
|
||||||
vid.yshift = -0.3;
|
vid.yshift = -0.3;
|
||||||
pconf.camera_angle = -45;
|
pconf.cam() = cspin(1, 2, -45._deg);
|
||||||
pconf.scale = 18/16. * vid.xres / vid.yres / multi::players;
|
pconf.scale = 18/16. * vid.xres / vid.yres / multi::players;
|
||||||
pconf.xposition = 0;
|
pconf.xposition = 0;
|
||||||
pconf.yposition = -0.9;
|
pconf.yposition = -0.9;
|
||||||
|
16
shaders.cpp
16
shaders.cpp
@ -836,20 +836,8 @@ void display_data::set_projection(int ed, ld shift) {
|
|||||||
glhr::projection_multiply(glhr::translate(0, 0.5, 0));
|
glhr::projection_multiply(glhr::translate(0, 0.5, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pconf.camera_angle && pmodel != mdPixel) {
|
if(!models::camera_straight && pmodel != mdPixel) {
|
||||||
ld cam = pconf.camera_angle * degree;
|
glhr::projection_multiply(glhr::tmtogl_transpose(pconf.cam()));
|
||||||
|
|
||||||
GLfloat cc = cos(cam);
|
|
||||||
GLfloat ss = sin(cam);
|
|
||||||
|
|
||||||
GLfloat yzspin[16] = {
|
|
||||||
1, 0, 0, 0,
|
|
||||||
0, cc, ss, 0,
|
|
||||||
0, -ss, cc, 0,
|
|
||||||
0, 0, 0, 1
|
|
||||||
};
|
|
||||||
|
|
||||||
glhr::projection_multiply(glhr::as_glmatrix(yzspin));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(u_alpha) {
|
if(u_alpha) {
|
||||||
|
2
sky.cpp
2
sky.cpp
@ -645,7 +645,7 @@ EX void make_air() {
|
|||||||
|
|
||||||
pconf.alpha = 1;
|
pconf.alpha = 1;
|
||||||
pconf.scale = 1;
|
pconf.scale = 1;
|
||||||
pconf.camera_angle = 0;
|
dynamicval<transmatrix> vm(pconf.cam(), Id);
|
||||||
pconf.stretch = 1;
|
pconf.stretch = 1;
|
||||||
pmodel = mdDisk;
|
pmodel = mdDisk;
|
||||||
|
|
||||||
|
@ -998,7 +998,7 @@ void init_textureconfig() {
|
|||||||
addsaver(vid.yshift, "Y shift", 0);
|
addsaver(vid.yshift, "Y shift", 0);
|
||||||
addsaver(pconf.yposition, "Y position", 0);
|
addsaver(pconf.yposition, "Y position", 0);
|
||||||
addsaver(pconf.xposition, "X position", 0);
|
addsaver(pconf.xposition, "X position", 0);
|
||||||
addsaver(pconf.camera_angle, "camera angle", 0);
|
addsaver((matrix_eq&)pconf.cam(), "camera angle");
|
||||||
addsaverenum(targetvariation, "bitruncated", eVariation::bitruncated);
|
addsaverenum(targetvariation, "bitruncated", eVariation::bitruncated);
|
||||||
// ... geometry parameters
|
// ... geometry parameters
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user