mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-14 04:34:08 +00:00
commit
52e77c6634
267 changed files with 23832 additions and 29992 deletions
|
@ -108,7 +108,7 @@ DefinedState(void)
|
|||
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
|
||||
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
|
||||
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
|
||||
RwRenderStateSet(rwRENDERSTATEALPHAPRIMITIVEBUFFER, (void*)FALSE);
|
||||
//RwRenderStateSet(rwRENDERSTATEALPHAPRIMITIVEBUFFER, (void*)FALSE);
|
||||
RwRenderStateSet(rwRENDERSTATEBORDERCOLOR, (void*)RWRGBALONG(0, 0, 0, 255));
|
||||
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
|
||||
RwRenderStateSet(rwRENDERSTATEFOGCOLOR,
|
||||
|
@ -212,7 +212,7 @@ isSkinnedCb(RpAtomic *atomic, void *data)
|
|||
RpAtomic **pAtomic = (RpAtomic**)data;
|
||||
if(*pAtomic)
|
||||
return nil; // already found one
|
||||
if(RpSkinGeometryGetSkin(atomic->geometry))
|
||||
if(RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic)))
|
||||
*pAtomic = atomic; // we could just return nil here directly...
|
||||
return atomic;
|
||||
}
|
||||
|
@ -358,9 +358,9 @@ AtomicRemoveAnimFromSkinCB(RpAtomic *atomic, void *data)
|
|||
hier->interpolator->currentAnim = nil;
|
||||
}
|
||||
#else
|
||||
if(hier && hier->pCurrentAnim){
|
||||
RpHAnimAnimationDestroy(hier->pCurrentAnim);
|
||||
hier->pCurrentAnim = nil;
|
||||
if(hier && hier->currentAnim){
|
||||
RpHAnimAnimationDestroy(hier->currentAnim->pCurrentAnim);
|
||||
hier->currentAnim = nil;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -740,3 +740,70 @@ CameraCreate(RwInt32 width, RwInt32 height, RwBool zBuffer)
|
|||
WRAPPER void _TexturePoolsInitialise() { EAXJMP(0x598B10); }
|
||||
WRAPPER void _TexturePoolsShutdown() { EAXJMP(0x598B30); }
|
||||
#endif
|
||||
|
||||
#ifdef LIBRW
|
||||
#include <rpmatfx.h>
|
||||
#include "VehicleModelInfo.h"
|
||||
|
||||
int32
|
||||
findPlatform(rw::Atomic *a)
|
||||
{
|
||||
rw::Geometry *g = a->geometry;
|
||||
if(g->instData)
|
||||
return g->instData->platform;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Game doesn't read atomic extensions so we never get any other than the default pipe,
|
||||
// but we need it for uninstancing
|
||||
void
|
||||
attachPipe(rw::Atomic *atomic)
|
||||
{
|
||||
if(RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic)))
|
||||
atomic->pipeline = rw::skinGlobals.pipelines[rw::platform];
|
||||
else{
|
||||
int fx = rpMATFXEFFECTNULL;
|
||||
RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), CVehicleModelInfo::GetMatFXEffectMaterialCB, &fx);
|
||||
if(fx != rpMATFXEFFECTNULL)
|
||||
RpMatFXAtomicEnableEffects(atomic);
|
||||
}
|
||||
}
|
||||
|
||||
// Attach pipes for the platform we have native data for so we can uninstance
|
||||
void
|
||||
switchPipes(rw::Atomic *a, int32 platform)
|
||||
{
|
||||
if(a->pipeline && a->pipeline->platform != platform){
|
||||
uint32 plgid = a->pipeline->pluginID;
|
||||
switch(plgid){
|
||||
// assume default pipe won't be attached explicitly
|
||||
case rw::ID_SKIN:
|
||||
a->pipeline = rw::skinGlobals.pipelines[platform];
|
||||
break;
|
||||
case rw::ID_MATFX:
|
||||
a->pipeline = rw::matFXGlobals.pipelines[platform];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RpAtomic*
|
||||
ConvertPlatformAtomic(RpAtomic *atomic, void *data)
|
||||
{
|
||||
int32 driver = rw::platform;
|
||||
int32 platform = findPlatform(atomic);
|
||||
if(platform != 0 && platform != driver){
|
||||
attachPipe(atomic); // kludge
|
||||
rw::ObjPipeline *origPipe = atomic->pipeline;
|
||||
rw::platform = platform;
|
||||
switchPipes(atomic, rw::platform);
|
||||
if(atomic->geometry->flags & rw::Geometry::NATIVE)
|
||||
atomic->uninstance();
|
||||
// no ADC in this game
|
||||
//rw::ps2::unconvertADC(atomic->geometry);
|
||||
rw::platform = driver;
|
||||
atomic->pipeline = origPipe;
|
||||
}
|
||||
return atomic;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue