mirror of
https://github.com/halpz/re3.git
synced 2025-07-17 09:28:16 +00:00
rw stuff done & other small things
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
#include "common.h"
|
||||
|
||||
//--MIAMI: done
|
||||
|
||||
struct rpGeometryList
|
||||
{
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include "Frontend.h"
|
||||
#include "MBlur.h"
|
||||
|
||||
//--MIAMI: done
|
||||
|
||||
RpLight *pAmbient;
|
||||
RpLight *pDirect;
|
||||
RpLight *pExtraDirectionals[4] = { nil };
|
||||
@ -30,7 +32,6 @@ RwRGBAReal DirectionalLightColour;
|
||||
#define USEBLURCOLORS CMBlur::BlurOn
|
||||
#endif
|
||||
|
||||
//--MIAMI: done
|
||||
void
|
||||
SetLightsWithTimeOfDayColour(RpWorld *)
|
||||
{
|
||||
@ -309,6 +310,14 @@ ActivateDirectional(void)
|
||||
RpLightSetFlags(pDirect, rpLIGHTLIGHTATOMICS);
|
||||
}
|
||||
|
||||
RwRGBAReal FullLight = { 1.0f, 1.0f, 1.0f, 1.0f };
|
||||
|
||||
void
|
||||
SetFullAmbient(void)
|
||||
{
|
||||
RpLightSetColor(pAmbient, &FullLight);
|
||||
}
|
||||
|
||||
void
|
||||
SetAmbientColours(void)
|
||||
{
|
||||
|
@ -50,8 +50,8 @@ NodeNameStreamWrite(RwStream *stream, RwInt32 binaryLength, const void *object,
|
||||
RwInt32
|
||||
NodeNameStreamGetSize(const void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
|
||||
{
|
||||
// game checks for null pointer on node name extension but that really happen
|
||||
return (RwInt32)rwstrlen(NODENAMEEXT(object));
|
||||
char *name = NODENAMEEXT(object); // can't be nil
|
||||
return name ? (RwInt32)rwstrlen(name) : 0;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -209,24 +209,11 @@ GetFirstTexture(RwTexDictionary *txd)
|
||||
return tex;
|
||||
}
|
||||
|
||||
#ifdef PED_SKIN
|
||||
static RpAtomic*
|
||||
isSkinnedCb(RpAtomic *atomic, void *data)
|
||||
{
|
||||
RpAtomic **pAtomic = (RpAtomic**)data;
|
||||
if(*pAtomic)
|
||||
return nil; // already found one
|
||||
if(RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic)))
|
||||
*pAtomic = atomic; // we could just return nil here directly...
|
||||
return atomic;
|
||||
}
|
||||
|
||||
RpAtomic*
|
||||
bool
|
||||
IsClumpSkinned(RpClump *clump)
|
||||
{
|
||||
RpAtomic *atomic = nil;
|
||||
RpClumpForAllAtomics(clump, isSkinnedCb, &atomic);
|
||||
return atomic;
|
||||
RpAtomic *atomic = GetFirstAtomic(clump);
|
||||
return atomic ? RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic)) : nil;
|
||||
}
|
||||
|
||||
static RpAtomic*
|
||||
@ -264,17 +251,6 @@ GetAnimHierarchyFromClump(RpClump *clump)
|
||||
return hier;
|
||||
}
|
||||
|
||||
RwFrame*
|
||||
GetHierarchyFromChildNodesCB(RwFrame *frame, void *data)
|
||||
{
|
||||
RpHAnimHierarchy **pHier = (RpHAnimHierarchy**)data;
|
||||
RpHAnimHierarchy *hier = RpHAnimFrameGetHierarchy(frame);
|
||||
if(hier == nil)
|
||||
RwFrameForAllChildren(frame, GetHierarchyFromChildNodesCB, &hier);
|
||||
*pHier = hier;
|
||||
return nil;
|
||||
}
|
||||
|
||||
void
|
||||
SkinGetBonePositionsToTable(RpClump *clump, RwV3d *boneTable)
|
||||
{
|
||||
@ -290,8 +266,7 @@ SkinGetBonePositionsToTable(RpClump *clump, RwV3d *boneTable)
|
||||
if(boneTable == nil)
|
||||
return;
|
||||
|
||||
// atomic = GetFirstAtomic(clump); // mobile, also VC
|
||||
atomic = IsClumpSkinned(clump); // xbox, seems safer
|
||||
atomic = GetFirstAtomic(clump); // mobile, also VC
|
||||
assert(atomic);
|
||||
skin = RpSkinGeometryGetSkin(RpAtomicGetGeometry(atomic));
|
||||
assert(skin);
|
||||
@ -397,7 +372,6 @@ RenderSkeleton(RpHAnimHierarchy *hier)
|
||||
par = stack[--sp];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
RwBool Im2DRenderQuad(RwReal x1, RwReal y1, RwReal x2, RwReal y2, RwReal z, RwReal recipCamZ, RwReal uvOffset)
|
||||
@ -560,6 +534,7 @@ CameraSize(RwCamera * camera, RwRect * rect,
|
||||
}
|
||||
}
|
||||
|
||||
// BUG: game just changes camera raster's sizes, but this is a hack
|
||||
if (( origSize.w != rect->w ) && ( origSize.h != rect->h ))
|
||||
{
|
||||
RwRaster *raster;
|
||||
@ -844,4 +819,4 @@ RestoreAlphaTest()
|
||||
RwD3D8SetRenderState(D3DRS_ALPHAREF, saved_alpharef);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@ -18,16 +18,13 @@ RwObject *GetFirstObject(RwFrame *frame);
|
||||
RpAtomic *GetFirstAtomic(RpClump *clump);
|
||||
RwTexture *GetFirstTexture(RwTexDictionary *txd);
|
||||
|
||||
#ifdef PED_SKIN
|
||||
RpAtomic *IsClumpSkinned(RpClump *clump);
|
||||
bool IsClumpSkinned(RpClump *clump);
|
||||
RpHAnimHierarchy *GetAnimHierarchyFromSkinClump(RpClump *clump); // get from atomic
|
||||
RpHAnimHierarchy *GetAnimHierarchyFromClump(RpClump *clump); // get from frame
|
||||
RwFrame *GetHierarchyFromChildNodesCB(RwFrame *frame, void *data);
|
||||
void SkinGetBonePositionsToTable(RpClump *clump, RwV3d *boneTable);
|
||||
RpHAnimAnimation *HAnimAnimationCreateForHierarchy(RpHAnimHierarchy *hier);
|
||||
RpAtomic *AtomicRemoveAnimFromSkinCB(RpAtomic *atomic, void *data);
|
||||
void RenderSkeleton(RpHAnimHierarchy *hier);
|
||||
#endif
|
||||
|
||||
RwBool Im2DRenderQuad(RwReal x1, RwReal y1, RwReal x2, RwReal y2, RwReal z, RwReal recipCamZ, RwReal uvOffset);
|
||||
RpClump *RpClumpGetBoundingSphere(RpClump *clump, RwSphere *sphere, bool useLTM);
|
||||
@ -38,6 +35,7 @@ RwTexDictionary *RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary
|
||||
void ReadVideoCardCapsFile(uint32&, uint32&, uint32&, uint32&);
|
||||
bool CheckVideoCardCaps(void);
|
||||
void WriteVideoCardCapsFile(void);
|
||||
bool CanVideoCardDoDXT(void);
|
||||
void ConvertingTexturesScreen(uint32, uint32, const char*);
|
||||
void DealWithTxdWriteError(uint32, uint32, const char*);
|
||||
bool CreateTxdImageForVideoCard();
|
||||
|
@ -1,7 +1,11 @@
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4005)
|
||||
#pragma warning( pop )
|
||||
#define WITHD3D
|
||||
#include "common.h"
|
||||
#ifndef LIBRW
|
||||
#include "rpanisot.h"
|
||||
#endif
|
||||
#include "crossplatform.h"
|
||||
#include "platform.h"
|
||||
|
||||
@ -47,6 +51,15 @@ RwTextureGtaStreamRead(RwStream *stream)
|
||||
texLoadTime = (texNumLoaded * texLoadTime + (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond() - preloadTime) / (float)(texNumLoaded+1);
|
||||
texNumLoaded++;
|
||||
}
|
||||
|
||||
if(tex == nil)
|
||||
return nil;
|
||||
|
||||
#ifndef LIBRW
|
||||
if(RpAnisotTextureGetMaxAnisotropy(tex) > 1)
|
||||
RpAnisotTextureSetMaxAnisotropy(tex, RpAnisotTextureGetMaxAnisotropy(tex));
|
||||
#endif
|
||||
|
||||
return tex;
|
||||
}
|
||||
|
||||
@ -152,6 +165,7 @@ RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary *texDict)
|
||||
#ifdef GTA_PC
|
||||
#ifdef RWLIBS
|
||||
extern "C" RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags);
|
||||
extern "C" RwBool _rwD3D8CheckValidTextureFormat(RwInt32 format);
|
||||
#else
|
||||
RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags);
|
||||
#endif
|
||||
@ -202,8 +216,16 @@ WriteVideoCardCapsFile(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
|
||||
void DoRWStuffEndOfFrame(void);
|
||||
bool
|
||||
CanVideoCardDoDXT(void)
|
||||
{
|
||||
#ifdef LIBRW
|
||||
// TODO
|
||||
return true;
|
||||
#else
|
||||
return _rwD3D8CheckValidTextureFormat(D3DFMT_DXT1) && _rwD3D8CheckValidTextureFormat(D3DFMT_DXT3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
|
||||
@ -229,6 +251,7 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
|
||||
CFont::SetBackgroundOff();
|
||||
CFont::SetPropOn();
|
||||
CFont::SetScale(SCREEN_SCALE_X(0.45f), SCREEN_SCALE_Y(0.7f));
|
||||
CFont::SetCentreOff();
|
||||
CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f));
|
||||
CFont::SetJustifyOff();
|
||||
CFont::SetColor(CRGBA(255, 217, 106, 255));
|
||||
|
@ -13,7 +13,7 @@ void
|
||||
CTxdStore::Initialise(void)
|
||||
{
|
||||
if(ms_pTxdPool == nil)
|
||||
ms_pTxdPool = new CPool<TxdDef,TxdDef>(TXDSTORESIZE);
|
||||
ms_pTxdPool = new CPool<TxdDef,TxdDef>(TXDSTORESIZE, "TexDictionary");
|
||||
}
|
||||
|
||||
void
|
||||
@ -58,11 +58,10 @@ CTxdStore::RemoveTxdSlot(int slot)
|
||||
int
|
||||
CTxdStore::FindTxdSlot(const char *name)
|
||||
{
|
||||
char *defname;
|
||||
int size = ms_pTxdPool->GetSize();
|
||||
for(int i = 0; i < size; i++){
|
||||
defname = GetTxdName(i);
|
||||
if(defname && !CGeneral::faststricmp(defname, name))
|
||||
TxdDef *def = GetSlot(i);
|
||||
if(def && !CGeneral::faststricmp(def->name, name))
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
@ -71,8 +70,7 @@ CTxdStore::FindTxdSlot(const char *name)
|
||||
char*
|
||||
CTxdStore::GetTxdName(int slot)
|
||||
{
|
||||
TxdDef *def = GetSlot(slot);
|
||||
return def ? def->name : nil;
|
||||
return GetSlot(slot)->name;
|
||||
}
|
||||
|
||||
void
|
||||
@ -91,9 +89,7 @@ CTxdStore::PopCurrentTxd(void)
|
||||
void
|
||||
CTxdStore::SetCurrentTxd(int slot)
|
||||
{
|
||||
TxdDef *def = GetSlot(slot);
|
||||
if(def)
|
||||
RwTexDictionarySetCurrent(def->texDict);
|
||||
RwTexDictionarySetCurrent(GetSlot(slot)->texDict);
|
||||
}
|
||||
|
||||
void
|
||||
@ -118,7 +114,7 @@ void
|
||||
CTxdStore::RemoveRef(int slot)
|
||||
{
|
||||
if(--GetSlot(slot)->refCount <= 0)
|
||||
CStreaming::RemoveModel(slot + STREAM_OFFSET_TXD);
|
||||
CStreaming::RemoveTxd(slot);
|
||||
}
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user