Removed/disabled some unused code.
Readded second pass specular drawing. Fixed particle drawing (lights had mysteriously stopped showing up for a while).
This commit is contained in:
parent
c7f0dd737a
commit
c12ec5ff7e
10 changed files with 163 additions and 394 deletions
|
@ -37,7 +37,7 @@ void EmptyCDTrackList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CDTrackFileName "CD Tracks.txt"
|
#define CDTrackFileName "cd tracks.txt"
|
||||||
|
|
||||||
|
|
||||||
static void ExtractTracksForLevel(char* & buffer,List<int> & track_list)
|
static void ExtractTracksForLevel(char* & buffer,List<int> & track_list)
|
||||||
|
|
|
@ -28,8 +28,6 @@
|
||||||
|
|
||||||
#include "iofocus.h"
|
#include "iofocus.h"
|
||||||
|
|
||||||
//#include "statpane.h"
|
|
||||||
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
|
|
||||||
#include "hudgadg.hpp"
|
#include "hudgadg.hpp"
|
||||||
|
@ -39,7 +37,6 @@
|
||||||
|
|
||||||
#include "missions.hpp"
|
#include "missions.hpp"
|
||||||
|
|
||||||
#include "rebmenus.hpp"
|
|
||||||
#include "indexfnt.hpp"
|
#include "indexfnt.hpp"
|
||||||
// Includes for console variables:
|
// Includes for console variables:
|
||||||
#include "textexp.hpp"
|
#include "textexp.hpp"
|
||||||
|
@ -61,10 +58,6 @@
|
||||||
/* Version settings ************************************************/
|
/* Version settings ************************************************/
|
||||||
|
|
||||||
/* Constants *******************************************************/
|
/* Constants *******************************************************/
|
||||||
#define DEFAULT_KEY_STATUS_PANEL_WEAPONS ( KEY_TAB )
|
|
||||||
#define DEFAULT_KEY_STATUS_PANEL_INVENTORY ( KEY_V )
|
|
||||||
#define DEFAULT_KEY_STATUS_PANEL_OBJECTIVES ( KEY_O )
|
|
||||||
#define DEFAULT_KEY_STATUS_PANEL_GAMESTATS ( KEY_G )
|
|
||||||
|
|
||||||
/* Macros **********************************************************/
|
/* Macros **********************************************************/
|
||||||
|
|
||||||
|
@ -85,19 +78,6 @@
|
||||||
extern int bEnableTextprintXY;
|
extern int bEnableTextprintXY;
|
||||||
extern signed int HUDTranslucencyLevel;
|
extern signed int HUDTranslucencyLevel;
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
extern OurBool DaveDebugOn;
|
|
||||||
extern FDIEXTENSIONTAG FDIET_Dummy;
|
|
||||||
extern IFEXTENSIONTAG IFET_Dummy;
|
|
||||||
extern FDIQUAD FDIQuad_WholeScreen;
|
|
||||||
extern FDIPOS FDIPos_Origin;
|
|
||||||
extern FDIPOS FDIPos_ScreenCentre;
|
|
||||||
extern IFOBJECTLOCATION IFObjLoc_Origin;
|
|
||||||
extern UncompressedGlobalPlotAtomID UGPAID_StandardNull;
|
|
||||||
extern IFCOLOUR IFColour_Dummy;
|
|
||||||
extern IFVECTOR IFVec_Zero;
|
|
||||||
#endif
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -123,8 +103,6 @@
|
||||||
void DumpVideoMode(void);
|
void DumpVideoMode(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
static void davehook_HandleStatusPanelControls(void);
|
|
||||||
|
|
||||||
static int bFirstFrame = No;
|
static int bFirstFrame = No;
|
||||||
|
|
||||||
/* Internal globals ************************************************/
|
/* Internal globals ************************************************/
|
||||||
|
@ -323,7 +301,7 @@
|
||||||
|
|
||||||
void DAVEHOOK_Init(void)
|
void DAVEHOOK_Init(void)
|
||||||
{
|
{
|
||||||
SCString* pSCString_TestLeak = new SCString("this is a test memory leak");
|
static SCString* pSCString_TestLeak = new SCString("this is a test memory leak");
|
||||||
|
|
||||||
MissionHacks :: TestInit();
|
MissionHacks :: TestInit();
|
||||||
|
|
||||||
|
@ -342,21 +320,10 @@ void DAVEHOOK_Init(void)
|
||||||
ConsoleCommand :: CreateAll();
|
ConsoleCommand :: CreateAll();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0//UseRebMenus
|
|
||||||
{
|
|
||||||
RebMenus :: Init();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DAVEHOOK_UnInit(void)
|
void DAVEHOOK_UnInit(void)
|
||||||
{
|
{
|
||||||
#if 0//UseRebMenus
|
|
||||||
{
|
|
||||||
RebMenus :: UnInit();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
IndexedFont :: UnloadFont(DATABASE_MESSAGE_FONT);
|
IndexedFont :: UnloadFont(DATABASE_MESSAGE_FONT);
|
||||||
|
|
||||||
GADGET_UnInit();
|
GADGET_UnInit();
|
||||||
|
@ -379,10 +346,6 @@ void DAVEHOOK_Maintain(void)
|
||||||
// Hacked in input support:
|
// Hacked in input support:
|
||||||
#if SupportWindows95
|
#if SupportWindows95
|
||||||
{
|
{
|
||||||
#if EnableStatusPanels
|
|
||||||
davehook_HandleStatusPanelControls();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if ( KeyboardInput[ KEY_J ] )
|
if ( KeyboardInput[ KEY_J ] )
|
||||||
{
|
{
|
||||||
|
@ -427,14 +390,6 @@ void DAVEHOOK_Maintain(void)
|
||||||
// RE_ENTRANT_QUEUE_WinMain_FlushMessages();
|
// RE_ENTRANT_QUEUE_WinMain_FlushMessages();
|
||||||
}
|
}
|
||||||
#endif // SupportWindows95
|
#endif // SupportWindows95
|
||||||
|
|
||||||
/* KJL 20:14:23 28/03/98 - for now I've disabled the calls to the menus while in-game */
|
|
||||||
#if 0//UseRebMenus
|
|
||||||
{
|
|
||||||
RebMenus :: Maintain();
|
|
||||||
RebMenus :: Render();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DAVEHOOK_ScreenModeChange_Setup(void)
|
void DAVEHOOK_ScreenModeChange_Setup(void)
|
||||||
|
@ -446,10 +401,6 @@ void DAVEHOOK_ScreenModeChange_Cleanup(void)
|
||||||
R2BASE_ScreenModeChange_Cleanup();
|
R2BASE_ScreenModeChange_Cleanup();
|
||||||
GADGET_ScreenModeChange_Cleanup();
|
GADGET_ScreenModeChange_Cleanup();
|
||||||
|
|
||||||
#if 0
|
|
||||||
LoadPFFont(MENU_FONT_1);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bFirstFrame = Yes;
|
bFirstFrame = Yes;
|
||||||
// to ensure a flush without processing of messages in first frame, so as to
|
// to ensure a flush without processing of messages in first frame, so as to
|
||||||
// avoid carriage returns/enter from menu selections triggering typing mode
|
// avoid carriage returns/enter from menu selections triggering typing mode
|
||||||
|
@ -524,73 +475,3 @@ void Testing :: DumpVideoMode(void)
|
||||||
pSCString_Feedback -> SendToScreen();
|
pSCString_Feedback -> SendToScreen();
|
||||||
pSCString_Feedback -> R_Release();
|
pSCString_Feedback -> R_Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EnableStatusPanels
|
|
||||||
static void davehook_HandleStatusPanelControls(void)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
DHM 27/1/98:
|
|
||||||
------------
|
|
||||||
This code ought to be rewritten in terms of the PLAYER_INPUT_CONFIGURATION
|
|
||||||
code in USR_IO.C
|
|
||||||
|
|
||||||
I've done it as a bit of a hack here to avoid messing up people's saved
|
|
||||||
control config files, and because there's no more room on the control config
|
|
||||||
screen for redefining these keys.
|
|
||||||
|
|
||||||
It will depend on whether the status panels stay in the final version.
|
|
||||||
*/
|
|
||||||
if ( IOFOCUS_AcceptControls())
|
|
||||||
{
|
|
||||||
if
|
|
||||||
(
|
|
||||||
KeyboardInput[ DEFAULT_KEY_STATUS_PANEL_WEAPONS ]
|
|
||||||
)
|
|
||||||
{
|
|
||||||
STATPANE_RequestStatusPanel
|
|
||||||
(
|
|
||||||
I_StatusPanel_Weapons
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
|
||||||
(
|
|
||||||
KeyboardInput[ DEFAULT_KEY_STATUS_PANEL_INVENTORY ]
|
|
||||||
)
|
|
||||||
{
|
|
||||||
STATPANE_RequestStatusPanel
|
|
||||||
(
|
|
||||||
I_StatusPanel_Inventory
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
|
||||||
(
|
|
||||||
KeyboardInput[ DEFAULT_KEY_STATUS_PANEL_OBJECTIVES ]
|
|
||||||
)
|
|
||||||
{
|
|
||||||
STATPANE_RequestStatusPanel
|
|
||||||
(
|
|
||||||
I_StatusPanel_Objectives
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
|
||||||
(
|
|
||||||
KeyboardInput[ DEFAULT_KEY_STATUS_PANEL_GAMESTATS ]
|
|
||||||
)
|
|
||||||
{
|
|
||||||
STATPANE_RequestStatusPanel
|
|
||||||
(
|
|
||||||
I_StatusPanel_GameStats
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
STATPANE_NoRequestedPanel();
|
|
||||||
}
|
|
||||||
#endif // EnableStatusPanels
|
|
|
@ -1,63 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
statpane.h
|
|
||||||
|
|
||||||
Created 18/11/97 by DHM: status panels for Marine HUD
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _statpane_h
|
|
||||||
#define _statpane_h 1
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Version settings *****************************************************/
|
|
||||||
|
|
||||||
/* Constants ***********************************************************/
|
|
||||||
|
|
||||||
/* Macros ***************************************************************/
|
|
||||||
|
|
||||||
/* Type definitions *****************************************************/
|
|
||||||
enum StatusPanelIndex
|
|
||||||
{
|
|
||||||
I_StatusPanel_Weapons,
|
|
||||||
// assumed to be the first
|
|
||||||
|
|
||||||
I_StatusPanel_Inventory,
|
|
||||||
I_StatusPanel_Objectives,
|
|
||||||
I_StatusPanel_GameStats,
|
|
||||||
|
|
||||||
NUM_STATUS_PANELS
|
|
||||||
}; /* suggested naming: "I_StatusPanel" */
|
|
||||||
|
|
||||||
|
|
||||||
/* Exported globals *****************************************************/
|
|
||||||
|
|
||||||
/* Function prototypes **************************************************/
|
|
||||||
void STATPANE_RequestStatusPanel
|
|
||||||
(
|
|
||||||
enum StatusPanelIndex I_StatusPanel
|
|
||||||
);
|
|
||||||
/* this should be called once per frame, or else call STATPANE_NoRequestedIndex()
|
|
||||||
Call it if the button for a panel is in a "down" state.
|
|
||||||
Currently the system has an internal order of precedence using the
|
|
||||||
enum StatusPanelIndex; the earlier entries have greater priority.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void STATPANE_NoRequestedPanel(void);
|
|
||||||
/*
|
|
||||||
Makes the status panel retreats off the screen; call if none of the buttons
|
|
||||||
for selecting status panels are depressed
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* End of the header ****************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -122,6 +122,11 @@ extern void LoadCommonTextures(void);
|
||||||
****************************************************************************************KJL*/
|
****************************************************************************************KJL*/
|
||||||
|
|
||||||
|
|
||||||
|
void LoadDDGraphic(struct DDGraphicTag *DDGfxPtr, char *Filename)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "LoadDDGraphic(%p, %s)\n", DDGfxPtr, Filename);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* SETTING UP THE HUD *
|
* SETTING UP THE HUD *
|
||||||
****************************************/
|
****************************************/
|
||||||
|
@ -137,8 +142,6 @@ void PlatformSpecificInitMarineHUD(void)
|
||||||
|
|
||||||
//SelectGenTexDirectory(ITI_TEXTURE);
|
//SelectGenTexDirectory(ITI_TEXTURE);
|
||||||
|
|
||||||
extern unsigned char *ScreenBuffer;
|
|
||||||
|
|
||||||
/* set game mode: different, though for multiplayer game */
|
/* set game mode: different, though for multiplayer game */
|
||||||
if(AvP.Network==I_No_Network)
|
if(AvP.Network==I_No_Network)
|
||||||
cl_pszGameMode = "marine";
|
cl_pszGameMode = "marine";
|
||||||
|
@ -605,6 +608,8 @@ extern void BLTMarineNumericsToHUD(enum MARINE_HUD_DIGIT digitsToDraw)
|
||||||
}
|
}
|
||||||
while(digit--);
|
while(digit--);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0 /* TODO: remove */
|
||||||
static void BLTDigitToHUD(char digit, int x, int y, int font)
|
static void BLTDigitToHUD(char digit, int x, int y, int font)
|
||||||
{
|
{
|
||||||
// HRESULT ddrval;
|
// HRESULT ddrval;
|
||||||
|
@ -674,7 +679,7 @@ static void BLTDigitToHUD(char digit, int x, int y, int font)
|
||||||
*/
|
*/
|
||||||
fprintf(stderr, "BLTDigitToHUD(%d, %d, %d, %d)\n", digit, x, y, font);
|
fprintf(stderr, "BLTDigitToHUD(%d, %d, %d, %d)\n", digit, x, y, font);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void BLTGunSightToScreen(int screenX, int screenY, enum GUNSIGHT_SHAPE gunsightShape)
|
void BLTGunSightToScreen(int screenX, int screenY, enum GUNSIGHT_SHAPE gunsightShape)
|
||||||
|
@ -686,6 +691,10 @@ void BLTGunSightToScreen(int screenX, int screenY, enum GUNSIGHT_SHAPE gunsightS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0 /* TODO: remove this directdraw code */
|
||||||
|
|
||||||
|
|
||||||
/*KJL************************
|
/*KJL************************
|
||||||
* PREDATOR DRAWING ROUTINES *
|
* PREDATOR DRAWING ROUTINES *
|
||||||
************************KJL*/
|
************************KJL*/
|
||||||
|
@ -1187,8 +1196,6 @@ void BLTGraphicToScreen(HUDGRAPHIC* hgptr)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************** FONTS *************************/
|
/************************** FONTS *************************/
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
@ -1415,7 +1422,7 @@ int BLTFontOffsetToHUD(PFFONT* font , int xdest, int ydest, int offset)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _statpane_h
|
|
||||||
#include "statpane.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class TextReportGadget; // fully declared in TREPGADG.HPP
|
class TextReportGadget; // fully declared in TREPGADG.HPP
|
||||||
|
|
||||||
// HUD Gadget is an abstract base class for 3 types of HUD; one for each species
|
// HUD Gadget is an abstract base class for 3 types of HUD; one for each species
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
/*-----------------------------Patrick 14/5/97------------------------------
|
|
||||||
Source for PC game pause stuff
|
|
||||||
--------------------------------------------------------------------------*/
|
|
||||||
#include "3dc.h"
|
|
||||||
#include "inline.h"
|
|
||||||
#include "module.h"
|
|
||||||
#include "stratdef.h"
|
|
||||||
#include "gamedef.h"
|
|
||||||
#include "gameplat.h"
|
|
||||||
#include "bh_types.h"
|
|
||||||
#include "menudefs.h"
|
|
||||||
#include "menugfx.h"
|
|
||||||
#include "pcmenus.h"
|
|
||||||
#include "usr_io.h"
|
|
||||||
|
|
||||||
#define UseLocalAssert Yes
|
|
||||||
#include "ourasert.h"
|
|
||||||
|
|
||||||
extern void CheckForGamePause(void);
|
|
||||||
extern void SaveGameToFile(void);
|
|
||||||
extern void AccessDatabase(void);
|
|
||||||
extern int ScanDrawMode;
|
|
||||||
|
|
||||||
|
|
||||||
void DoPcPause(void)
|
|
||||||
{
|
|
||||||
ReadUserInput();
|
|
||||||
ReadPlayerGameInput(Player->ObStrategyBlock);
|
|
||||||
|
|
||||||
if(AvP.Network!=I_No_Network)
|
|
||||||
{
|
|
||||||
// escape ends game for network play
|
|
||||||
AvP.MainLoopRunning = 0;
|
|
||||||
AvP.GameMode = I_GM_Playing;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CheckForGamePause();
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
FlushTextprintBuffer();
|
|
||||||
AvpShowViews();
|
|
||||||
|
|
||||||
/* KJL 11:25:33 7/29/97 - this needs to be changed if
|
|
||||||
the HUD goes all 3D accelerator drawn */
|
|
||||||
if (ScanDrawMode != ScanDrawDirectDraw)
|
|
||||||
{
|
|
||||||
WriteEndCodeToExecuteBuffer();
|
|
||||||
UnlockExecuteBufferAndPrepareForUse();
|
|
||||||
ExecuteBuffer();
|
|
||||||
EndD3DScene();
|
|
||||||
}
|
|
||||||
|
|
||||||
BLTPausedToScreen();
|
|
||||||
|
|
||||||
|
|
||||||
FlipBuffers();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
AccessDatabase();
|
|
||||||
|
|
||||||
ResetFrameCounter();
|
|
||||||
|
|
||||||
AvP.GameMode = I_GM_Playing;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pauseOk = 1;
|
|
||||||
void CheckForGamePause(void)
|
|
||||||
{
|
|
||||||
/* check for pause key */
|
|
||||||
if(PlayerStatusPtr->Mvt_InputRequests.Flags.Rqst_PauseGame)
|
|
||||||
{
|
|
||||||
if(pauseOk)
|
|
||||||
{
|
|
||||||
/* switch state */
|
|
||||||
if(AvP.GameMode == I_GM_Playing) AvP.GameMode = I_GM_Paused;
|
|
||||||
else if(AvP.GameMode == I_GM_Paused) AvP.GameMode = I_GM_Playing;
|
|
||||||
pauseOk = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else pauseOk = 1;
|
|
||||||
}
|
|
|
@ -257,7 +257,6 @@ int AVP_ChangeDisplayMode
|
||||||
/* JH 3/6/97 - don't quit kill off the images - still keep buffers in system memory
|
/* JH 3/6/97 - don't quit kill off the images - still keep buffers in system memory
|
||||||
that are not linked to direct draw */
|
that are not linked to direct draw */
|
||||||
MinimizeAllImages();
|
MinimizeAllImages();
|
||||||
MinimizeAllDDGraphics();
|
|
||||||
ReleaseDirect3DNotDDOrImages();
|
ReleaseDirect3DNotDDOrImages();
|
||||||
|
|
||||||
finiObjectsExceptDD();
|
finiObjectsExceptDD();
|
||||||
|
|
12
src/main.c
12
src/main.c
|
@ -89,6 +89,10 @@ int InitialiseWindowsSystem()
|
||||||
|
|
||||||
SDL_WM_SetCaption("Aliens vs Predator", "Aliens vs Predator");
|
SDL_WM_SetCaption("Aliens vs Predator", "Aliens vs Predator");
|
||||||
|
|
||||||
|
/* this is for supporting keyboard input processing with little hassle */
|
||||||
|
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
||||||
|
SDL_EnableUNICODE(1); /* toggle it to ON */
|
||||||
|
|
||||||
/* -w will disable to first fullscreen, -f will turn it on */
|
/* -w will disable to first fullscreen, -f will turn it on */
|
||||||
// SDL_WM_ToggleFullScreen(surface);
|
// SDL_WM_ToggleFullScreen(surface);
|
||||||
// SDL_WM_GrabInput(SDL_GRAB_ON);
|
// SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||||
|
@ -105,6 +109,7 @@ int InitialiseWindowsSystem()
|
||||||
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glDepthFunc(GL_LEQUAL);
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
glDepthRange(0.0, 1.0);
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
@ -588,12 +593,15 @@ int main(int argc, char *argv[])
|
||||||
// SetLevelToLoad(AVP_ENVIRONMENT_TEMPLE); /* starting alien level */
|
// SetLevelToLoad(AVP_ENVIRONMENT_TEMPLE); /* starting alien level */
|
||||||
|
|
||||||
AvP.PlayerType = I_Marine;
|
AvP.PlayerType = I_Marine;
|
||||||
SetLevelToLoad(AVP_ENVIRONMENT_DERELICT); /* starting marine level */
|
// SetLevelToLoad(AVP_ENVIRONMENT_DERELICT); /* starting marine level */
|
||||||
|
|
||||||
// AvP.PlayerType = I_Predator;
|
// AvP.PlayerType = I_Predator;
|
||||||
// SetLevelToLoad(AVP_ENVIRONMENT_WATERFALL); /* starting predator level */
|
// SetLevelToLoad(AVP_ENVIRONMENT_WATERFALL); /* starting predator level */
|
||||||
|
|
||||||
// SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_MP); /* multiplayer */
|
SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_MP); /* multiplayer */
|
||||||
|
// SetLevelToLoad(AVP_ENVIRONMENT_SUBWAY_MP);
|
||||||
|
|
||||||
|
// SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_COOP); /* coop/skirmish */
|
||||||
|
|
||||||
// SetLevelToLoad(AVP_ENVIRONMENT_E3DEMOSP); /* demo level */
|
// SetLevelToLoad(AVP_ENVIRONMENT_E3DEMOSP); /* demo level */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -636,32 +636,6 @@ __asm__("fld fti_fptmp \n\t"
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
int FloatToInt(float fptmp)
|
|
||||||
{
|
|
||||||
#if 1
|
|
||||||
fti_fptmp = fptmp;
|
|
||||||
/*
|
|
||||||
_asm
|
|
||||||
{
|
|
||||||
fld fptmp
|
|
||||||
fistp itmp
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
__asm__("fld fti_fptmp \n\t"
|
|
||||||
"fistp fti_itmp \n\t"
|
|
||||||
:
|
|
||||||
:
|
|
||||||
: "memory", "cc"
|
|
||||||
);
|
|
||||||
|
|
||||||
return fti_itmp;
|
|
||||||
#else
|
|
||||||
return fptmp;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void TranslatePoint(float *source, float *dest, float *matrix)
|
void TranslatePoint(float *source, float *dest, float *matrix)
|
||||||
{
|
{
|
||||||
// fprintf(stderr, "TranslatePoint(%f, %f, %f)\n");
|
// fprintf(stderr, "TranslatePoint(%f, %f, %f)\n");
|
||||||
|
|
214
src/opengl.c
214
src/opengl.c
|
@ -173,32 +173,11 @@ static void DrawTriangles_T2F_C4UB_V4F()
|
||||||
case 3:
|
case 3:
|
||||||
OUTPUT_TRIANGLE(0, 2, 1);
|
OUTPUT_TRIANGLE(0, 2, 1);
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case 4:
|
|
||||||
OUTPUT_TRIANGLE(0, 1, 2);
|
|
||||||
OUTPUT_TRIANGLE(0, 2, 3);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case 5:
|
case 5:
|
||||||
OUTPUT_TRIANGLE(0, 1, 4);
|
OUTPUT_TRIANGLE(0, 1, 4);
|
||||||
OUTPUT_TRIANGLE(1, 3, 4);
|
OUTPUT_TRIANGLE(1, 3, 4);
|
||||||
OUTPUT_TRIANGLE(1, 2, 3);
|
OUTPUT_TRIANGLE(1, 2, 3);
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case 6:
|
|
||||||
OUTPUT_TRIANGLE(0, 4, 5);
|
|
||||||
OUTPUT_TRIANGLE(0, 3, 4);
|
|
||||||
OUTPUT_TRIANGLE(0, 2, 3);
|
|
||||||
OUTPUT_TRIANGLE(0, 1, 2);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
OUTPUT_TRIANGLE(0, 5, 6);
|
|
||||||
OUTPUT_TRIANGLE(0, 4, 5);
|
|
||||||
OUTPUT_TRIANGLE(0, 3, 4);
|
|
||||||
OUTPUT_TRIANGLE(0, 2, 3);
|
|
||||||
OUTPUT_TRIANGLE(0, 1, 2);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case 8:
|
case 8:
|
||||||
OUTPUT_TRIANGLE(0, 6, 7);
|
OUTPUT_TRIANGLE(0, 6, 7);
|
||||||
case 7:
|
case 7:
|
||||||
|
@ -209,7 +188,6 @@ static void DrawTriangles_T2F_C4UB_V4F()
|
||||||
case 4:
|
case 4:
|
||||||
OUTPUT_TRIANGLE(0, 2, 3);
|
OUTPUT_TRIANGLE(0, 2, 3);
|
||||||
OUTPUT_TRIANGLE(0, 1, 2);
|
OUTPUT_TRIANGLE(0, 1, 2);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "DrawTriangles_T2F_C4UB_V4F: tarr.elements = %d\n", tarr.elements);
|
fprintf(stderr, "DrawTriangles_T2F_C4UB_V4F: tarr.elements = %d\n", tarr.elements);
|
||||||
|
@ -220,6 +198,96 @@ static void DrawTriangles_T2F_C4UB_V4F()
|
||||||
#undef OUTPUT_VERTEX
|
#undef OUTPUT_VERTEX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void DrawTriangles_T2F_V4F()
|
||||||
|
{
|
||||||
|
|
||||||
|
#define OUTPUT_VERTEX(d) \
|
||||||
|
{ \
|
||||||
|
glTexCoord2fv (&tarr.t[(d) * 4]); \
|
||||||
|
glVertex4fv (&tarr.v[(d) * 4]); \
|
||||||
|
}
|
||||||
|
#define OUTPUT_TRIANGLE(a, b, c) \
|
||||||
|
{ \
|
||||||
|
OUTPUT_VERTEX((a)); \
|
||||||
|
OUTPUT_VERTEX((b)); \
|
||||||
|
OUTPUT_VERTEX((c)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
glBegin(GL_TRIANGLES);
|
||||||
|
switch(tarr.elements) {
|
||||||
|
case 3:
|
||||||
|
OUTPUT_TRIANGLE(0, 2, 1);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
OUTPUT_TRIANGLE(0, 1, 4);
|
||||||
|
OUTPUT_TRIANGLE(1, 3, 4);
|
||||||
|
OUTPUT_TRIANGLE(1, 2, 3);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
OUTPUT_TRIANGLE(0, 6, 7);
|
||||||
|
case 7:
|
||||||
|
OUTPUT_TRIANGLE(0, 5, 6);
|
||||||
|
case 6:
|
||||||
|
OUTPUT_TRIANGLE(0, 4, 5);
|
||||||
|
OUTPUT_TRIANGLE(0, 3, 4);
|
||||||
|
case 4:
|
||||||
|
OUTPUT_TRIANGLE(0, 2, 3);
|
||||||
|
OUTPUT_TRIANGLE(0, 1, 2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "DrawTriangles_T2F_V4F: tarr.elements = %d\n", tarr.elements);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
#undef OUTPUT_TRIANGLE
|
||||||
|
#undef OUTPUT_VERTEX
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DrawTriangles_C4UB_V4F()
|
||||||
|
{
|
||||||
|
|
||||||
|
#define OUTPUT_VERTEX(d) \
|
||||||
|
{ \
|
||||||
|
glColor4ubv (&tarr.c[(d) * 4]); \
|
||||||
|
glVertex4fv (&tarr.v[(d) * 4]); \
|
||||||
|
}
|
||||||
|
#define OUTPUT_TRIANGLE(a, b, c) \
|
||||||
|
{ \
|
||||||
|
OUTPUT_VERTEX((a)); \
|
||||||
|
OUTPUT_VERTEX((b)); \
|
||||||
|
OUTPUT_VERTEX((c)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
glBegin(GL_TRIANGLES);
|
||||||
|
switch(tarr.elements) {
|
||||||
|
case 3:
|
||||||
|
OUTPUT_TRIANGLE(0, 2, 1);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
OUTPUT_TRIANGLE(0, 1, 4);
|
||||||
|
OUTPUT_TRIANGLE(1, 3, 4);
|
||||||
|
OUTPUT_TRIANGLE(1, 2, 3);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
OUTPUT_TRIANGLE(0, 6, 7);
|
||||||
|
case 7:
|
||||||
|
OUTPUT_TRIANGLE(0, 5, 6);
|
||||||
|
case 6:
|
||||||
|
OUTPUT_TRIANGLE(0, 4, 5);
|
||||||
|
OUTPUT_TRIANGLE(0, 3, 4);
|
||||||
|
case 4:
|
||||||
|
OUTPUT_TRIANGLE(0, 2, 3);
|
||||||
|
OUTPUT_TRIANGLE(0, 1, 2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "DrawTriangles_C4UB_V4F: tarr.elements = %d\n", tarr.elements);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
#undef OUTPUT_TRIANGLE
|
||||||
|
#undef OUTPUT_VERTEX
|
||||||
|
}
|
||||||
|
|
||||||
static void SelectPolygonBeginType(int points)
|
static void SelectPolygonBeginType(int points)
|
||||||
{
|
{
|
||||||
switch(points) {
|
switch(points) {
|
||||||
|
@ -355,6 +423,8 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER
|
||||||
texoffset = inputPolyPtr->PolyColour & ClrTxDefn;
|
texoffset = inputPolyPtr->PolyColour & ClrTxDefn;
|
||||||
if (texoffset) {
|
if (texoffset) {
|
||||||
TextureHandle = (void *)ImageHeaderArray[texoffset].D3DTexture;
|
TextureHandle = (void *)ImageHeaderArray[texoffset].D3DTexture;
|
||||||
|
|
||||||
|
CurrTextureHandle = TextureHandle;
|
||||||
} else {
|
} else {
|
||||||
TextureHandle = CurrTextureHandle;
|
TextureHandle = CurrTextureHandle;
|
||||||
}
|
}
|
||||||
|
@ -366,7 +436,6 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER
|
||||||
|
|
||||||
CheckBoundTextureIsCorrect(TextureHandle->id);
|
CheckBoundTextureIsCorrect(TextureHandle->id);
|
||||||
|
|
||||||
// SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
|
|
||||||
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
||||||
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
||||||
GLfloat x, y, z;
|
GLfloat x, y, z;
|
||||||
|
@ -382,7 +451,7 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -394,29 +463,16 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER
|
||||||
} else if (y1>Global_VDB_Ptr->VDB_ClipDown) {
|
} else if (y1>Global_VDB_Ptr->VDB_ClipDown) {
|
||||||
y1=Global_VDB_Ptr->VDB_ClipDown;
|
y1=Global_VDB_Ptr->VDB_ClipDown;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
x = x1;
|
x = x1;
|
||||||
y = y1;
|
y = y1;
|
||||||
|
|
||||||
x = (x - ScreenDescriptorBlock.SDB_CentreX)/ScreenDescriptorBlock.SDB_CentreX;
|
x = (x - (float)ScreenDescriptorBlock.SDB_CentreX - 0.5f) / ((float)ScreenDescriptorBlock.SDB_CentreX - 0.5f);
|
||||||
y = -(y - ScreenDescriptorBlock.SDB_CentreY)/ScreenDescriptorBlock.SDB_CentreY;
|
y = -(y - (float)ScreenDescriptorBlock.SDB_CentreY - 0.5f) / ((float)ScreenDescriptorBlock.SDB_CentreY - 0.5f);
|
||||||
|
|
||||||
zvalue = vertices->Z+HeadUpDisplayZOffset;
|
zvalue = vertices->Z+HeadUpDisplayZOffset;
|
||||||
z = 1.0 - 2*ZNear/zvalue;
|
z = 1.0 - 2*ZNear/zvalue;
|
||||||
|
|
||||||
#if 0
|
|
||||||
glColor4ub(GammaValues[vertices->R], GammaValues[vertices->G], GammaValues[vertices->B], vertices->A);
|
|
||||||
|
|
||||||
/* they both work. */
|
|
||||||
#if 0
|
|
||||||
glTexCoord4f(s*rhw, t*rhw, 0, rhw);
|
|
||||||
glVertex3f(x, y, z);
|
|
||||||
#else
|
|
||||||
glTexCoord2f(s, t);
|
|
||||||
glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tarr.v[4*i+0] = x/rhw;
|
tarr.v[4*i+0] = x/rhw;
|
||||||
tarr.v[4*i+1] = y/rhw;
|
tarr.v[4*i+1] = y/rhw;
|
||||||
|
@ -431,12 +487,23 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER
|
||||||
tarr.c[4*i+2] = GammaValues[vertices->B];
|
tarr.c[4*i+2] = GammaValues[vertices->B];
|
||||||
tarr.c[4*i+3] = vertices->A;
|
tarr.c[4*i+3] = vertices->A;
|
||||||
}
|
}
|
||||||
// glEnd();
|
|
||||||
|
|
||||||
tarr.elements = RenderPolygon.NumberOfVertices;
|
tarr.elements = RenderPolygon.NumberOfVertices;
|
||||||
DrawTriangles_T2F_C4UB_V4F();
|
DrawTriangles_T2F_C4UB_V4F();
|
||||||
|
|
||||||
CurrTextureHandle = TextureHandle;
|
CheckBoundTextureIsCorrect(0);
|
||||||
|
|
||||||
|
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
|
||||||
|
|
||||||
|
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
||||||
|
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
||||||
|
|
||||||
|
tarr.c[4*i+0] = GammaValues[vertices->SpecularR];
|
||||||
|
tarr.c[4*i+1] = GammaValues[vertices->SpecularG];
|
||||||
|
tarr.c[4*i+2] = GammaValues[vertices->SpecularB];
|
||||||
|
tarr.c[4*i+3] = 255;
|
||||||
|
}
|
||||||
|
DrawTriangles_C4UB_V4F();
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
|
void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
|
@ -447,7 +514,6 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
|
||||||
GLfloat ZNear;
|
GLfloat ZNear;
|
||||||
float RecipW, RecipH;
|
float RecipW, RecipH;
|
||||||
|
|
||||||
|
|
||||||
ZNear = (GLfloat) (Global_VDB_Ptr->VDB_ClipZ * GlobalScale);
|
ZNear = (GLfloat) (Global_VDB_Ptr->VDB_ClipZ * GlobalScale);
|
||||||
|
|
||||||
texoffset = inputPolyPtr->PolyColour & ClrTxDefn;
|
texoffset = inputPolyPtr->PolyColour & ClrTxDefn;
|
||||||
|
@ -464,7 +530,6 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
|
||||||
|
|
||||||
CheckBoundTextureIsCorrect(TextureHandle->id);
|
CheckBoundTextureIsCorrect(TextureHandle->id);
|
||||||
|
|
||||||
// SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
|
|
||||||
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
||||||
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
||||||
GLfloat x, y, z;
|
GLfloat x, y, z;
|
||||||
|
@ -480,7 +545,7 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -503,18 +568,6 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
|
||||||
// z = 1.0 - 2*ZNear/zvalue;
|
// z = 1.0 - 2*ZNear/zvalue;
|
||||||
z = 1.0f;
|
z = 1.0f;
|
||||||
|
|
||||||
#if 0
|
|
||||||
glColor4ub(vertices->R, vertices->G, vertices->B, vertices->A);
|
|
||||||
|
|
||||||
/* they both work. */
|
|
||||||
#if 0
|
|
||||||
glTexCoord4f(s*rhw, t*rhw, 0, rhw);
|
|
||||||
glVertex3f(x, y, z);
|
|
||||||
#else
|
|
||||||
glTexCoord2f(s, t);
|
|
||||||
glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
tarr.v[4*i+0] = x/rhw;
|
tarr.v[4*i+0] = x/rhw;
|
||||||
tarr.v[4*i+1] = y/rhw;
|
tarr.v[4*i+1] = y/rhw;
|
||||||
tarr.v[4*i+2] = z/rhw;
|
tarr.v[4*i+2] = z/rhw;
|
||||||
|
@ -528,7 +581,6 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
|
||||||
tarr.c[4*i+2] = vertices->B;
|
tarr.c[4*i+2] = vertices->B;
|
||||||
tarr.c[4*i+3] = vertices->A;
|
tarr.c[4*i+3] = vertices->A;
|
||||||
}
|
}
|
||||||
// glEnd();
|
|
||||||
|
|
||||||
tarr.elements = RenderPolygon.NumberOfVertices;
|
tarr.elements = RenderPolygon.NumberOfVertices;
|
||||||
DrawTriangles_T2F_C4UB_V4F();
|
DrawTriangles_T2F_C4UB_V4F();
|
||||||
|
@ -570,7 +622,6 @@ void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
|
||||||
RecipH = 1.0f / height;
|
RecipH = 1.0f / height;
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
|
|
||||||
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
||||||
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
||||||
|
|
||||||
|
@ -588,7 +639,7 @@ void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -610,18 +661,6 @@ void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
|
||||||
zvalue = vertices->Z+HeadUpDisplayZOffset;
|
zvalue = vertices->Z+HeadUpDisplayZOffset;
|
||||||
z = 1.0 - 2*ZNear/zvalue;
|
z = 1.0 - 2*ZNear/zvalue;
|
||||||
|
|
||||||
#if 0
|
|
||||||
glColor4ub(vertices->R, vertices->G, vertices->B, vertices->A);
|
|
||||||
|
|
||||||
/* they both work. */
|
|
||||||
#if 0
|
|
||||||
glTexCoord4f(s*rhw, t*rhw, 0, rhw);
|
|
||||||
glVertex3f(x, y, z);
|
|
||||||
#else
|
|
||||||
glTexCoord2f(s, t);
|
|
||||||
glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
tarr.v[4*i+0] = x/rhw;
|
tarr.v[4*i+0] = x/rhw;
|
||||||
tarr.v[4*i+1] = y/rhw;
|
tarr.v[4*i+1] = y/rhw;
|
||||||
tarr.v[4*i+2] = z/rhw;
|
tarr.v[4*i+2] = z/rhw;
|
||||||
|
@ -635,7 +674,6 @@ void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
|
||||||
tarr.c[4*i+2] = vertices->B;
|
tarr.c[4*i+2] = vertices->B;
|
||||||
tarr.c[4*i+3] = vertices->A;
|
tarr.c[4*i+3] = vertices->A;
|
||||||
}
|
}
|
||||||
// glEnd();
|
|
||||||
|
|
||||||
tarr.elements = RenderPolygon.NumberOfVertices;
|
tarr.elements = RenderPolygon.NumberOfVertices;
|
||||||
DrawTriangles_T2F_C4UB_V4F();
|
DrawTriangles_T2F_C4UB_V4F();
|
||||||
|
@ -723,7 +761,7 @@ void D3D_Decal_Output(DECAL *decalPtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -843,7 +881,7 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
glColor4ub(FastRandom()&255, FastRandom()&255, FastRandom()&255, particleDescPtr->Alpha);
|
glColor4ub(FastRandom()&255, FastRandom()&255, FastRandom()&255, particleDescPtr->Alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
|
// SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
|
||||||
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
|
||||||
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
RENDERVERTEX *vertices = &renderVerticesPtr[i];
|
||||||
|
|
||||||
|
@ -859,7 +897,7 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -880,13 +918,14 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
y = -(y - ScreenDescriptorBlock.SDB_CentreY)/ScreenDescriptorBlock.SDB_CentreY;
|
y = -(y - ScreenDescriptorBlock.SDB_CentreY)/ScreenDescriptorBlock.SDB_CentreY;
|
||||||
|
|
||||||
if (particleDescPtr->IsDrawnInFront) {
|
if (particleDescPtr->IsDrawnInFront) {
|
||||||
z = -1.0f;
|
z = -0.999f; /* ... */
|
||||||
} else if (particleDescPtr->IsDrawnAtBack) {
|
} else if (particleDescPtr->IsDrawnAtBack) {
|
||||||
z = 1.0f;
|
z = 0.999f;
|
||||||
} else {
|
} else {
|
||||||
z = 1.0 - 2*ZNear/((float)vertices->Z); /* currently maps [ZNear, inf) to [-1, 1], probably could be more precise with a ZFar */
|
z = 1.0 - 2.0*ZNear/((float)vertices->Z); /* currently maps [ZNear, inf) to [-1, 1], probably could be more precise with a ZFar */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
#if 0
|
#if 0
|
||||||
glTexCoord4f(s*rhw, t*rhw, 0, rhw);
|
glTexCoord4f(s*rhw, t*rhw, 0, rhw);
|
||||||
glVertex3f(x, y, z);
|
glVertex3f(x, y, z);
|
||||||
|
@ -894,8 +933,19 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
glTexCoord2f(s, t);
|
glTexCoord2f(s, t);
|
||||||
glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
|
glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
tarr.v[4*i+0] = x/rhw;
|
||||||
|
tarr.v[4*i+1] = y/rhw;
|
||||||
|
tarr.v[4*i+2] = z/rhw;
|
||||||
|
tarr.v[4*i+3] = 1/rhw;
|
||||||
|
|
||||||
|
tarr.t[4*i+0] = s;
|
||||||
|
tarr.t[4*i+1] = t;
|
||||||
}
|
}
|
||||||
glEnd();
|
// glEnd();
|
||||||
|
|
||||||
|
tarr.elements = RenderPolygon.NumberOfVertices;
|
||||||
|
DrawTriangles_T2F_V4F();
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
|
void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
|
||||||
|
@ -917,7 +967,7 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
@ -972,7 +1022,7 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
|
||||||
|
|
||||||
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
|
||||||
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
|
||||||
#if 0
|
#if 1
|
||||||
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
|
||||||
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
x1=Global_VDB_Ptr->VDB_ClipLeft;
|
||||||
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue