Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
miami shadows
  • Loading branch information
Fire-Head committed Jul 29, 2020
1 parent 4c65ec2 commit 1803dcc873df329282adab46e1d42baa4b6ee45b
@@ -3958,7 +3958,7 @@ CCam::Process_Debug(const CVector&, float, float, float)
if(CPad::GetPad(1)->GetLeftShockJustDown() && gbBigWhiteDebugLightSwitchedOn)
CShadows::StoreShadowToBeRendered(SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &Source,
12.0f, 0.0f, 0.0f, -12.0f,
128, 128, 128, 128, 1000.0f, false, 1.0f);
128, 128, 128, 128, 1000.0f, false, 1.0f, NULL, false);

if(CHud::m_Wants_To_Draw_Hud){
char str[256];
@@ -4103,7 +4103,7 @@ CCam::Process_Editor(const CVector&, float, float, float)
if(CPad::GetPad(1)->GetLeftShockJustDown() && gbBigWhiteDebugLightSwitchedOn)
CShadows::StoreShadowToBeRendered(SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &Source,
12.0f, 0.0f, 0.0f, -12.0f,
128, 128, 128, 128, 1000.0f, false, 1.0f);
128, 128, 128, 128, 1000.0f, false, 1.0f, NULL, false);

if(CHud::m_Wants_To_Draw_Hud){
char str[256];
@@ -74,6 +74,9 @@ struct CColTrianglePlane

void Set(const CVector *v, CColTriangle &tri);
void GetNormal(CVector &n) const { n = normal; }
float GetNormalX() const { return normal.x; }
float GetNormalY() const { return normal.y; }
float GetNormalZ() const { return normal.z; }
float CalcPoint(const CVector &v) const { return DotProduct(normal, v) - dist; };
};

@@ -444,7 +444,7 @@ CEntity::PreRender(void)
gpShadowExplosionTex, &pos,
8.0f, 0.0f, 0.0f, -8.0f,
255, 200.0f*flicker, 160.0f*flicker, 120.0f*flicker,
20.0f, false, 1.0f);
20.0f, false, 1.0f, NULL, false);
CPointLights::AddLight(CPointLights::LIGHT_POINT,
pos, CVector(0.0f, 0.0f, 0.0f),
8.0f,
@@ -482,7 +482,7 @@ CEntity::PreRender(void)
CTimeCycle::GetShadowStrength(),
CTimeCycle::GetShadowStrength(),
CTimeCycle::GetShadowStrength(),
20.0f, false, 1.0f);
20.0f, false, 1.0f, NULL, false);
}
// fall through
case ENTITY_TYPE_DUMMY:
@@ -29,6 +29,15 @@ class CMatrix
if(m_hasRwMatrix && m_attachment)
RwMatrixDestroy(m_attachment);
}
#ifdef RWCORE_H
operator RwMatrix (void) const {
return m_matrix;
}

