From 8a4fa58cd42b7cca4a86fe2d9913b839b554bf10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Mon, 11 May 2020 05:55:57 +0300 Subject: Linux build support --- src/rw/RwHelper.cpp | 40 ++++++++++++++++++++-------------------- src/rw/TexRead.cpp | 1 + src/rw/VisibilityPlugins.cpp | 8 ++++---- 3 files changed, 25 insertions(+), 24 deletions(-) (limited to 'src/rw') diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index cb1d4ab5..5026e2c8 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -60,15 +60,15 @@ void * RwMallocAlign(RwUInt32 size, RwUInt32 align) { void *mem = (void *)malloc(size + align); - + ASSERT(mem != nil); - - void *addr = (void *)((((RwUInt32)mem) + align) & ~(align - 1)); - + + void *addr = (void *)((((uintptr)mem) + align) & ~(align - 1)); + ASSERT(addr != nil); - + *(((void **)addr) - 1) = mem; - + return addr; } @@ -76,11 +76,11 @@ void RwFreeAlign(void *mem) { ASSERT(mem != nil); - + void *addr = *(((void **)mem) - 1); - + ASSERT(addr != nil); - + free(addr); } @@ -381,7 +381,7 @@ CameraSize(RwCamera * camera, RwRect * rect, RwEngineGetVideoModeInfo(&videoMode, RwEngineGetCurrentVideoMode()); - + origSize.w = RwRasterGetWidth(RwCameraGetRaster(camera)); origSize.h = RwRasterGetHeight(RwCameraGetRaster(camera)); @@ -392,7 +392,7 @@ CameraSize(RwCamera * camera, RwRect * rect, /* For full screen applications, resizing the camera just doesn't * make sense, use the video mode size. */ - + r.x = r.y = 0; r.w = videoMode.width; r.h = videoMode.height; @@ -414,11 +414,11 @@ CameraSize(RwCamera * camera, RwRect * rect, { RwRaster *raster; RwRaster *zRaster; - + /* * Destroy rasters... */ - + raster = RwCameraGetRaster(camera); if( raster ) { @@ -430,14 +430,14 @@ CameraSize(RwCamera * camera, RwRect * rect, { RwRasterDestroy(zRaster); } - + /* - * Create new rasters... + * Create new rasters... */ raster = RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPECAMERA); zRaster = RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPEZBUFFER); - + if( raster && zRaster ) { RwCameraSetRaster(camera, raster); @@ -460,8 +460,8 @@ CameraSize(RwCamera * camera, RwRect * rect, rect->w = origSize.w; rect->h = origSize.h; - /* - * Use default values... + /* + * Use default values... */ raster = RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPECAMERA); @@ -495,9 +495,9 @@ CameraSize(RwCamera * camera, RwRect * rect, vw.y = viewWindow; } } - + RwCameraSetViewWindow(camera, &vw); - + RsGlobal.width = rect->w; RsGlobal.height = rect->h; } diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index 60945665..122ce655 100644 --- a/src/rw/TexRead.cpp +++ b/src/rw/TexRead.cpp @@ -3,6 +3,7 @@ #pragma warning( pop ) #include "common.h" #include "crossplatform.h" +#include "platform.h" #include "Timer.h" #ifdef GTA_PC diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index 5184860b..cb514f07 100644 --- a/src/rw/VisibilityPlugins.cpp +++ b/src/rw/VisibilityPlugins.cpp @@ -114,7 +114,7 @@ CVisibilityPlugins::SetRenderWareCamera(RwCamera *camera) RpMaterial* SetAlphaCB(RpMaterial *material, void *data) { - ((RwRGBA*)RpMaterialGetColor(material))->alpha = (uint8)(uint32)data; + ((RwRGBA*)RpMaterialGetColor(material))->alpha = (uint8)(uintptr)data; return material; } @@ -833,15 +833,15 @@ void CVisibilityPlugins::SetClumpModelInfo(RpClump *clump, CClumpModelInfo *modelInfo) { CVehicleModelInfo *vmi; - SetFrameHierarchyId(RpClumpGetFrame(clump), (int32)modelInfo); + SetFrameHierarchyId(RpClumpGetFrame(clump), (uintptr)modelInfo); // Unused switch (modelInfo->GetModelType()) { // ignore MLO case MITYPE_VEHICLE: vmi = (CVehicleModelInfo*)modelInfo; - if(vmi->m_vehicleType == VEHICLE_TYPE_TRAIN || - vmi->m_vehicleType == VEHICLE_TYPE_HELI || + if(vmi->m_vehicleType == VEHICLE_TYPE_TRAIN || + vmi->m_vehicleType == VEHICLE_TYPE_HELI || vmi->m_vehicleType == VEHICLE_TYPE_PLANE) CLUMPEXT(clump)->visibilityCB = VehicleVisibilityCB_BigVehicle; else -- cgit v1.2.3 From 70a8234dad441b73c998ee11b2932071ce55c540 Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 11 May 2020 22:24:53 +0200 Subject: RenderPedCB from VC --- src/rw/VisibilityPlugins.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/rw') diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index 5184860b..46ec8ae2 100644 --- a/src/rw/VisibilityPlugins.cpp +++ b/src/rw/VisibilityPlugins.cpp @@ -557,12 +557,16 @@ RpAtomic* CVisibilityPlugins::RenderPedCB(RpAtomic *atomic) { int32 alpha; + RwV3d cam2atm; - alpha = GetClumpAlpha(RpAtomicGetClump(atomic)); - if(alpha == 255) - AtomicDefaultRenderCallBack(atomic); - else - RenderAlphaAtomic(atomic, alpha); + RwV3dSub(&cam2atm, &RwFrameGetLTM(RpAtomicGetFrame(atomic))->pos, ms_pCameraPosn); + if(RwV3dDotProduct(&cam2atm, &cam2atm) < ms_pedLod1Dist){ + alpha = GetClumpAlpha(RpAtomicGetClump(atomic)); + if(alpha == 255) + AtomicDefaultRenderCallBack(atomic); + else + RenderAlphaAtomic(atomic, alpha); + } return atomic; } -- cgit v1.2.3