mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-15 19:08:58 +00:00
made NPC heli rotors rotate
This commit is contained in:
parent
5bedca7692
commit
0fba76a565
3 changed files with 52 additions and 1 deletions
|
@ -273,7 +273,7 @@ enum Config {
|
|||
|
||||
// Vehicles
|
||||
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
|
||||
//#define REMOVE_TREADABLE_PATHFIND
|
||||
#define CPLANE_ROTORS // make the rotors of the NPC police heli rotate
|
||||
|
||||
// Pickups
|
||||
//#define MONEY_MESSAGES
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "Fluff.h"
|
||||
#include "World.h"
|
||||
#include "HandlingMgr.h"
|
||||
#include "Heli.h"
|
||||
#include "Plane.h"
|
||||
|
||||
//--MIAMI: file done
|
||||
|
@ -88,6 +89,9 @@ CPlane::CPlane(int32 id, uint8 CreatedBy)
|
|||
m_level = LEVEL_GENERIC;
|
||||
|
||||
m_isFarAway = false;
|
||||
#ifdef CPLANE_ROTORS
|
||||
m_fRotorRotation = 0.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
CPlane::~CPlane()
|
||||
|
@ -99,6 +103,21 @@ void
|
|||
CPlane::SetModelIndex(uint32 id)
|
||||
{
|
||||
CVehicle::SetModelIndex(id);
|
||||
#ifdef CPLANE_ROTORS
|
||||
int i;
|
||||
for(i = 0; i < NUM_PLANE_NODES; i++)
|
||||
m_aPlaneNodes[i] = nil;
|
||||
if(GetModelIndex() == MI_CHOPPER){
|
||||
// This is surprisingly annoying...
|
||||
RwFrame *heliNodes[NUM_HELI_NODES];
|
||||
for(i = 0; i < NUM_HELI_NODES; i++)
|
||||
heliNodes[i] = nil;
|
||||
CClumpModelInfo::FillFrameArray(GetClump(), heliNodes);
|
||||
m_aPlaneNodes[PLANE_TOPROTOR] = heliNodes[HELI_TOPROTOR];
|
||||
m_aPlaneNodes[PLANE_BACKROTOR] = heliNodes[HELI_BACKROTOR];
|
||||
}else
|
||||
CClumpModelInfo::FillFrameArray(GetClump(), m_aPlaneNodes);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -629,6 +648,29 @@ CPlane::PreRender(void)
|
|||
CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
|
||||
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
|
||||
}
|
||||
|
||||
#ifdef CPLANE_ROTORS
|
||||
CMatrix mat;
|
||||
CVector pos;
|
||||
m_fRotorRotation += 3.14f/6.5f;
|
||||
if(m_fRotorRotation > 6.28f)
|
||||
m_fRotorRotation -= 6.28f;
|
||||
|
||||
if(m_aPlaneNodes[PLANE_TOPROTOR]){
|
||||
mat.Attach(RwFrameGetMatrix(m_aPlaneNodes[PLANE_TOPROTOR]));
|
||||
pos = mat.GetPosition();
|
||||
mat.SetRotateZ(m_fRotorRotation);
|
||||
mat.Translate(pos);
|
||||
mat.UpdateRW();
|
||||
}
|
||||
if(m_aPlaneNodes[PLANE_BACKROTOR]){
|
||||
mat.Attach(RwFrameGetMatrix(m_aPlaneNodes[PLANE_BACKROTOR]));
|
||||
pos = mat.GetPosition();
|
||||
mat.SetRotateX(m_fRotorRotation);
|
||||
mat.Translate(pos);
|
||||
mat.UpdateRW();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
|
||||
enum ePlaneNodes
|
||||
{
|
||||
#ifdef CPLANE_ROTORS
|
||||
// for heli
|
||||
PLANE_TOPROTOR,
|
||||
PLANE_BACKROTOR,
|
||||
#endif
|
||||
PLANE_WHEEL_FRONT = 2,
|
||||
PLANE_WHEEL_READ,
|
||||
NUM_PLANE_NODES
|
||||
|
@ -29,6 +34,10 @@ struct CPlaneInterpolationLine
|
|||
class CPlane : public CVehicle
|
||||
{
|
||||
public:
|
||||
#ifdef CPLANE_ROTORS
|
||||
RwFrame *m_aPlaneNodes[NUM_PLANE_NODES];
|
||||
float m_fRotorRotation;
|
||||
#endif
|
||||
int16 m_nPlaneId;
|
||||
int16 m_isFarAway;
|
||||
int16 m_nCurPathNode;
|
||||
|
|
Loading…
Reference in a new issue