operator RwMatrix *(void) {
return &m_matrix;
}
#endif
void Attach(RwMatrix *matrix, bool owner = false){
#ifdef FIX_BUGS
if(m_attachment && m_hasRwMatrix)
@@ -240,6 +249,15 @@ class CMatrix
void CopyOnlyMatrix(CMatrix *other){
m_matrix = other->m_matrix;
}
void CopyRwMatrix(RwMatrix *matrix){
m_matrix = *matrix;
}

void CopyToRwMatrix(RwMatrix *matrix){
*matrix = m_matrix;
RwMatrixUpdate(matrix);
}

void SetUnity(void) {
m_matrix.right.x = 1.0f;
m_matrix.right.y = 0.0f;
@@ -11,7 +11,11 @@
#include "ModelIndices.h"
#include "Shadows.h"
#include "Timecycle.h"
#include "CutsceneShadow.h"
#include "CutsceneObject.h"
#include "ModelIndices.h"
#include "RpAnimBlend.h"


CCutsceneObject::CCutsceneObject(void)
{
@@ -21,6 +25,19 @@ CCutsceneObject::CCutsceneObject(void)
ObjectCreatedBy = CUTSCENE_OBJECT;
m_fMass = 1.0f;
m_fTurnMass = 1.0f;

m_pAttachTo = NULL;
m_pAttachmentObject = NULL;
m_pShadow = NULL;
}

CCutsceneObject::~CCutsceneObject(void)
{
if ( m_pShadow )
{
delete m_pShadow;
m_pShadow = NULL;
}
}

void
@@ -33,22 +50,38 @@ CCutsceneObject::SetModelIndex(uint32 id)
(*RPANIMBLENDCLUMPDATA(m_rwObject))->frames[0].flag |= AnimBlendFrameData::VELOCITY_EXTRACTION_3D;
}

void
CCutsceneObject::CreateShadow(void)
{
if ( IsPedModel(GetModelIndex()) )
{
m_pShadow = new CCutsceneShadow();
if (!m_pShadow->IsInitialized())
m_pShadow->Create(m_rwObject, 6, true, 4, true);
}
}

void
CCutsceneObject::ProcessControl(void)
{
CPhysical::ProcessControl();

if(CTimer::GetTimeStep() < 1/100.0f)
m_vecMoveSpeed *= 100.0f;
if ( m_pAttachTo )
{
if ( m_pAttachmentObject )
GetMatrix() = CMatrix((RwMatrix*)m_pAttachTo);
else
GetMatrix() = CMatrix(RwFrameGetLTM((RwFrame*)m_pAttachTo));
}
else
m_vecMoveSpeed *= 1.0f/CTimer::GetTimeStep();

ApplyMoveSpeed();

#ifdef PED_SKIN
if(IsClumpSkinned(GetClump()))
UpdateRpHAnim();
#endif
{
if(CTimer::GetTimeStep() < 1/100.0f)
m_vecMoveSpeed *= 100.0f;
else
m_vecMoveSpeed *= 1.0f/CTimer::GetTimeStep();

ApplyMoveSpeed();
}
}

static RpMaterial*
@@ -61,14 +94,52 @@ MaterialSetAlpha(RpMaterial *material, void *data)
void
CCutsceneObject::PreRender(void)
{
if(IsPedModel(GetModelIndex())){
CShadows::StoreShadowForPedObject(this,
CTimeCycle::m_fShadowDisplacementX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowDisplacementY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideY[CTimeCycle::m_CurrentStoredValue]);
if ( m_pAttachTo )
{
if ( m_pAttachmentObject )
{
m_pAttachmentObject->UpdateRpHAnim();
GetMatrix() = CMatrix((RwMatrix*)m_pAttachTo);
}
else
GetMatrix() = CMatrix(RwFrameGetLTM((RwFrame*)m_pAttachTo));

if ( RwObjectGetType(m_rwObject) == rpCLUMP && IsClumpSkinned(GetClump()) )
{
RpAtomic *atomic = GetFirstAtomic(GetClump());
atomic->boundingSphere.center = (*RPANIMBLENDCLUMPDATA(GetClump()))->frames[0].hanimFrame->t;
}
}

if ( RwObjectGetType(m_rwObject) == rpCLUMP )
UpdateRpHAnim();

if(IsPedModel(GetModelIndex()))
{
if ( m_pShadow == NULL )
{
CShadows::StoreShadowForPedObject(this,
CTimeCycle::m_fShadowDisplacementX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowDisplacementY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideY[CTimeCycle::m_CurrentStoredValue]);
}
else
{
if ( m_pShadow->IsInitialized() )
m_pShadow->UpdateForCutscene();

CShadows::StoreShadowForCutscenePedObject(this,
CTimeCycle::m_fShadowDisplacementX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowDisplacementY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowFrontY[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideX[CTimeCycle::m_CurrentStoredValue],
CTimeCycle::m_fShadowSideY[CTimeCycle::m_CurrentStoredValue]);
}

// For some reason xbox/android limbs are transparent here...
RpGeometry *geometry = RpAtomicGetGeometry(GetFirstAtomic(GetClump()));
RpGeometrySetFlags(geometry, RpGeometryGetFlags(geometry) | rpGEOMETRYMODULATEMATERIALCOLOR);
@@ -79,7 +150,9 @@ CCutsceneObject::PreRender(void)
void
CCutsceneObject::Render(void)
{
RwRenderStateSet(rwRENDERSTATECULLMODE, (void *)rwCULLMODECULLNONE);
CObject::Render();
RwRenderStateSet(rwRENDERSTATECULLMODE, (void *)rwCULLMODECULLBACK);
}

bool
@@ -93,7 +166,7 @@ CCutsceneObject::SetupLighting(void)
}else{
CVector coors = GetPosition();
float lighting = CPointLights::GenerateLightsAffectingObject(&coors);
if(!bHasBlip && lighting != 1.0f){
if(lighting != 1.0f){
SetAmbientAndDirectionalColours(lighting);
return true;
}
@@ -2,12 +2,20 @@

#include "Object.h"

class CCutsceneShadow;

class CCutsceneObject : public CObject
{
public:
CCutsceneShadow *m_pShadow;
void *m_pAttachTo;
CObject *m_pAttachmentObject;

CCutsceneObject(void);
~CCutsceneObject(void);

void SetModelIndex(uint32 id);
void CreateShadow(void);
void ProcessControl(void);
void PreRender(void);
void Render(void);
@@ -63,6 +63,7 @@
#include "Debug.h"
#include "GameLogic.h"
#include "Bike.h"
#include "CutsceneShadow.h"

#define CAN_SEE_ENTITY_ANGLE_THRESHOLD DEGTORAD(60.0f)

@@ -146,6 +147,9 @@ void CPed::operator delete(void *p, int handle) { CPools::GetPedPool()->Delete((
// --MIAMI: Done
CPed::~CPed(void)
{
#if 1
if ( m_pRTShadow ) delete m_pRTShadow;
#endif
CWorld::Remove(this);
if (m_attractor)
GetPedAttractorManager()->DeRegisterPed(this, m_attractor);
@@ -203,6 +207,9 @@ CPed::FlagToDestroyWhenNextProcessed(void)

CPed::CPed(uint32 pedType) : m_pedIK(this)
{
#if 1
m_pRTShadow = NULL;
#endif
m_type = ENTITY_TYPE_PED;
bPedPhysics = true;
bUseCollisionRecords = true;
@@ -2672,6 +2679,13 @@ CPed::SetModelIndex(uint32 mi)
if (IsClumpSkinned(GetClump())) // condition isn't there in VC
UpdateRpHAnim();
#endif
#if 1
if (!m_pRTShadow)
{
m_pRTShadow = new CCutsceneShadow;
m_pRTShadow->Create(m_rwObject, 10, 1, 1, 1);
}
#endif
}

void
@@ -357,6 +357,9 @@ class CVehicle;
class CPed : public CPhysical
{
public:
#if 1
class CCutsceneShadow *m_pRTShadow;
#endif
// 0x128
CStoredCollPoly m_collPoly;
float m_fCollisionSpeed;

0 comments on commit 1803dcc

Please sign in to comment.