]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
DDS with DXT1a: was not correctly detected if r_texture_dds_load_alphamod == 0 (it...
authorvortex <vortex@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 9 Nov 2011 00:37:52 +0000 (00:37 +0000)
committerRudolf Polzer <divverent@xonotic.org>
Thu, 10 Nov 2011 20:25:37 +0000 (21:25 +0100)
ODE: physics_ode_constantstep now can be fractional, in this case ODE will run at this tickrate instead of using sys_ticrate, so ODE run at different framerate than server (may be useful for high values, such like running ODE at 100 fps and server at 40fps).

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11541 d7cf8633-e32d-0410-b094-e92efae38249
::stable-branch::merge=776e54e8acfdf32471b292143d3be2a541e1867b

gl_textures.c
world.c

index c9714ef2b3bd5236283846efc5bd410044008134..c51713b308bb61e07e25581fd2213f000d482a0a 100644 (file)
@@ -2121,9 +2121,9 @@ rtexture_t *R_LoadTextureDDSFile(rtexturepool_t *rtexturepool, const char *filen
                        Con_Printf("^1%s: invalid DXT1 DDS image\n", filename);
                        return NULL;
                }
-               if(r_texture_dds_load_alphamode.integer && (flags & TEXF_ALPHA))
+               if (flags & TEXF_ALPHA)
                {
-                       if(r_texture_dds_load_alphamode.integer == 1)
+                       if (r_texture_dds_load_alphamode.integer == 1)
                        {
                                // check alpha
                                for (i = 0;i < size;i += bytesperblock)
@@ -2140,6 +2140,8 @@ rtexture_t *R_LoadTextureDDSFile(rtexturepool_t *rtexturepool, const char *filen
                                else
                                        flags &= ~TEXF_ALPHA;
                        }
+                       else if (r_texture_dds_load_alphamode.integer == 0)
+                               textype = TEXTYPE_DXT1A;
                        else
                        {
                                flags &= ~TEXF_ALPHA;
diff --git a/world.c b/world.c
index c8e47ccdef0e5451e30d21a015b1c80de4b4f856..27351c892cfd6bb507c733cee2cf0b0442c938eb 100644 (file)
--- a/world.c
+++ b/world.c
@@ -346,7 +346,7 @@ cvar_t physics_ode_world_damping_angular = {0, "physics_ode_world_damping_angula
 cvar_t physics_ode_world_damping_angular_threshold = {0, "physics_ode_world_damping_angular_threshold", "0.01", "world angular damping threshold (see ODE User Guide); use defaults when set to -1"};
 cvar_t physics_ode_world_gravitymod = {0, "physics_ode_world_gravitymod", "1", "multiplies gravity got from sv_gravity, this may be needed to tweak if strong damping is used"};
 cvar_t physics_ode_iterationsperframe = {0, "physics_ode_iterationsperframe", "1", "divisor for time step, runs multiple physics steps per frame"};
-cvar_t physics_ode_constantstep = {0, "physics_ode_constantstep", "1", "use constant step (sys_ticrate value) instead of variable step which tends to increase stability"};
+cvar_t physics_ode_constantstep = {0, "physics_ode_constantstep", "1", "use constant step instead of variable step which tends to increase stability, if set to 1 uses sys_ticrate, instead uses it's own value"};
 cvar_t physics_ode_autodisable = {0, "physics_ode_autodisable", "1", "automatic disabling of objects which dont move for long period of time, makes object stacking a lot faster"};
 cvar_t physics_ode_autodisable_steps = {0, "physics_ode_autodisable_steps", "10", "how many steps object should be dormant to be autodisabled"};
 cvar_t physics_ode_autodisable_time = {0, "physics_ode_autodisable_time", "0", "how many seconds object should be dormant to be autodisabled"};
@@ -2631,8 +2631,10 @@ void World_Physics_Frame(world_t *world, double frametime, double gravity)
                prvm_edict_t *ed;
 
                world->physics.ode_iterations = bound(1, physics_ode_iterationsperframe.integer, 1000);
-               if (physics_ode_constantstep.integer)
-                       world->physics.ode_step = sys_ticrate.value / world->physics.ode_iterations;
+               if (physics_ode_constantstep.integer > 0 && physics_ode_constantstep.integer < 1)
+                       world->physics.ode_step = physics_ode_constantstep.integer / world->physics.ode_iterations;
+               else if (physics_ode_constantstep.integer)
+                       world->physics.ode_step = sys_ticrate.integer / world->physics.ode_iterations;
                else
                        world->physics.ode_step = frametime / world->physics.ode_iterations;
                world->physics.ode_movelimit = physics_ode_movelimit.value / world->physics.ode_step;