Fix wrong hashtable creation call for materials.
Tweaked a lot of gs-entbase entities.
This commit is contained in:
parent
5f41894f02
commit
7048e0add0
14 changed files with 233 additions and 46 deletions
|
@ -11,6 +11,7 @@ server/func_ladder.cpp
|
||||||
server/trigger_gravity.cpp
|
server/trigger_gravity.cpp
|
||||||
client/info_notnull.cpp
|
client/info_notnull.cpp
|
||||||
client/point_message.cpp
|
client/point_message.cpp
|
||||||
|
client/func_physbox.cpp
|
||||||
client/prop_dynamic.cpp
|
client/prop_dynamic.cpp
|
||||||
client/prop_rope.cpp
|
client/prop_rope.cpp
|
||||||
client/worldspawn.cpp
|
client/worldspawn.cpp
|
||||||
|
|
40
src/gs-entbase/client/func_physbox.cpp
Normal file
40
src/gs-entbase/client/func_physbox.cpp
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
/*class func_physbox:CBaseEntity
|
||||||
|
{
|
||||||
|
int m_iShape;
|
||||||
|
|
||||||
|
void() func_physbox;
|
||||||
|
virtual void() Respawn;
|
||||||
|
virtual void() touch;
|
||||||
|
};
|
||||||
|
|
||||||
|
void func_physbox::touch(void)
|
||||||
|
{
|
||||||
|
//physics_addforce(this, other.velocity, other.origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_physbox::Respawn(void)
|
||||||
|
{
|
||||||
|
movetype = MOVETYPE_PHYSICS;
|
||||||
|
solid = SOLID_PHYSICS_BOX; // SOLID_PHYSICS_TRIMESH
|
||||||
|
setmodel(this, m_oldModel);
|
||||||
|
setorigin(this, m_oldOrigin);
|
||||||
|
physics_enable(this, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void prop_rope::SpawnKey(string strField, string strKey)
|
||||||
|
{
|
||||||
|
switch (strField) {
|
||||||
|
case "material":
|
||||||
|
//m_iMaterial = stof(argv(i + 1));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
CBaseEntity::SpawnKey(strField, strKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_physbox::func_physbox(void)
|
||||||
|
{
|
||||||
|
drawmask = MASK_ENGINE;
|
||||||
|
Init();
|
||||||
|
}*/
|
|
@ -25,10 +25,12 @@ Client-side decorative model entity.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
class prop_dynamic:CBaseEntity {
|
class prop_dynamic:CBaseEntity
|
||||||
|
{
|
||||||
|
void() prop_dynamic;
|
||||||
|
|
||||||
virtual void() Init;
|
virtual void() Init;
|
||||||
virtual void() PhysicsFrame;
|
virtual void() PhysicsFrame;
|
||||||
/*virtual float() predraw;*/
|
|
||||||
virtual void(string, string) SpawnKey;
|
virtual void(string, string) SpawnKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -46,14 +48,6 @@ void prop_dynamic::SpawnKey(string strField, string strKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*float prop_dynamic::predraw(void)
|
|
||||||
{
|
|
||||||
if (checkpvs(viewClient.vecPlayerOrigin, this) == TRUE) {
|
|
||||||
addentity(this);
|
|
||||||
}
|
|
||||||
return PREDRAW_NEXT;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void prop_dynamic::Init(void)
|
void prop_dynamic::Init(void)
|
||||||
{
|
{
|
||||||
CBaseEntity::Init();
|
CBaseEntity::Init();
|
||||||
|
@ -65,6 +59,11 @@ void prop_dynamic::Init(void)
|
||||||
drawmask = MASK_ENGINE;
|
drawmask = MASK_ENGINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void prop_dynamic::prop_dynamic(void)
|
||||||
|
{
|
||||||
|
scale = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
void prop_dynamic::PhysicsFrame(void)
|
void prop_dynamic::PhysicsFrame(void)
|
||||||
{
|
{
|
||||||
//angles[1] += clframetime * 60;
|
//angles[1] += clframetime * 60;
|
||||||
|
|
|
@ -24,11 +24,11 @@ class prop_rope:CBaseEntity
|
||||||
|
|
||||||
void() prop_rope;
|
void() prop_rope;
|
||||||
virtual float() predraw;
|
virtual float() predraw;
|
||||||
virtual void(vector, vector) draw_segment;
|
virtual void(vector, vector, int) draw_segment;
|
||||||
virtual void(string, string) SpawnKey;
|
virtual void(string, string) SpawnKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
void prop_rope::draw_segment(vector start, vector end)
|
void prop_rope::draw_segment(vector start, vector end, int flip)
|
||||||
{
|
{
|
||||||
vector fsize = [2,2];
|
vector fsize = [2,2];
|
||||||
vector lit1 = /*[0.1,0.1,0.1] */ getlight(start) / 255;
|
vector lit1 = /*[0.1,0.1,0.1] */ getlight(start) / 255;
|
||||||
|
@ -59,14 +59,23 @@ void prop_rope::draw_segment(vector start, vector end)
|
||||||
tex3 = end - tangent * fsize[0];
|
tex3 = end - tangent * fsize[0];
|
||||||
tex4 = end + tangent * fsize[1];
|
tex4 = end + tangent * fsize[1];
|
||||||
|
|
||||||
R_BeginPolygon(m_strShader, 0, 0);
|
if (!flip) {
|
||||||
R_PolygonVertex(tex1, [1,1], lit1, 1.0f);
|
R_BeginPolygon(m_strShader, 0, 0);
|
||||||
R_PolygonVertex(tex2, [0,1], lit1, 1.0f);
|
R_PolygonVertex(tex1, [0,1], lit1, 1.0f);
|
||||||
|
R_PolygonVertex(tex2, [1,1], lit1, 1.0f);
|
||||||
|
|
||||||
R_PolygonVertex(tex3, [1,0], lit2, 1.0f);
|
R_PolygonVertex(tex3, [1,0], lit2, 1.0f);
|
||||||
R_PolygonVertex(tex4, [0,0], lit2, 1.0f);
|
R_PolygonVertex(tex4, [0,0], lit2, 1.0f);
|
||||||
R_EndPolygon();
|
R_EndPolygon();
|
||||||
|
} else {
|
||||||
|
R_BeginPolygon(m_strShader, 0, 0);
|
||||||
|
R_PolygonVertex(tex1, [1,0], lit1, 1.0f);
|
||||||
|
R_PolygonVertex(tex2, [0,0], lit1, 1.0f);
|
||||||
|
|
||||||
|
R_PolygonVertex(tex3, [0,1], lit2, 1.0f);
|
||||||
|
R_PolygonVertex(tex4, [1,1], lit2, 1.0f);
|
||||||
|
R_EndPolygon();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float prop_rope::predraw(void)
|
float prop_rope::predraw(void)
|
||||||
|
@ -78,7 +87,7 @@ float prop_rope::predraw(void)
|
||||||
float sc;
|
float sc;
|
||||||
|
|
||||||
if (checkpvs(getproperty(VF_ORIGIN), this) == FALSE) {
|
if (checkpvs(getproperty(VF_ORIGIN), this) == FALSE) {
|
||||||
return;
|
return PREDRAW_NEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
entity x = find(world, ::targetname, target);
|
entity x = find(world, ::targetname, target);
|
||||||
|
@ -104,7 +113,7 @@ float prop_rope::predraw(void)
|
||||||
sc = 0;
|
sc = 0;
|
||||||
pos1 = origin;
|
pos1 = origin;
|
||||||
for (float i = 0; i < segments / 2; i++) {
|
for (float i = 0; i < segments / 2; i++) {
|
||||||
float sag = cos(sc) * m_flSag - 1;
|
float sag = cos(sc) * m_flSag;
|
||||||
|
|
||||||
/* get the direction */
|
/* get the direction */
|
||||||
makevectors(vectoangles(x.origin - origin));
|
makevectors(vectoangles(x.origin - origin));
|
||||||
|
@ -112,7 +121,7 @@ float prop_rope::predraw(void)
|
||||||
/* travel further and sag */
|
/* travel further and sag */
|
||||||
pos2 = pos1 + (v_forward * travel) + (v_up * -sag) + ((v_right * sin(time)) * m_flSwingFactor);
|
pos2 = pos1 + (v_forward * travel) + (v_up * -sag) + ((v_right * sin(time)) * m_flSwingFactor);
|
||||||
|
|
||||||
draw_segment(pos1, pos2);
|
draw_segment(pos1, pos2, 0);
|
||||||
pos1 = pos2;
|
pos1 = pos2;
|
||||||
|
|
||||||
sc += (M_PI * (1 / segments));
|
sc += (M_PI * (1 / segments));
|
||||||
|
@ -121,7 +130,7 @@ float prop_rope::predraw(void)
|
||||||
sc = 0;
|
sc = 0;
|
||||||
pos1 = x.origin;
|
pos1 = x.origin;
|
||||||
for (float i = 0; i < segments / 2; i++) {
|
for (float i = 0; i < segments / 2; i++) {
|
||||||
float sag = cos(sc) * m_flSag - 1;
|
float sag = cos(sc) * m_flSag;
|
||||||
|
|
||||||
/* get the direction */
|
/* get the direction */
|
||||||
makevectors(vectoangles(origin - x.origin));
|
makevectors(vectoangles(origin - x.origin));
|
||||||
|
@ -129,7 +138,7 @@ float prop_rope::predraw(void)
|
||||||
/* travel further and sag */
|
/* travel further and sag */
|
||||||
pos2 = pos1 + (v_forward * travel) + (v_up * -sag) - ((v_right * sin(time)) * m_flSwingFactor);
|
pos2 = pos1 + (v_forward * travel) + (v_up * -sag) - ((v_right * sin(time)) * m_flSwingFactor);
|
||||||
|
|
||||||
draw_segment(pos1, pos2);
|
draw_segment(pos1, pos2, 1);
|
||||||
pos1 = pos2;
|
pos1 = pos2;
|
||||||
|
|
||||||
sc += (M_PI * (1 / segments));
|
sc += (M_PI * (1 / segments));
|
||||||
|
@ -161,6 +170,7 @@ void prop_rope::prop_rope(void)
|
||||||
{
|
{
|
||||||
m_flSwingFactor = random();
|
m_flSwingFactor = random();
|
||||||
m_flSag = 15.0f;
|
m_flSag = 15.0f;
|
||||||
|
m_strShader = "textures/props/wire_default";
|
||||||
drawmask = MASK_ENGINE;
|
drawmask = MASK_ENGINE;
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,14 +17,14 @@
|
||||||
// Submodel materials
|
// Submodel materials
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
MATERIAL_GLASS,
|
GSMATERIAL_GLASS,
|
||||||
MATERIAL_WOOD,
|
GSMATERIAL_WOOD,
|
||||||
MATERIAL_METAL,
|
GSMATERIAL_METAL,
|
||||||
MATERIAL_FLESH,
|
GSMATERIAL_FLESH,
|
||||||
MATERIAL_CINDER,
|
GSMATERIAL_CINDER,
|
||||||
MATERIAL_TILE,
|
GSMATERIAL_TILE,
|
||||||
MATERIAL_COMPUTER,
|
GSMATERIAL_COMPUTER,
|
||||||
MATERIAL_GLASS_UNBREAKABLE,
|
GSMATERIAL_GLASS_UNBREAKABLE,
|
||||||
MATERIAL_ROCK,
|
GSMATERIAL_ROCK,
|
||||||
MATERIAL_NONE
|
GSMATERIAL_NONE
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,6 +4,7 @@ server/defs.h
|
||||||
server/baseentity.cpp
|
server/baseentity.cpp
|
||||||
server/basetrigger.cpp
|
server/basetrigger.cpp
|
||||||
server/basemonster.cpp
|
server/basemonster.cpp
|
||||||
|
server/basephysics.cpp
|
||||||
server/ambient_generic.cpp
|
server/ambient_generic.cpp
|
||||||
server/cycler.cpp
|
server/cycler.cpp
|
||||||
server/cycler_sprite.cpp
|
server/cycler_sprite.cpp
|
||||||
|
|
75
src/gs-entbase/server/basephysics.cpp
Normal file
75
src/gs-entbase/server/basephysics.cpp
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PHYSM_BOX,
|
||||||
|
PHYSM_SPHERE,
|
||||||
|
PHYSM_CAPSULE,
|
||||||
|
PHYSM_TRIMESH,
|
||||||
|
PHYSM_CYLINDER
|
||||||
|
};
|
||||||
|
|
||||||
|
class CBasePhysics:CBaseEntity
|
||||||
|
{
|
||||||
|
int m_iShape;
|
||||||
|
int m_iMaterial;
|
||||||
|
|
||||||
|
void() CBasePhysics;
|
||||||
|
virtual void() Respawn;
|
||||||
|
virtual void() touch;
|
||||||
|
virtual void(entity, int, int) vPain;
|
||||||
|
};
|
||||||
|
|
||||||
|
void CBasePhysics::touch(void)
|
||||||
|
{
|
||||||
|
makevectors(vectoangles(origin - other.origin));
|
||||||
|
physics_addforce(this, v_forward * 128, other.origin);
|
||||||
|
physics_enable(this, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CBasePhysics::vPain(entity eAttacker, int iType, int iDamage)
|
||||||
|
{
|
||||||
|
iDamage *= 5;
|
||||||
|
makevectors(vectoangles(origin - trace_endpos));
|
||||||
|
physics_addforce(this, v_forward * iDamage, trace_endpos);
|
||||||
|
health = 100000;
|
||||||
|
physics_enable(this, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CBasePhysics::Respawn(void)
|
||||||
|
{
|
||||||
|
movetype = MOVETYPE_PHYSICS;
|
||||||
|
solid = SOLID_PHYSICS_BOX + m_iShape; // SOLID_PHYSICS_TRIMESH
|
||||||
|
setmodel(this, m_oldModel);
|
||||||
|
setorigin(this, m_oldOrigin);
|
||||||
|
physics_enable(this, FALSE);
|
||||||
|
takedamage = DAMAGE_YES;
|
||||||
|
health = 100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CBasePhysics::CBasePhysics(void)
|
||||||
|
{
|
||||||
|
CBaseEntity::CBaseEntity();
|
||||||
|
precache_model(m_oldModel);
|
||||||
|
|
||||||
|
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||||
|
switch (argv(i)) {
|
||||||
|
case "physmodel":
|
||||||
|
m_iShape = stoi(argv(i + 1));
|
||||||
|
|
||||||
|
if ( m_iShape > PHYSM_CYLINDER ) {
|
||||||
|
m_iShape = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "material":
|
||||||
|
m_iMaterial = stof(argv(i + 1));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CBasePhysics::Respawn();
|
||||||
|
}
|
||||||
|
|
||||||
|
CLASSEXPORT(prop_physics, CBasePhysics)
|
||||||
|
CLASSEXPORT(prop_physics_multiplayer, CBasePhysics)
|
||||||
|
|
|
@ -42,6 +42,20 @@ enumflags
|
||||||
SF_PRESSURE
|
SF_PRESSURE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
BREAKMT_GLASS,
|
||||||
|
BREAKMT_WOOD,
|
||||||
|
BREAKMT_METAL,
|
||||||
|
BREAKMT_FLESH,
|
||||||
|
BREAKMT_CINDER,
|
||||||
|
BREAKMT_TILE,
|
||||||
|
BREAKMT_COMPUTER,
|
||||||
|
BREAKMT_GLASS_UNBREAKABLE,
|
||||||
|
BREAKMT_ROCK,
|
||||||
|
BREAKMT_NONE
|
||||||
|
};
|
||||||
|
|
||||||
class func_breakable:CBaseTrigger
|
class func_breakable:CBaseTrigger
|
||||||
{
|
{
|
||||||
float m_iMaterial;
|
float m_iMaterial;
|
||||||
|
@ -71,18 +85,18 @@ void func_breakable::vPain (entity attacker, int type, int damage)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_iMaterial) {
|
switch (m_iMaterial) {
|
||||||
case MATERIAL_GLASS:
|
case BREAKMT_GLASS:
|
||||||
case MATERIAL_COMPUTER:
|
case BREAKMT_COMPUTER:
|
||||||
case MATERIAL_GLASS_UNBREAKABLE:
|
case BREAKMT_GLASS_UNBREAKABLE:
|
||||||
sound(self, CHAN_VOICE, sprintf("debris/glass%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
sound(self, CHAN_VOICE, sprintf("debris/glass%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
||||||
break;
|
break;
|
||||||
case MATERIAL_WOOD:
|
case BREAKMT_WOOD:
|
||||||
sound(self, CHAN_VOICE, sprintf("debris/wood%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
sound(self, CHAN_VOICE, sprintf("debris/wood%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
||||||
break;
|
break;
|
||||||
case MATERIAL_METAL:
|
case BREAKMT_METAL:
|
||||||
sound(self, CHAN_VOICE, sprintf("debris/metal%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
sound(self, CHAN_VOICE, sprintf("debris/metal%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
||||||
break;
|
break;
|
||||||
case MATERIAL_FLESH:
|
case BREAKMT_FLESH:
|
||||||
float fRand = floor(random(1, 8));
|
float fRand = floor(random(1, 8));
|
||||||
/* There never was a flesh4.wav */
|
/* There never was a flesh4.wav */
|
||||||
if (fRand == 4) {
|
if (fRand == 4) {
|
||||||
|
@ -90,8 +104,8 @@ void func_breakable::vPain (entity attacker, int type, int damage)
|
||||||
}
|
}
|
||||||
sound(self, CHAN_VOICE, sprintf("debris/flesh%d.wav", fRand), 1.0, ATTN_NORM);
|
sound(self, CHAN_VOICE, sprintf("debris/flesh%d.wav", fRand), 1.0, ATTN_NORM);
|
||||||
break;
|
break;
|
||||||
case MATERIAL_CINDER:
|
case BREAKMT_CINDER:
|
||||||
case MATERIAL_ROCK:
|
case BREAKMT_ROCK:
|
||||||
sound(self, CHAN_VOICE, sprintf("debris/concrete%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
sound(self, CHAN_VOICE, sprintf("debris/concrete%d.wav", random(1, 4)), 1.0, ATTN_NORM);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -113,7 +127,7 @@ void func_breakable::Explode(void)
|
||||||
|
|
||||||
void func_breakable::vDeath (entity attacker, int type, int damage)
|
void func_breakable::vDeath (entity attacker, int type, int damage)
|
||||||
{
|
{
|
||||||
if (m_iMaterial == MATERIAL_GLASS_UNBREAKABLE) {
|
if (m_iMaterial == BREAKMT_GLASS_UNBREAKABLE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
health = 0;
|
health = 0;
|
||||||
|
@ -159,7 +173,7 @@ void func_breakable::PlayerTouch(void)
|
||||||
touch = __NULL__;
|
touch = __NULL__;
|
||||||
Damage_Apply(this, other, fDamage, 0, DMG_CRUSH);
|
Damage_Apply(this, other, fDamage, 0, DMG_CRUSH);
|
||||||
|
|
||||||
if ((m_iMaterial == MATERIAL_GLASS) || (m_iMaterial == MATERIAL_COMPUTER)) {
|
if ((m_iMaterial == BREAKMT_GLASS) || (m_iMaterial == BREAKMT_COMPUTER)) {
|
||||||
Damage_Apply(other, this, fDamage / 4, 0, DMG_CRUSH);
|
Damage_Apply(other, this, fDamage / 4, 0, DMG_CRUSH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ void func_illusionary :: func_illusionary ( void )
|
||||||
movetype = MOVETYPE_PUSH;
|
movetype = MOVETYPE_PUSH;
|
||||||
solid = SOLID_NOT;
|
solid = SOLID_NOT;
|
||||||
setmodel( this, model );
|
setmodel( this, model );
|
||||||
|
setorigin(this, origin);
|
||||||
|
|
||||||
// TODO: Add support for (skin) -1 = Empty, -7 = Volumetric light
|
// TODO: Add support for (skin) -1 = Empty, -7 = Volumetric light
|
||||||
if (skin < 0 ) {
|
if (skin < 0 ) {
|
||||||
|
|
42
src/gs-entbase/server/func_physbox_multiplayer.cpp
Normal file
42
src/gs-entbase/server/func_physbox_multiplayer.cpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
class func_physbox:CBaseEntity
|
||||||
|
{
|
||||||
|
int m_iShape;
|
||||||
|
|
||||||
|
void() func_physbox;
|
||||||
|
virtual void() Respawn;
|
||||||
|
virtual void() touch;
|
||||||
|
};
|
||||||
|
|
||||||
|
void func_physbox::touch(void)
|
||||||
|
{
|
||||||
|
//physics_addforce(this, other.velocity, other.origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_physbox::Respawn(void)
|
||||||
|
{
|
||||||
|
movetype = MOVETYPE_PHYSICS;
|
||||||
|
solid = SOLID_PHYSICS_BOX; // SOLID_PHYSICS_TRIMESH
|
||||||
|
setmodel(this, m_oldModel);
|
||||||
|
setorigin(this, m_oldOrigin);
|
||||||
|
physics_enable(this, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_physbox::func_physbox(void)
|
||||||
|
{
|
||||||
|
CBaseEntity::CBaseEntity();
|
||||||
|
precache_model(m_oldModel);
|
||||||
|
func_physbox::Respawn();
|
||||||
|
|
||||||
|
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||||
|
switch (argv(i)) {
|
||||||
|
case "material":
|
||||||
|
//m_iMaterial = stof(argv(i + 1));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CLASSEXPORT(func_physbox_multiplayer, func_physbox)
|
|
@ -34,6 +34,7 @@ void func_wall :: func_wall ( void )
|
||||||
movetype = MOVETYPE_PUSH;
|
movetype = MOVETYPE_PUSH;
|
||||||
solid = SOLID_BSP;
|
solid = SOLID_BSP;
|
||||||
setmodel( this, model );
|
setmodel( this, model );
|
||||||
|
setorigin(this, origin);
|
||||||
CBaseTrigger::CBaseTrigger();
|
CBaseTrigger::CBaseTrigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,3 +43,5 @@ void func_wall :: Trigger ( void )
|
||||||
frame = 1 - frame;
|
frame = 1 - frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CLASSEXPORT(func_physbox, func_wall)
|
||||||
|
CLASSEXPORT(func_physbox_multiplayer, func_wall)
|
||||||
|
|
|
@ -41,6 +41,7 @@ void func_wall_toggle::func_wall_toggle(void)
|
||||||
solid = SOLID_BSP;
|
solid = SOLID_BSP;
|
||||||
setmodel(this, model);
|
setmodel(this, model);
|
||||||
CBaseTrigger::CBaseTrigger();
|
CBaseTrigger::CBaseTrigger();
|
||||||
|
setorigin(this, origin);
|
||||||
|
|
||||||
if (spawnflags & FTW_STARTHIDDEN) {
|
if (spawnflags & FTW_STARTHIDDEN) {
|
||||||
Trigger();
|
Trigger();
|
||||||
|
|
|
@ -97,7 +97,7 @@ void init(float prevprogs)
|
||||||
|
|
||||||
// Let's load materials.txt because someone thought this was the best idea
|
// Let's load materials.txt because someone thought this was the best idea
|
||||||
filestream fileMaterial = fopen("sound/materials.txt", FILE_READ);
|
filestream fileMaterial = fopen("sound/materials.txt", FILE_READ);
|
||||||
hashMaterials = hash_createtab(512, HASH_ADD);
|
hashMaterials = hash_createtab(2, HASH_ADD);
|
||||||
|
|
||||||
if (fileMaterial >= 0) {
|
if (fileMaterial >= 0) {
|
||||||
while ((sTemp = fgets(fileMaterial))) {
|
while ((sTemp = fgets(fileMaterial))) {
|
||||||
|
|
|
@ -34,7 +34,7 @@ varying mat3 invsurface;
|
||||||
void main ( void )
|
void main ( void )
|
||||||
{
|
{
|
||||||
vec4 diffuse_f = texture2D(s_diffuse, tex_c);
|
vec4 diffuse_f = texture2D(s_diffuse, tex_c);
|
||||||
vec3 light = texture2D(s_lightmap, lm_c).rgb;
|
vec3 light = texture2D(s_lightmap, lm_c).rgb * e_lmscale.rgb;
|
||||||
|
|
||||||
#ifdef REFLECTCUBE
|
#ifdef REFLECTCUBE
|
||||||
#ifdef BUMP
|
#ifdef BUMP
|
||||||
|
@ -54,7 +54,7 @@ varying mat3 invsurface;
|
||||||
#endif
|
#endif
|
||||||
vec3 cube_c;
|
vec3 cube_c;
|
||||||
vec4 out_f = vec4( 1.0, 1.0, 1.0, 1.0 );
|
vec4 out_f = vec4( 1.0, 1.0, 1.0, 1.0 );
|
||||||
diffuse_f.rgb *= light.rgb * e_lmscale.rgb;
|
diffuse_f.rgb *= light.rgb;
|
||||||
|
|
||||||
cube_c = reflect( normalize(-eyevector), normal_f);
|
cube_c = reflect( normalize(-eyevector), normal_f);
|
||||||
cube_c = cube_c.x * invsurface[0] + cube_c.y * invsurface[1] + cube_c.z * invsurface[2];
|
cube_c = cube_c.x * invsurface[0] + cube_c.y * invsurface[1] + cube_c.z * invsurface[2];
|
||||||
|
|
Loading…
Reference in a new issue