worked out the surfaceparms stuff

added visual effect for SURF_SNOW (needs fixing)
deleted useless surfaceparms files
This commit is contained in:
q3rally 2021-04-03 23:31:23 +00:00
parent c52c9468be
commit 4f04a97fdf
17 changed files with 133 additions and 149 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -15,5 +15,6 @@
SURF_GRAVEL 0x800000
SURF_ICE 0x1000000
SURF_DIRT 0x2000000
SURF_METAL 0x4000000
}

View file

@ -388,6 +388,18 @@ smokePuffRagePro
}
}
snowPuff
{
cull none
entityMergable // allow all the sprites to be merged together
{
map gfx/misc/snowpuff3.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
rgbGen vertex
alphaGen vertex
}
}
shotgunSmokePuff
{
cull none

View file

@ -1,54 +0,0 @@
// Make sure to leave a space between "name" and "{"
// and between "contents" and "}".
// Names are limited to 16 characters
// Max of 64 infoParms
// name { clearsolid, surfaceflags, contents }
water { 1 0 32 }
slime { 1 0 16 } // mildly damaging
lava { 1 0 8 } // very damaging
playerclip { 1 0 65536 }
monsterclip { 1 0 131072 }
nodrop { 1 0 2147483648 } // don't drop items or leave bodies (death fog, lava, etc)
nonsolid { 1 16384 0 } // clears the solid flag
// utility relevant attributes
origin { 1 0 16777216 } // center of rotating brushes
trans { 0 0 536870912 } // don't eat contained surfaces
detail { 0 0 134217728 } // don't include in structural bsp
structural { 0 0 268435456 } // force into structural bsp even if trnas
areaportal { 1 0 32768 } // divides areas
clusterportal { 1 0 1048576 } // for bots
donotenter { 1 0 2097152 } // for bots
botclipn { 1 0 4194304 } // for bots
fog { 1 0 64 } // carves surfaces entering
sky { 0 4 0 } // emit light from an environment map
lightfilter { 0 32768 0 } // filter light going through it
alphashadow { 0 65536 0 } // test light on a per-pixel basis
hint { 0 256 0 } // use as a primary splitter
// server attributes
slick { 0 2 0 } // ice in q3rally
noimpact { 0 16 0 } // don't make impact explosions or marks
nomarks { 0 32 0 } // don't make impact marks, but still explode
ladder { 0 8 0 }
nodamage { 0 1 0 }
metalsteps { 0 4096 0 }
flesh { 0 64 0 }
nosteps { 0 8192 0 }
// drawsurf attributes
nodraw { 0 128 0 } // don't generate a drawsurface (or a lightmap)
pointlight { 0 2048 0 } // sample lighting at vertexes
nolightmap { 0 1024 0 } // don't generate a lightmap
nodlight { 0 131072 0 } // don't ever add dynamic lights
dust { 0 262144 0 } // leave dust trail when walking on this surface
// extra q3rally attributes
grass { 0 524288 0 }
asphalt { 0 1048576 0 }
wet { 0 2097152 0 }
metal { 0 4096 0 } // metal
ice { 0 2 0 } // same as slick
dirt { 0 262144 0 }

View file

@ -6219,7 +6219,7 @@ textures/q3r_ground/snowy04_slick
textures/q3r_ground/snowy05_slick
{
qer_editorimage textures/q3r_ground/snowy05.tga
surfaceparm SURF_SLICK
surfaceparm SURF_SNOW
surfaceparm nolightmap
cull disable
{

View file

@ -1,46 +0,0 @@
// Make sure to leave a space between "name" and "{"
// and between "contents" and "}".
// Names are limited to 16 characters
// Max of 64 infoParms
// name { clearsolid, surfaceflags, contents }
water { 1 0 32 }
slime { 1 0 16 } // mildly damaging
lava { 1 0 8 } // very damaging
playerclip { 1 0 65536 }
monsterclip { 1 0 131072 }
nodrop { 1 0 2147483648 } // don't drop items or leave bodies (death fog, lava, etc)
nonsolid { 1 16384 0 } // clears the solid flag
// utility relevant attributes
origin { 1 0 16777216 } // center of rotating brushes
trans { 0 0 536870912 } // don't eat contained surfaces
detail { 0 0 134217728 } // don't include in structural bsp
structural { 0 0 268435456 } // force into structural bsp even if trnas
areaportal { 1 0 32768 } // divides areas
clusterportal { 1 0 1048576 } // for bots
donotenter { 1 0 2097152 } // for bots
botclipn { 1 0 4194304 } // for bots
fog { 1 0 64 } // carves surfaces entering
sky { 0 4 0 } // emit light from an environment map
lightfilter { 0 32768 0 } // filter light going through it
alphashadow { 0 65536 0 } // test light on a per-pixel basis
hint { 0 256 0 } // use as a primary splitter
// server attributes
slick { 0 2 0 }
noimpact { 0 16 0 } // don't make impact explosions or marks
nomarks { 0 32 0 } // don't make impact marks, but still explode
ladder { 0 8 0 }
nodamage { 0 1 0 }
metalsteps { 0 4096 0 }
flesh { 0 64 0 }
nosteps { 0 8192 0 }
// drawsurf attributes
nodraw { 0 128 0 } // don't generate a drawsurface (or a lightmap)
pointlight { 0 2048 0 } // sample lighting at vertexes
nolightmap { 0 1024 0 } // don't generate a lightmap
nodlight { 0 131072 0 } // don't ever add dynamic lights
dust { 0 262144 0 } // leave dust trail when walking on this surface

View file

@ -197,6 +197,7 @@ typedef struct centity_s {
int trailTime; // so missile trails can handle dropped initial packets
int dustTrailTime;
int snowTrailTime;
int miscTime;
int snapShotTime; // last time this entity was found in a snapshot
@ -387,7 +388,7 @@ typedef struct {
int defendCount;
int assistCount;
int captures;
qboolean perfect;
qboolean perfect;
int team;
// Q3Rally Code Start
int damageDealt;
@ -1062,6 +1063,8 @@ typedef struct {
// special effects models
qhandle_t teleportEffectModel;
qhandle_t teleportEffectShader;
qhandle_t dustPuffShader;
qhandle_t snowPuffShader;
#ifdef MISSIONPACK
qhandle_t kamikazeEffectModel;
qhandle_t kamikazeShockWave;
@ -1075,11 +1078,12 @@ typedef struct {
qhandle_t invulnerabilityJuicedModel;
qhandle_t medkitUsageModel;
qhandle_t dustPuffShader;
qhandle_t snowPuffShader;
qhandle_t heartShader;
qhandle_t invulnerabilityPowerupModel;
// Q3Rally Code Start
#endif
qhandle_t dustPuffShader;
//#endif
// Q3Rally Code END
@ -1344,7 +1348,7 @@ typedef struct {
// Q3Rally Code END
int redflag, blueflag; // flag status from configstrings
int flagStatus;
int sigil[MAX_SIGILS];
int sigil[MAX_SIGILS];
qboolean newHud;
//
@ -1499,6 +1503,7 @@ extern vmCvar_t cg_oldRocket;
extern vmCvar_t cg_oldPlasma;
extern vmCvar_t cg_trueLightning;
extern vmCvar_t cg_sigilLocator;
extern vmCvar_t cg_enableSnow;
#ifdef MISSIONPACK
extern vmCvar_t cg_redTeamName;
extern vmCvar_t cg_blueTeamName;

View file

@ -223,6 +223,7 @@ vmCvar_t cg_oldRocket;
vmCvar_t cg_oldPlasma;
vmCvar_t cg_trueLightning;
vmCvar_t cg_sigilLocator;
vmCvar_t cg_enableSnow;
#ifdef MISSIONPACK
vmCvar_t cg_redTeamName;
vmCvar_t cg_blueTeamName;
@ -403,6 +404,7 @@ static cvarTable_t cvarTable[] = {
{ &cg_currentSelectedPlayerName, "cg_currentSelectedPlayerName", "", CVAR_ARCHIVE},
{ &cg_singlePlayer, "ui_singlePlayerActive", "0", CVAR_USERINFO},
{ &cg_enableDust, "g_enableDust", "0", CVAR_SERVERINFO},
{ &cg_enableSnow, "g_enableSnow", "0", CVAR_SERVERINFO},
{ &cg_enableBreath, "g_enableBreath", "0", CVAR_SERVERINFO},
{ &cg_singlePlayerActive, "ui_singlePlayerActive", "0", CVAR_USERINFO},
{ &cg_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE},
@ -1024,7 +1026,8 @@ static void CG_RegisterGraphics( void ) {
cgs.media.scoreboardPing = trap_R_RegisterShaderNoMip( "menu/tab/ping.tga" );
cgs.media.scoreboardScore = trap_R_RegisterShaderNoMip( "menu/tab/score.tga" );
cgs.media.scoreboardTime = trap_R_RegisterShaderNoMip( "menu/tab/time.tga" );
cgs.media.snowPuffShader = trap_R_RegisterShader("snowPuff" );
cgs.media.hastePuffShader = trap_R_RegisterShader("hasteSmokePuff" );
cgs.media.smokePuffShader = trap_R_RegisterShader( "smokePuff" );
cgs.media.smokePuffRageProShader = trap_R_RegisterShader( "smokePuffRagePro" );
cgs.media.shotgunSmokePuffShader = trap_R_RegisterShader( "shotgunSmokePuff" );
@ -1074,7 +1077,6 @@ static void CG_RegisterGraphics( void ) {
cgs.media.battleWeaponShader = trap_R_RegisterShader("powerups/battleWeapon" );
cgs.media.invisShader = trap_R_RegisterShader("powerups/invisibility" );
cgs.media.regenShader = trap_R_RegisterShader("powerups/regen" );
cgs.media.hastePuffShader = trap_R_RegisterShader("hasteSmokePuff" );
#ifdef MISSIONPACK
if ( cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) {
@ -1142,6 +1144,7 @@ static void CG_RegisterGraphics( void ) {
// Q3Rally Code Start
#endif
cgs.media.dustPuffShader = trap_R_RegisterShader("hasteSmokePuff" );
cgs.media.snowPuffShader = trap_R_RegisterShader("snowPuff" );
//#endif
// Q3Rally Code END

View file

@ -2018,15 +2018,6 @@ static void CG_DustTrail( centity_t *cent ) {
return;
}
// STONELANCE - UPDATE: use this instead of my dust function?
/*
anim = cent->pe.legs.animationNumber & ~ANIM_TOGGLEBIT;
if ( anim != LEGS_LANDB && anim != LEGS_LAND ) {
return;
}
*/
// END
cent->dustTrailTime += 40;
if ( cent->dustTrailTime < cg.time ) {
cent->dustTrailTime = cg.time;
@ -2055,6 +2046,51 @@ static void CG_DustTrail( centity_t *cent ) {
#endif
/*
===============
CG_SnowTrail
===============
*/
static void CG_SnowTrail( centity_t *cent ) {
// int anim;
vec3_t end, vel;
trace_t tr;
if (!cg_enableSnow.integer)
return;
if ( cent->snowTrailTime > cg.time ) {
return;
}
cent->snowTrailTime += 40;
if ( cent->snowTrailTime < cg.time ) {
cent->snowTrailTime = cg.time;
}
VectorCopy(cent->currentState.pos.trBase, end);
end[2] -= 64;
CG_Trace( &tr, cent->currentState.pos.trBase, NULL, NULL, end, cent->currentState.number, MASK_PLAYERSOLID );
if ( !(tr.surfaceFlags & SURF_SNOW) )
return;
VectorCopy( cent->currentState.pos.trBase, end );
end[2] -= 16;
VectorSet(vel, 0, 0, -30);
CG_SmokePuff( end, vel,
24,
.8f, .8f, 0.7f, 0.33f,
500,
cg.time,
0,
0,
cgs.media.snowPuffShader );
}
// #endif
/*
===============
CG_TrailItem
@ -2891,6 +2927,10 @@ static void CG_SurfaceEffects( centity_t *cent, vec3_t curOrigin, vec3_t up, int
shader = cgs.media.SMDirtShader;
colorIndex = 1;
}
else if (tr.surfaceFlags & SURF_SNOW){
shader = cgs.media.SMDirtShader;
colorIndex = 1;
}
else if (tr.surfaceFlags & SURF_DIRT) {
shader = cgs.media.SMDirtShader;
colorIndex = 1;
@ -2926,14 +2966,13 @@ static void CG_SurfaceEffects( centity_t *cent, vec3_t curOrigin, vec3_t up, int
return;
}
// trap_S_AddRealLoopingSound( cent->currentState.clientNum, origin, cent->currentState.pos.trDelta, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) );
/*
trap_S_AddRealLoopingSound( cent->currentState.clientNum, origin, cent->currentState.pos.trDelta, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) );
if( cent->skidSoundTime + 500 < cg.time )
{
trap_S_StartSound( origin, cent->currentState.clientNum, CHAN_VOICE, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) );
cent->skidSoundTime = cg.time;
}
*/
VectorMA(curOrigin, 1/2.0F, delta, origin);
VectorNormalize(delta);

View file

@ -98,10 +98,12 @@ extern float CP_GEAR_RATIOS[];
#define CP_DIRT_KCOF 0.8f
#define CP_GRASS_SCOF 1.05f // short grass
#define CP_GRASS_KCOF 0.7f
#define CP_GRAVEL_SCOF 1.22f // gravel
#define CP_GRAVEL_KCOF 0.85f
#define CP_SNOW_SCOF 0.7f // packed snow
#define CP_SNOW_KCOF 0.5f
#define CP_GRAVEL_SCOF 1.22f // gravel
#define CP_GRAVEL_KCOF 0.85f
#define CP_SNOW_SCOF 0.4f // packed snow
#define CP_SNOW_KCOF 0.27f
//#define CP_SNOW_SCOF 0.7f // packed snow
//#define CP_SNOW_KCOF 0.5f
#define CP_OIL_SCOF 0.3f // oil
#define CP_OIL_KCOF 0.2f

View file

@ -956,6 +956,7 @@ extern vmCvar_t pmove_fixed;
extern vmCvar_t pmove_msec;
extern vmCvar_t g_rankings;
extern vmCvar_t g_enableDust;
extern vmCvar_t g_enableSnow;
extern vmCvar_t g_enableBreath;
extern vmCvar_t g_singlePlayer;
extern vmCvar_t g_proxMineTimeout;

View file

@ -86,6 +86,7 @@ vmCvar_t pmove_msec;
vmCvar_t g_rankings;
vmCvar_t g_listEntity;
vmCvar_t g_localTeamPref;
vmCvar_t g_enableSnow;
#ifdef MISSIONPACK
vmCvar_t g_obeliskHealth;
vmCvar_t g_obeliskRegenPeriod;
@ -199,6 +200,7 @@ static cvarTable_t gameCvarTable[] = {
{ &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse },
{ &g_listEntity, "g_listEntity", "0", 0, 0, qfalse },
{ &g_enableSnow, "g_enableSnow", "0", CVAR_SERVERINFO, 0, qtrue, qfalse },
#ifdef MISSIONPACK
{ &g_obeliskHealth, "g_obeliskHealth", "2500", 0, 0, qfalse },

View file

@ -705,7 +705,10 @@ void SP_worldspawn( void ) {
G_SpawnString( "enableDust", "0", &s );
trap_Cvar_Set( "g_enableDust", s );
G_SpawnString( "enableSnow", "0", &s );
trap_Cvar_Set( "g_enableSnow", s );
G_SpawnString( "enableBreath", "0", &s );
trap_Cvar_Set( "g_enableBreath", s );

View file

@ -67,7 +67,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define BASETA "missionpack"
#ifndef PRODUCT_VERSION
#define PRODUCT_VERSION "v0.0.3.0_r339"
#define PRODUCT_VERSION "v0.0.3.0_r347"
#endif

View file

@ -33,13 +33,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define CONTENTS_SLIME 16
#define CONTENTS_WATER 32
#define CONTENTS_FOG 64
#define CONTENTS_NOTTEAM1 0x0080
#define CONTENTS_NOTTEAM2 0x0100
#define CONTENTS_NOBOTCLIP 0x0200
#define CONTENTS_AREAPORTAL 0x8000
#define CONTENTS_PLAYERCLIP 0x10000
#define CONTENTS_MONSTERCLIP 0x20000
//bot specific contents types
@ -49,9 +46,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define CONTENTS_DONOTENTER 0x200000
#define CONTENTS_BOTCLIP 0x400000
#define CONTENTS_MOVER 0x800000
#define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity
#define CONTENTS_BODY 0x2000000 // should never be on a brush, only in game
#define CONTENTS_CORPSE 0x4000000
#define CONTENTS_DETAIL 0x8000000 // brushes not used for the bsp
@ -79,8 +74,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define SURF_ALPHASHADOW 0x10000 // do per-pixel light shadow casting in q3map
#define SURF_NODLIGHT 0x20000 // don't dlight even if solid (solid lava, skies)
#define SURF_DUST 0x40000 // leave a dust trail when walking on this surface
// STONELANCE
#define SURF_GRASS 0x80000
#define SURF_ASPHALT 0x100000
#define SURF_WET 0x200000
@ -89,5 +82,4 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define SURF_ICE 0x1000000
#define SURF_DIRT 0x2000000
#define SURF_METAL 0x4000000
// END

View file

@ -95,7 +95,7 @@ q3rallycode
engine\code\botlib\l_utils.h
engine\code\botlib\lcc.mak
engine\code\botlib\linux-i386.mak
-cgame
+cgame
engine\code\cgame\cg_atmospheric.c
engine\code\cgame\cg_consolecmds.c
engine\code\cgame\cg_draw.c
@ -863,15 +863,21 @@ q3rallycode
2=engine\code\q3_ui\ui_rally_options.c
3=engine\code\cgame\cg_rally_hud.c
4=engine\code\cgame\cg_draw.c
5=engine\code\sdl\sdl_icon.h
6=engine\code\sdl\sdl_glimp.c
7=engine\code\game\bg_physics.c
8=engine\code\qcommon\surfaceflags.h
5=engine\code\game\bg_physics.c
6=engine\code\qcommon\surfaceflags.h
7=engine\code\cgame\cg_players.c
8=engine\code\cgame\cg_main.c
9=engine\code\game\g_local.h
10=engine\code\game\g_main.c
11=engine\code\game\g_spawn.c
12=engine\code\cgame\cg_event.c
13=engine\code\cgame\cg_rally_tools.c
14=engine\code\game\bg_physics.h
[Selected Project Files]
Main=
Selected=engine\code\qcommon\q_shared.h
Selected=engine\code\cgame\cg_main.c
[engine\code\qcommon\q_shared.h]
TopLine=1073
TopLine=52
Caret=39,70
[engine\code\q3_ui\ui_rally_controls.c]
TopLine=333
@ -885,15 +891,33 @@ Caret=108,806
[engine\code\cgame\cg_draw.c]
TopLine=434
Caret=1,449
[engine\code\sdl\sdl_icon.h]
TopLine=113
Caret=28,137
[engine\code\sdl\sdl_glimp.c]
TopLine=366
Caret=38,390
[engine\code\game\bg_physics.c]
TopLine=632
Caret=1,671
TopLine=640
Caret=29,655
[engine\code\qcommon\surfaceflags.h]
TopLine=13
Caret=1,86
TopLine=66
Caret=1,80
[engine\code\cgame\cg_players.c]
TopLine=2034
Caret=1,2054
[engine\code\cgame\cg_main.c]
TopLine=1132
Caret=56,1147
[engine\code\game\g_local.h]
TopLine=939
Caret=34,959
[engine\code\game\g_main.c]
TopLine=199
Caret=79,203
[engine\code\game\g_spawn.c]
TopLine=666
Caret=39,707
[engine\code\cgame\cg_event.c]
TopLine=830
Caret=1,815
[engine\code\cgame\cg_rally_tools.c]
TopLine=320
Caret=1,324
[engine\code\game\bg_physics.h]
TopLine=89
Caret=27,104