mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 15:02:01 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
d128e28044
11 changed files with 87 additions and 72 deletions
|
@ -14,6 +14,11 @@ list( APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||||
include( CreateLaunchers )
|
include( CreateLaunchers )
|
||||||
include( FindPackageHandleStandardArgs )
|
include( FindPackageHandleStandardArgs )
|
||||||
|
|
||||||
|
# Produce a warning if XP support will be missing.
|
||||||
|
if( MSVC14 AND NOT CMAKE_GENERATOR_TOOLSET STREQUAL "v140_xp" )
|
||||||
|
message( WARNING "This project supports Windows XP (including XP x64), but you must set the optional toolset to v140_xp manually to have it in your build! Use -T \"v140_xp\" from the command prompt." )
|
||||||
|
endif()
|
||||||
|
|
||||||
# Support cross compiling
|
# Support cross compiling
|
||||||
option( FORCE_CROSSCOMPILE "Turn on cross compiling." NO )
|
option( FORCE_CROSSCOMPILE "Turn on cross compiling." NO )
|
||||||
if( FORCE_CROSSCOMPILE )
|
if( FORCE_CROSSCOMPILE )
|
||||||
|
|
|
@ -115,59 +115,49 @@ if( WIN32 )
|
||||||
set( FMOD_LIB_PATH_SUFFIXES PATH_SUFFIXES lib )
|
set( FMOD_LIB_PATH_SUFFIXES PATH_SUFFIXES lib )
|
||||||
set( NASM_NAMES nasmw nasm )
|
set( NASM_NAMES nasmw nasm )
|
||||||
|
|
||||||
if( NOT MSVC )
|
find_path( D3D_INCLUDE_DIR d3d9.h
|
||||||
find_path( D3D_INCLUDE_DIR d3d9.h
|
PATHS ENV DXSDK_DIR
|
||||||
PATHS ENV DXSDK_DIR
|
PATH_SUFFIXES Include )
|
||||||
PATH_SUFFIXES Include )
|
if( NOT D3D_INCLUDE_DIR )
|
||||||
if( NOT D3D_INCLUDE_DIR )
|
message( SEND_ERROR "Could not find DirectX 9 header files" )
|
||||||
message( SEND_ERROR "Could not find DirectX 9 header files" )
|
|
||||||
else()
|
|
||||||
include_directories( ${D3D_INCLUDE_DIR} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_path( XINPUT_INCLUDE_DIR xinput.h
|
|
||||||
PATHS ENV DXSDK_DIR
|
|
||||||
PATH_SUFFIXES Include )
|
|
||||||
if( NOT XINPUT_INCLUDE_DIR )
|
|
||||||
message( WARNING "Could not find xinput.h. XInput will be disabled." )
|
|
||||||
add_definitions( -DNO_XINPUT )
|
|
||||||
else()
|
|
||||||
include_directories( ${XINPUT_INCLUDE_DIR} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library( DX_dxguid_LIBRARY dxguid
|
|
||||||
PATHS ENV DXSDK_DIR
|
|
||||||
PATH_SUFFIXES Lib Lib/${XBITS} )
|
|
||||||
find_library( DX_dinput8_LIBRARY dinput8
|
|
||||||
PATHS ENV DXSDK_DIR
|
|
||||||
PATH_SUFFIXES Lib Lib/${XBITS} )
|
|
||||||
|
|
||||||
set( DX_LIBS_FOUND YES )
|
|
||||||
if( NOT DX_dxguid_LIBRARY )
|
|
||||||
set( DX_LIBS_FOUND NO )
|
|
||||||
endif()
|
|
||||||
if( NOT DX_dinput8_LIBRARY )
|
|
||||||
set( DX_LIBS_FOUND NO )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( NOT DX_LIBS_FOUND )
|
|
||||||
message( FATAL_ERROR "Could not find DirectX 9 libraries" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set( DX_LIBS
|
|
||||||
"${DX_dxguid_LIBRARY}"
|
|
||||||
"${DX_dinput8_LIBRARY}"
|
|
||||||
)
|
|
||||||
else()
|
else()
|
||||||
set( DX_LIBS
|
include_directories( ${D3D_INCLUDE_DIR} )
|
||||||
dxguid
|
endif()
|
||||||
dinput8
|
|
||||||
)
|
find_path( XINPUT_INCLUDE_DIR xinput.h
|
||||||
|
PATHS ENV DXSDK_DIR
|
||||||
|
PATH_SUFFIXES Include )
|
||||||
|
if( NOT XINPUT_INCLUDE_DIR )
|
||||||
|
message( WARNING "Could not find xinput.h. XInput will be disabled." )
|
||||||
|
add_definitions( -DNO_XINPUT )
|
||||||
|
else()
|
||||||
|
include_directories( ${XINPUT_INCLUDE_DIR} )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( ZDOOM_LIBS ${DX_LIBS}
|
find_library( DX_dxguid_LIBRARY dxguid
|
||||||
|
PATHS ENV DXSDK_DIR
|
||||||
|
PATH_SUFFIXES Lib Lib/${XBITS} )
|
||||||
|
find_library( DX_dinput8_LIBRARY dinput8
|
||||||
|
PATHS ENV DXSDK_DIR
|
||||||
|
PATH_SUFFIXES Lib Lib/${XBITS} )
|
||||||
|
|
||||||
|
set( DX_LIBS_FOUND YES )
|
||||||
|
if( NOT DX_dxguid_LIBRARY )
|
||||||
|
set( DX_LIBS_FOUND NO )
|
||||||
|
endif()
|
||||||
|
if( NOT DX_dinput8_LIBRARY )
|
||||||
|
set( DX_LIBS_FOUND NO )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if( NOT DX_LIBS_FOUND )
|
||||||
|
message( FATAL_ERROR "Could not find DirectX 9 libraries" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set( ZDOOM_LIBS
|
||||||
wsock32
|
wsock32
|
||||||
winmm
|
winmm
|
||||||
|
"${DX_dxguid_LIBRARY}"
|
||||||
|
"${DX_dinput8_LIBRARY}"
|
||||||
ole32
|
ole32
|
||||||
user32
|
user32
|
||||||
gdi32
|
gdi32
|
||||||
|
|
|
@ -291,10 +291,9 @@ int DEarthquake::StaticGetQuakeIntensities(AActor *victim, FQuakeJiggers &jigger
|
||||||
|
|
||||||
if (!(quake->m_Flags & QF_WAVE))
|
if (!(quake->m_Flags & QF_WAVE))
|
||||||
{
|
{
|
||||||
jiggers.Falloff = MAX(falloff, jiggers.Falloff);
|
jiggers.RollIntensity = MAX(r, jiggers.RollIntensity) * falloff;
|
||||||
jiggers.RollIntensity = MAX(r, jiggers.RollIntensity) * jiggers.Falloff;
|
|
||||||
|
|
||||||
intensity *= jiggers.Falloff;
|
intensity *= falloff;
|
||||||
if (quake->m_Flags & QF_RELATIVE)
|
if (quake->m_Flags & QF_RELATIVE)
|
||||||
{
|
{
|
||||||
jiggers.RelIntensity.X = MAX(intensity.X, jiggers.RelIntensity.X);
|
jiggers.RelIntensity.X = MAX(intensity.X, jiggers.RelIntensity.X);
|
||||||
|
@ -310,14 +309,13 @@ int DEarthquake::StaticGetQuakeIntensities(AActor *victim, FQuakeJiggers &jigger
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
jiggers.Falloff = MAX(falloff, jiggers.Falloff);
|
jiggers.RollWave = r * quake->GetModWave(quake->m_RollWave) * falloff * strength;
|
||||||
jiggers.RollWave = r * quake->GetModWave(quake->m_RollWave) * jiggers.Falloff * strength;
|
|
||||||
|
|
||||||
|
|
||||||
intensity.X *= quake->GetModWave(quake->m_WaveSpeed.X);
|
intensity.X *= quake->GetModWave(quake->m_WaveSpeed.X);
|
||||||
intensity.Y *= quake->GetModWave(quake->m_WaveSpeed.Y);
|
intensity.Y *= quake->GetModWave(quake->m_WaveSpeed.Y);
|
||||||
intensity.Z *= quake->GetModWave(quake->m_WaveSpeed.Z);
|
intensity.Z *= quake->GetModWave(quake->m_WaveSpeed.Z);
|
||||||
intensity *= strength * jiggers.Falloff;
|
intensity *= strength * falloff;
|
||||||
|
|
||||||
// [RH] This only gives effect to the last sine quake. I would
|
// [RH] This only gives effect to the last sine quake. I would
|
||||||
// prefer if some way was found to make multiples coexist
|
// prefer if some way was found to make multiples coexist
|
||||||
|
|
|
@ -153,7 +153,6 @@ struct FQuakeJiggers
|
||||||
DVector3 RelIntensity;
|
DVector3 RelIntensity;
|
||||||
DVector3 Offset;
|
DVector3 Offset;
|
||||||
DVector3 RelOffset;
|
DVector3 RelOffset;
|
||||||
double Falloff;
|
|
||||||
double RollIntensity, RollWave;
|
double RollIntensity, RollWave;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ void DBaseStatusBar::SetScaled (bool scale, bool force)
|
||||||
ST_X = 0;
|
ST_X = 0;
|
||||||
ST_Y = VirticalResolution - RelTop;
|
ST_Y = VirticalResolution - RelTop;
|
||||||
float aspect = ActiveRatio(SCREENWIDTH, SCREENHEIGHT);
|
float aspect = ActiveRatio(SCREENWIDTH, SCREENHEIGHT);
|
||||||
if (aspect >= 1.3f)
|
if (!AspectTallerThanWide(aspect))
|
||||||
{ // Normal resolution
|
{ // Normal resolution
|
||||||
::ST_Y = Scale (ST_Y, SCREENHEIGHT, VirticalResolution);
|
::ST_Y = Scale (ST_Y, SCREENHEIGHT, VirticalResolution);
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,7 +318,7 @@ void R_SWRSetWindow(int windowSize, int fullWidth, int fullHeight, int stHeight,
|
||||||
virtwidth = virtwidth2 = fullWidth;
|
virtwidth = virtwidth2 = fullWidth;
|
||||||
virtheight = virtheight2 = fullHeight;
|
virtheight = virtheight2 = fullHeight;
|
||||||
|
|
||||||
if (trueratio < 1.3f)
|
if (AspectTallerThanWide(trueratio))
|
||||||
{
|
{
|
||||||
virtheight2 = virtheight2 * AspectMultiplier(trueratio) / 48;
|
virtheight2 = virtheight2 * AspectMultiplier(trueratio) / 48;
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ void R_SWRSetWindow(int windowSize, int fullWidth, int fullHeight, int stHeight,
|
||||||
virtwidth2 = virtwidth2 * AspectMultiplier(trueratio) / 48;
|
virtwidth2 = virtwidth2 * AspectMultiplier(trueratio) / 48;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WidescreenRatio < 1.3f)
|
if (AspectTallerThanWide(WidescreenRatio))
|
||||||
{
|
{
|
||||||
virtheight = virtheight * AspectMultiplier(WidescreenRatio) / 48;
|
virtheight = virtheight * AspectMultiplier(WidescreenRatio) / 48;
|
||||||
}
|
}
|
||||||
|
@ -948,7 +948,7 @@ void R_RenderViewToCanvas (AActor *actor, DCanvas *canvas,
|
||||||
RenderTarget = canvas;
|
RenderTarget = canvas;
|
||||||
bRenderingToCanvas = true;
|
bRenderingToCanvas = true;
|
||||||
|
|
||||||
R_SetWindow (12, width, height, height);
|
R_SetWindow (12, width, height, height, true);
|
||||||
viewwindowx = x;
|
viewwindowx = x;
|
||||||
viewwindowy = y;
|
viewwindowy = y;
|
||||||
viewactive = true;
|
viewactive = true;
|
||||||
|
|
|
@ -198,7 +198,7 @@ void R_SetViewSize (int blocks)
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight)
|
void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight, bool renderingToCanvas)
|
||||||
{
|
{
|
||||||
float trueratio;
|
float trueratio;
|
||||||
|
|
||||||
|
@ -220,7 +220,15 @@ void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight)
|
||||||
freelookviewheight = ((setblocks*fullHeight)/10)&~7;
|
freelookviewheight = ((setblocks*fullHeight)/10)&~7;
|
||||||
}
|
}
|
||||||
|
|
||||||
WidescreenRatio = ActiveRatio (fullWidth, fullHeight, &trueratio);
|
if (renderingToCanvas)
|
||||||
|
{
|
||||||
|
WidescreenRatio = fullWidth / (float)fullHeight;
|
||||||
|
trueratio = WidescreenRatio;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WidescreenRatio = ActiveRatio(fullWidth, fullHeight, &trueratio);
|
||||||
|
}
|
||||||
|
|
||||||
DrawFSHUD = (windowSize == 11);
|
DrawFSHUD = (windowSize == 11);
|
||||||
|
|
||||||
|
@ -229,7 +237,7 @@ void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight)
|
||||||
|
|
||||||
centery = viewheight/2;
|
centery = viewheight/2;
|
||||||
centerx = viewwidth/2;
|
centerx = viewwidth/2;
|
||||||
if (WidescreenRatio < 1.3f)
|
if (AspectTallerThanWide(WidescreenRatio))
|
||||||
{
|
{
|
||||||
centerxwide = centerx;
|
centerxwide = centerx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ void R_ExecuteSetViewSize (void);
|
||||||
|
|
||||||
// Called by M_Responder.
|
// Called by M_Responder.
|
||||||
void R_SetViewSize (int blocks);
|
void R_SetViewSize (int blocks);
|
||||||
void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight);
|
void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight, bool renderingToCanvas = false);
|
||||||
|
|
||||||
|
|
||||||
extern void R_FreePastViewers ();
|
extern void R_FreePastViewers ();
|
||||||
|
|
|
@ -874,7 +874,7 @@ void DCanvas::VirtualToRealCoords(double &x, double &y, double &w, double &h,
|
||||||
double right = x + w;
|
double right = x + w;
|
||||||
double bottom = y + h;
|
double bottom = y + h;
|
||||||
|
|
||||||
if (myratio > 1.4f)
|
if (myratio > 1.334f)
|
||||||
{ // The target surface is either 16:9 or 16:10, so expand the
|
{ // The target surface is either 16:9 or 16:10, so expand the
|
||||||
// specified virtual size to avoid undesired stretching of the
|
// specified virtual size to avoid undesired stretching of the
|
||||||
// image. Does not handle non-4:3 virtual sizes. I'll worry about
|
// image. Does not handle non-4:3 virtual sizes. I'll worry about
|
||||||
|
@ -887,7 +887,7 @@ void DCanvas::VirtualToRealCoords(double &x, double &y, double &w, double &h,
|
||||||
x = x * Width / vwidth;
|
x = x * Width / vwidth;
|
||||||
w = right * Width / vwidth - x;
|
w = right * Width / vwidth - x;
|
||||||
}
|
}
|
||||||
if (myratio < 1.3f)
|
if (AspectTallerThanWide(myratio))
|
||||||
{ // The target surface is 5:4
|
{ // The target surface is 5:4
|
||||||
y = (y - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5;
|
y = (y - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5;
|
||||||
h = (bottom - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5 - y;
|
h = (bottom - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5 - y;
|
||||||
|
@ -950,7 +950,7 @@ void DCanvas::FillBorder (FTexture *img)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int bordtop, bordbottom, bordleft, bordright, bord;
|
int bordtop, bordbottom, bordleft, bordright, bord;
|
||||||
if (myratio < 1.3f)
|
if (AspectTallerThanWide(myratio))
|
||||||
{ // Screen is taller than it is wide
|
{ // Screen is taller than it is wide
|
||||||
bordleft = bordright = 0;
|
bordleft = bordright = 0;
|
||||||
bord = Height - Height * AspectMultiplier(myratio) / 48;
|
bord = Height - Height * AspectMultiplier(myratio) / 48;
|
||||||
|
|
|
@ -1362,7 +1362,7 @@ void V_CalcCleanFacs (int designwidth, int designheight, int realwidth, int real
|
||||||
int cx1, cy1, cx2, cy2;
|
int cx1, cy1, cx2, cy2;
|
||||||
|
|
||||||
ratio = ActiveRatio(realwidth, realheight);
|
ratio = ActiveRatio(realwidth, realheight);
|
||||||
if (ratio < 1.3f)
|
if (AspectTallerThanWide(ratio))
|
||||||
{
|
{
|
||||||
cwidth = realwidth;
|
cwidth = realwidth;
|
||||||
cheight = realheight * AspectMultiplier(ratio) / 48;
|
cheight = realheight * AspectMultiplier(ratio) / 48;
|
||||||
|
@ -1708,17 +1708,31 @@ int AspectBaseWidth(float aspect)
|
||||||
|
|
||||||
int AspectBaseHeight(float aspect)
|
int AspectBaseHeight(float aspect)
|
||||||
{
|
{
|
||||||
return (int)round(200.0f * (320.0f / (240.0f * aspect)) * 3.0f);
|
if (!AspectTallerThanWide(aspect))
|
||||||
|
return (int)round(200.0f * (320.0f / (AspectBaseWidth(aspect) / 3.0f)) * 3.0f);
|
||||||
|
else
|
||||||
|
return (int)round((200.0f * (4.0f / 3.0f)) / aspect * 3.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AspectPspriteOffset(float aspect)
|
double AspectPspriteOffset(float aspect)
|
||||||
{
|
{
|
||||||
return aspect < 1.3f ? (int)(6.5*FRACUNIT) : 0;
|
if (!AspectTallerThanWide(aspect))
|
||||||
|
return 0.0;
|
||||||
|
else
|
||||||
|
return ((4.0 / 3.0) / aspect - 1.0) * 97.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AspectMultiplier(float aspect)
|
int AspectMultiplier(float aspect)
|
||||||
{
|
{
|
||||||
return (int)round(320.0f / (240.0f * aspect) * 48.0f);
|
if (!AspectTallerThanWide(aspect))
|
||||||
|
return (int)round(320.0f / (AspectBaseWidth(aspect) / 3.0f) * 48.0f);
|
||||||
|
else
|
||||||
|
return (int)round(200.0f / (AspectBaseHeight(aspect) / 3.0f) * 48.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AspectTallerThanWide(float aspect)
|
||||||
|
{
|
||||||
|
return aspect < 1.333f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IVideo::DumpAdapters ()
|
void IVideo::DumpAdapters ()
|
||||||
|
|
|
@ -523,8 +523,9 @@ static inline double ActiveRatio (double width, double height) { return ActiveRa
|
||||||
|
|
||||||
int AspectBaseWidth(float aspect);
|
int AspectBaseWidth(float aspect);
|
||||||
int AspectBaseHeight(float aspect);
|
int AspectBaseHeight(float aspect);
|
||||||
int AspectPspriteOffset(float aspect);
|
double AspectPspriteOffset(float aspect);
|
||||||
int AspectMultiplier(float aspect);
|
int AspectMultiplier(float aspect);
|
||||||
|
bool AspectTallerThanWide(float aspect);
|
||||||
|
|
||||||
EXTERN_CVAR(Int, uiscale);
|
EXTERN_CVAR(Int, uiscale);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue