mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 19:23:51 +02:00
Initial Prey Game integration support.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user