mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 07:20:02 +00:00
Reorder CEntity functions into their original order
This commit is contained in:
parent
06df781bca
commit
b9e97ab79d
|
@ -21,6 +21,83 @@ CReferences::Init(void)
|
|||
aRefs[NUMREFERENCES-1].next = nil;
|
||||
}
|
||||
|
||||
void
|
||||
CEntity::RegisterReference(CEntity **pent)
|
||||
{
|
||||
if(IsBuilding())
|
||||
return;
|
||||
CReference *ref;
|
||||
// check if already registered
|
||||
for(ref = m_pFirstReference; ref; ref = ref->next)
|
||||
if(ref->pentity == pent)
|
||||
return;
|
||||
// have to allocate new reference
|
||||
ref = CReferences::pEmptyList;
|
||||
if(ref){
|
||||
CReferences::pEmptyList = ref->next;
|
||||
|
||||
ref->pentity = pent;
|
||||
ref->next = m_pFirstReference;
|
||||
m_pFirstReference = ref;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Clean up the reference from *pent -> 'this'
|
||||
void
|
||||
CEntity::CleanUpOldReference(CEntity **pent)
|
||||
{
|
||||
CReference* ref, ** lastnextp;
|
||||
lastnextp = &m_pFirstReference;
|
||||
for (ref = m_pFirstReference; ref; ref = ref->next) {
|
||||
if (ref->pentity == pent) {
|
||||
*lastnextp = ref->next;
|
||||
ref->next = CReferences::pEmptyList;
|
||||
CReferences::pEmptyList = ref;
|
||||
break;
|
||||
}
|
||||
lastnextp = &ref->next;
|
||||
}
|
||||
}
|
||||
|
||||
// Clear all references to this entity
|
||||
void
|
||||
CEntity::ResolveReferences(void)
|
||||
{
|
||||
CReference *ref;
|
||||
// clear pointers to this entity
|
||||
for(ref = m_pFirstReference; ref; ref = ref->next)
|
||||
if(*ref->pentity == this)
|
||||
*ref->pentity = nil;
|
||||
// free list
|
||||
if(m_pFirstReference){
|
||||
for(ref = m_pFirstReference; ref->next; ref = ref->next)
|
||||
;
|
||||
ref->next = CReferences::pEmptyList;
|
||||
CReferences::pEmptyList = m_pFirstReference;
|
||||
m_pFirstReference = nil;
|
||||
}
|
||||
}
|
||||
|
||||
// Free all references that no longer point to this entity
|
||||
void
|
||||
CEntity::PruneReferences(void)
|
||||
{
|
||||
CReference *ref, *next, **lastnextp;
|
||||
lastnextp = &m_pFirstReference;
|
||||
for(ref = m_pFirstReference; ref; ref = next){
|
||||
next = ref->next;
|
||||
if(*ref->pentity == this)
|
||||
lastnextp = &ref->next;
|
||||
else{
|
||||
*lastnextp = ref->next;
|
||||
ref->next = CReferences::pEmptyList;
|
||||
CReferences::pEmptyList = ref;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CReferences::RemoveReferencesToPlayer(void)
|
||||
{
|
||||
|
|
|
@ -1643,14 +1643,24 @@ CWorld::ExtinguishAllCarFiresInArea(CVector point, float range)
|
|||
}
|
||||
}
|
||||
|
||||
inline void
|
||||
AddSteamsFromGround(CPtrList& list)
|
||||
{
|
||||
CPtrNode* pNode = list.first;
|
||||
while (pNode) {
|
||||
((CEntity*)pNode->item)->AddSteamsFromGround(nil);
|
||||
pNode = pNode->next;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CWorld::AddParticles(void)
|
||||
{
|
||||
for(int32 y = 0; y < NUMSECTORS_Y; y++) {
|
||||
for(int32 x = 0; x < NUMSECTORS_X; x++) {
|
||||
CSector *pSector = GetSector(x, y);
|
||||
CEntity::AddSteamsFromGround(pSector->m_lists[ENTITYLIST_BUILDINGS]);
|
||||
CEntity::AddSteamsFromGround(pSector->m_lists[ENTITYLIST_DUMMIES]);
|
||||
AddSteamsFromGround(pSector->m_lists[ENTITYLIST_BUILDINGS]);
|
||||
AddSteamsFromGround(pSector->m_lists[ENTITYLIST_DUMMIES]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -130,7 +130,7 @@ public:
|
|||
virtual void PreRender(void);
|
||||
virtual void Render(void);
|
||||
virtual bool SetupLighting(void);
|
||||
virtual void RemoveLighting(bool) {}
|
||||
virtual void RemoveLighting(bool);
|
||||
virtual void FlagToDestroyWhenNextProcessed(void) {}
|
||||
|
||||
bool IsBuilding(void) { return m_type == ENTITY_TYPE_BUILDING; }
|
||||
|
@ -149,14 +149,14 @@ public:
|
|||
}
|
||||
|
||||
void GetBoundCentre(CVector &out);
|
||||
CVector GetBoundCentre(void) { CVector v; GetBoundCentre(v); return v; }
|
||||
float GetBoundRadius(void) { return CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.radius; }
|
||||
float GetDistanceFromCentreOfMassToBaseOfModel(void) { return -CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingBox.min.z; }
|
||||
CVector GetBoundCentre(void);
|
||||
float GetBoundRadius(void);
|
||||
float GetDistanceFromCentreOfMassToBaseOfModel(void);
|
||||
bool GetIsTouching(CVector const ¢er, float r);
|
||||
bool GetIsOnScreen(void);
|
||||
bool GetIsOnScreenComplex(void);
|
||||
bool IsVisible(void) { return m_rwObject && bIsVisible && GetIsOnScreen(); }
|
||||
bool IsVisibleComplex(void) { return m_rwObject && bIsVisible && GetIsOnScreenComplex(); }
|
||||
bool IsVisible(void);
|
||||
bool IsVisibleComplex(void);
|
||||
bool IsEntityOccluded(void);
|
||||
int16 GetModelIndex(void) const { return m_modelIndex; }
|
||||
void UpdateRwFrame(void);
|
||||
|
@ -179,8 +179,6 @@ public:
|
|||
void ModifyMatrixForBannerInWind(void);
|
||||
void ProcessLightsForEntity(void);
|
||||
void SetRwObjectAlpha(int32 alpha);
|
||||
|
||||
static void AddSteamsFromGround(CPtrList& list);
|
||||
};
|
||||
|
||||
bool IsEntityPointerValid(CEntity*);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "main.h"
|
||||
#include "General.h"
|
||||
#include "Entity.h"
|
||||
#include "RenderBuffer.h"
|
||||
#include "TxdStore.h"
|
||||
#include "Camera.h"
|
||||
|
@ -12,6 +13,10 @@
|
|||
#include "Collision.h"
|
||||
#include "Timecycle.h"
|
||||
#include "Coronas.h"
|
||||
#include "PointLights.h"
|
||||
#include "Shadows.h"
|
||||
#include "Clock.h"
|
||||
#include "Bridge.h"
|
||||
|
||||
//--MIAMI: file done
|
||||
|
||||
|
@ -715,3 +720,234 @@ CRegisteredCorona::Update(void)
|
|||
firstUpdate = false;
|
||||
registeredThisFrame = false;
|
||||
}
|
||||
|
||||
void
|
||||
CEntity::ProcessLightsForEntity(void)
|
||||
{
|
||||
int i, n;
|
||||
C2dEffect *effect;
|
||||
CVector pos;
|
||||
bool lightOn, lightFlickering;
|
||||
uint32 flashTimer1, flashTimer2, flashTimer3;
|
||||
|
||||
if(bRenderDamaged || !bIsVisible || GetUp().z < 0.96f)
|
||||
return;
|
||||
|
||||
flashTimer1 = 0;
|
||||
flashTimer2 = 0;
|
||||
flashTimer3 = 0;
|
||||
|
||||
n = CModelInfo::GetModelInfo(GetModelIndex())->GetNum2dEffects();
|
||||
for(i = 0; i < n; i++, flashTimer1 += 0x80, flashTimer2 += 0x100, flashTimer3 += 0x200){
|
||||
effect = CModelInfo::GetModelInfo(GetModelIndex())->Get2dEffect(i);
|
||||
|
||||
switch(effect->type){
|
||||
case EFFECT_LIGHT:
|
||||
pos = GetMatrix() * effect->pos;
|
||||
|
||||
lightOn = false;
|
||||
lightFlickering = false;
|
||||
switch(effect->light.lightType){
|
||||
case LIGHT_ON:
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_ON_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLICKER:
|
||||
if((CTimer::GetTimeInMilliseconds() ^ m_randomSeed) & 0x60)
|
||||
lightOn = true;
|
||||
else
|
||||
lightFlickering = true;
|
||||
if((CTimer::GetTimeInMilliseconds()>>11 ^ m_randomSeed) & 3)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLICKER_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7 || CWeather::WetRoads > 0.5f){
|
||||
if((CTimer::GetTimeInMilliseconds() ^ m_randomSeed) & 0x60)
|
||||
lightOn = true;
|
||||
else
|
||||
lightFlickering = true;
|
||||
if((CTimer::GetTimeInMilliseconds()>>11 ^ m_randomSeed) & 3)
|
||||
lightOn = true;
|
||||
}
|
||||
break;
|
||||
case LIGHT_FLASH1:
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer1) & 0x200)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLASH1_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7)
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer1) & 0x200)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLASH2:
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer2) & 0x400)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLASH2_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7)
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer2) & 0x400)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLASH3:
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer3) & 0x800)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_FLASH3_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7)
|
||||
if((CTimer::GetTimeInMilliseconds() + flashTimer3) & 0x800)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_RANDOM_FLICKER:
|
||||
if(m_randomSeed > 16)
|
||||
lightOn = true;
|
||||
else{
|
||||
if((CTimer::GetTimeInMilliseconds() ^ m_randomSeed*8) & 0x60)
|
||||
lightOn = true;
|
||||
else
|
||||
lightFlickering = true;
|
||||
if((CTimer::GetTimeInMilliseconds()>>11 ^ m_randomSeed*8) & 3)
|
||||
lightOn = true;
|
||||
}
|
||||
break;
|
||||
case LIGHT_RANDOM_FLICKER_NIGHT:
|
||||
if(CClock::GetHours() > 18 || CClock::GetHours() < 7){
|
||||
if(m_randomSeed > 16)
|
||||
lightOn = true;
|
||||
else{
|
||||
if((CTimer::GetTimeInMilliseconds() ^ m_randomSeed*8) & 0x60)
|
||||
lightOn = true;
|
||||
else
|
||||
lightFlickering = true;
|
||||
if((CTimer::GetTimeInMilliseconds()>>11 ^ m_randomSeed*8) & 3)
|
||||
lightOn = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LIGHT_BRIDGE_FLASH1:
|
||||
if(CBridge::ShouldLightsBeFlashing() && CTimer::GetTimeInMilliseconds() & 0x200)
|
||||
lightOn = true;
|
||||
break;
|
||||
case LIGHT_BRIDGE_FLASH2:
|
||||
if(CBridge::ShouldLightsBeFlashing() && (CTimer::GetTimeInMilliseconds() & 0x1FF) < 60)
|
||||
lightOn = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if(effect->light.flags & LIGHTFLAG_HIDE_OBJECT){
|
||||
if(lightOn)
|
||||
bDoNotRender = false;
|
||||
else
|
||||
bDoNotRender = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Corona
|
||||
if(lightOn)
|
||||
CCoronas::RegisterCorona((uintptr)this + i,
|
||||
effect->col.r, effect->col.g, effect->col.b, 255,
|
||||
pos, effect->light.size, effect->light.dist,
|
||||
effect->light.corona, effect->light.flareType, effect->light.roadReflection,
|
||||
effect->light.flags&LIGHTFLAG_LOSCHECK, CCoronas::STREAK_OFF, 0.0f,
|
||||
!!(effect->light.flags&LIGHTFLAG_LONG_DIST));
|
||||
else if(lightFlickering)
|
||||
CCoronas::RegisterCorona((uintptr)this + i,
|
||||
0, 0, 0, 255,
|
||||
pos, effect->light.size, effect->light.dist,
|
||||
effect->light.corona, effect->light.flareType, effect->light.roadReflection,
|
||||
effect->light.flags&LIGHTFLAG_LOSCHECK, CCoronas::STREAK_OFF, 0.0f,
|
||||
!!(effect->light.flags&LIGHTFLAG_LONG_DIST));
|
||||
|
||||
// Pointlight
|
||||
bool alreadyProcessedFog;
|
||||
alreadyProcessedFog = false;
|
||||
if(effect->light.range != 0.0f && lightOn){
|
||||
if(effect->col.r == 0 && effect->col.g == 0 && effect->col.b == 0){
|
||||
CPointLights::AddLight(CPointLights::LIGHT_POINT,
|
||||
pos, CVector(0.0f, 0.0f, 0.0f),
|
||||
effect->light.range,
|
||||
0.0f, 0.0f, 0.0f,
|
||||
CPointLights::FOG_NONE, true);
|
||||
}else{
|
||||
CPointLights::AddLight(CPointLights::LIGHT_POINT,
|
||||
pos, CVector(0.0f, 0.0f, 0.0f),
|
||||
effect->light.range,
|
||||
effect->col.r*CTimeCycle::GetSpriteBrightness()/255.0f,
|
||||
effect->col.g*CTimeCycle::GetSpriteBrightness()/255.0f,
|
||||
effect->col.b*CTimeCycle::GetSpriteBrightness()/255.0f,
|
||||
(effect->light.flags & LIGHTFLAG_FOG) >> 1,
|
||||
true);
|
||||
alreadyProcessedFog = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!alreadyProcessedFog){
|
||||
if(effect->light.flags & LIGHTFLAG_FOG_ALWAYS){
|
||||
CPointLights::AddLight(CPointLights::LIGHT_FOGONLY_ALWAYS,
|
||||
pos, CVector(0.0f, 0.0f, 0.0f),
|
||||
0.0f,
|
||||
effect->col.r/255.0f, effect->col.g/255.0f, effect->col.b/255.0f,
|
||||
CPointLights::FOG_ALWAYS, true);
|
||||
}else if(effect->light.flags & LIGHTFLAG_FOG_NORMAL && lightOn && effect->light.range == 0.0f){
|
||||
CPointLights::AddLight(CPointLights::LIGHT_FOGONLY,
|
||||
pos, CVector(0.0f, 0.0f, 0.0f),
|
||||
0.0f,
|
||||
effect->col.r/255.0f, effect->col.g/255.0f, effect->col.b/255.0f,
|
||||
CPointLights::FOG_NORMAL, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Light shadow
|
||||
if(effect->light.shadowSize != 0.0f){
|
||||
if(lightOn){
|
||||
CShadows::StoreStaticShadow((uintptr)this + i, SHADOWTYPE_ADDITIVE,
|
||||
effect->light.shadow, &pos,
|
||||
effect->light.shadowSize, 0.0f,
|
||||
0.0f, -effect->light.shadowSize,
|
||||
128,
|
||||
effect->col.r*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
|
||||
effect->col.g*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
|
||||
effect->col.b*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
|
||||
15.0f, 1.0f, 40.0f, false, 0.0f);
|
||||
}else if(lightFlickering){
|
||||
CShadows::StoreStaticShadow((uintptr)this + i, SHADOWTYPE_ADDITIVE,
|
||||
effect->light.shadow, &pos,
|
||||
effect->light.shadowSize, 0.0f,
|
||||
0.0f, -effect->light.shadowSize,
|
||||
0, 0.0f, 0.0f, 0.0f,
|
||||
15.0f, 1.0f, 40.0f, false, 0.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case EFFECT_SUNGLARE:
|
||||
if(CWeather::SunGlare >= 0.0f){
|
||||
CVector pos = GetMatrix() * effect->pos;
|
||||
CVector glareDir = pos - GetPosition();
|
||||
glareDir.Normalise();
|
||||
CVector camDir = TheCamera.GetPosition() - pos;
|
||||
float dist = camDir.Magnitude();
|
||||
camDir *= 2.0f/dist;
|
||||
glareDir += camDir;
|
||||
glareDir.Normalise();
|
||||
float camAngle = -DotProduct(glareDir, CTimeCycle::GetSunDirection());
|
||||
if(camAngle > 0.0f){
|
||||
float intens = Sqrt(camAngle) * CWeather::SunGlare;
|
||||
pos += camDir;
|
||||
CCoronas::RegisterCorona((uintptr)this + 33 + i,
|
||||
intens * (CTimeCycle::GetSunCoreRed() + 2*255)/3.0f,
|
||||
intens * (CTimeCycle::GetSunCoreGreen() + 2*255)/3.0f,
|
||||
intens * (CTimeCycle::GetSunCoreBlue() + 2*255)/3.0f,
|
||||
255,
|
||||
pos, 0.5f*CWeather::SunGlare*Sqrt(dist), 120.0f,
|
||||
CCoronas::TYPE_STAR, CCoronas::FLARE_NONE,
|
||||
CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF,
|
||||
CCoronas::STREAK_OFF, 0.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
#include "common.h"
|
||||
|
||||
#include "main.h"
|
||||
#include "Entity.h"
|
||||
#include "Occlusion.h"
|
||||
#include "Game.h"
|
||||
#include "Camera.h"
|
||||
|
@ -493,3 +494,36 @@ void COcclusion::Render() {
|
|||
DefinedState();
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CEntity::IsEntityOccluded(void) {
|
||||
|
||||
CVector coors;
|
||||
float width, height;
|
||||
|
||||
if (COcclusion::NumActiveOccluders == 0 || !CalcScreenCoors(GetBoundCentre(), &coors, &width, &height))
|
||||
return false;
|
||||
|
||||
float area = Max(width, height) * GetBoundRadius() * 0.9f;
|
||||
|
||||
for (int i = 0; i < COcclusion::NumActiveOccluders; i++) {
|
||||
if (coors.z - (GetBoundRadius() * 0.85f) > COcclusion::aActiveOccluders[i].radius) {
|
||||
if (COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, area)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) {
|
||||
CVector min = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.min;
|
||||
CVector max = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.max;
|
||||
|
||||
if (CalcScreenCoors(min, &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
|
||||
if (CalcScreenCoors(CVector(max.x, max.y, min.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
|
||||
if (CalcScreenCoors(CVector(max.x, min.y, max.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
|
||||
if (CalcScreenCoors(CVector(min.x, max.y, max.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
|
@ -2472,3 +2472,43 @@ void CParticle::HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos)
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CEntity::AddSteamsFromGround(CVector *unused)
|
||||
{
|
||||
int i, n;
|
||||
C2dEffect *effect;
|
||||
CVector pos;
|
||||
|
||||
n = CModelInfo::GetModelInfo(GetModelIndex())->GetNum2dEffects();
|
||||
for(i = 0; i < n; i++){
|
||||
effect = CModelInfo::GetModelInfo(GetModelIndex())->Get2dEffect(i);
|
||||
if(effect->type != EFFECT_PARTICLE)
|
||||
continue;
|
||||
|
||||
pos = GetMatrix() * effect->pos;
|
||||
switch(effect->particle.particleType){
|
||||
case 0:
|
||||
CParticleObject::AddObject(POBJECT_PAVEMENT_STEAM, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
case 1:
|
||||
CParticleObject::AddObject(POBJECT_WALL_STEAM, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
case 2:
|
||||
CParticleObject::AddObject(POBJECT_DRY_ICE, pos, effect->particle.scale, false);
|
||||
break;
|
||||
case 3:
|
||||
CParticleObject::AddObject(POBJECT_SMALL_FIRE, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
case 4:
|
||||
CParticleObject::AddObject(POBJECT_DARK_SMOKE, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
case 5:
|
||||
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_VERT, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
case 6:
|
||||
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_HORIZ, pos, effect->particle.dir, effect->particle.scale, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1497,6 +1497,17 @@ CRenderer::RequestObjectsInFrustum(void)
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
CEntity::SetupLighting(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
CEntity::RemoveLighting(bool)
|
||||
{
|
||||
}
|
||||
|
||||
// --MIAMI: Done
|
||||
bool
|
||||
CPed::SetupLighting(void)
|
||||
|
|
|
@ -289,26 +289,6 @@ HAnimAnimationCreateForHierarchy(RpHAnimHierarchy *hier)
|
|||
return anim;
|
||||
}
|
||||
|
||||
RpAtomic*
|
||||
AtomicRemoveAnimFromSkinCB(RpAtomic *atomic, void *data)
|
||||
{
|
||||
if(RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic))){
|
||||
RpHAnimHierarchy *hier = RpSkinAtomicGetHAnimHierarchy(atomic);
|
||||
#ifdef LIBRW
|
||||
if(hier && hier->interpolator->currentAnim){
|
||||
RpHAnimAnimationDestroy(hier->interpolator->currentAnim);
|
||||
hier->interpolator->currentAnim = nil;
|
||||
}
|
||||
#else
|
||||
if(hier && hier->currentAnim){
|
||||
RpHAnimAnimationDestroy(hier->currentAnim->pCurrentAnim);
|
||||
hier->currentAnim = nil;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return atomic;
|
||||
}
|
||||
|
||||
void
|
||||
RenderSkeleton(RpHAnimHierarchy *hier)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue