mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-16 08:10:32 +02:00
89 lines
3.9 KiB
C++
89 lines
3.9 KiB
C++
#include "precompiled.h"
|
|
#pragma hdrstop
|
|
|
|
#include "prey_local.h"
|
|
|
|
CLASS_DECLARATION(hhProjectile, hhProjectileGasbagPod)
|
|
EVENT(EV_Collision_Flesh, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Metal, hhProjectileGasbagPod::Event_Collision_Proj)
|
|
EVENT(EV_Collision_AltMetal, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Wood, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Stone, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Glass, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Liquid, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_CardBoard, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Tile, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Forcefield, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Chaff, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Wallwalk, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
EVENT(EV_Collision_Pipe, hhProjectileGasbagPod::Event_Collision_SpawnPod)
|
|
|
|
EVENT(EV_AllowCollision_Flesh, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Metal, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_AltMetal, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Wood, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Stone, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Glass, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Liquid, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_CardBoard, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Tile, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Forcefield, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Pipe, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Wallwalk, hhProjectileGasbagPod::Event_AllowCollision_Collide)
|
|
EVENT(EV_AllowCollision_Spirit, hhProjectileGasbagPod::Event_AllowCollision_PassThru)
|
|
EVENT(EV_AllowCollision_Chaff, hhProjectileGasbagPod::Event_AllowCollision_Collide) //bjk: shield blocks all
|
|
END_CLASS
|
|
|
|
#ifndef ID_DEMO_BUILD //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|
|
void hhProjectileGasbagPod::Spawn(void) {
|
|
BecomeActive(TH_TICKER);
|
|
}
|
|
|
|
void hhProjectileGasbagPod::Ticker(void) {
|
|
renderEntity.shaderParms[SHADERPARM_ANY_DEFORM_PARM2] += .1f;
|
|
if (renderEntity.shaderParms[SHADERPARM_ANY_DEFORM_PARM2] > 1.0f) {
|
|
renderEntity.shaderParms[SHADERPARM_ANY_DEFORM_PARM2] = 1.0f;
|
|
BecomeInactive(TH_TICKER);
|
|
}
|
|
}
|
|
|
|
void hhProjectileGasbagPod::Event_Collision_SpawnPod(const trace_t* collision, const idVec3 &velocity) {
|
|
idVec3 vel = GetPhysics()->GetLinearVelocity();
|
|
idVec3 avel = GetPhysics()->GetAngularVelocity();
|
|
|
|
physicsObj.PutToRest();
|
|
physicsObj.SetContents(0);
|
|
PostEventMS(&EV_Remove, 0);
|
|
|
|
idDict args;
|
|
args.Clear();
|
|
args.Set("origin", (GetPhysics()->GetOrigin()).ToString());
|
|
args.Set("axis", (GetPhysics()->GetAxis()).ToString());
|
|
args.Set("nodrop", "1");
|
|
|
|
idEntity *ent = gameLocal.SpawnObject("object_pod", &args);
|
|
|
|
if (ent) {
|
|
ent->GetPhysics()->SetLinearVelocity(vel);
|
|
ent->GetPhysics()->SetAngularVelocity(avel);
|
|
|
|
if (owner.IsValid()) {
|
|
owner->PostEventMS(&EV_NewPod, 0, ent);
|
|
}
|
|
}
|
|
|
|
idThread::ReturnInt(1);
|
|
}
|
|
|
|
void hhProjectileGasbagPod::Event_Collision_Proj(const trace_t* collision, const idVec3 &velocity) {
|
|
idEntity *ent = gameLocal.entities[collision->c.entityNum];
|
|
if (ent && ent->IsType(idProjectile::Type)) {
|
|
Explode(collision, velocity, 0);
|
|
} else {
|
|
Event_Collision_SpawnPod(collision, velocity);
|
|
}
|
|
|
|
idThread::ReturnInt(0);
|
|
}
|
|
|
|
#endif //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|