mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
FOV Slider Tweak (Java Edition Similar)
This commit is contained in:
parent
341dfa1868
commit
e41607e58c
|
|
@ -837,7 +837,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
|
||||||
SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL);
|
SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL);
|
||||||
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
|
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
|
||||||
SetGameSettings(iPad,eGameSetting_Gamma,50);
|
SetGameSettings(iPad,eGameSetting_Gamma,50);
|
||||||
SetGameSettings(iPad,eGameSetting_FOV,0);
|
SetGameSettings(iPad,eGameSetting_FOV,75); // jvnpr -- default to 75% between 30 and 110, which is 90 (70 internal)
|
||||||
|
|
||||||
// 4J-PB - Don't reset the difficult level if we're in-game
|
// 4J-PB - Don't reset the difficult level if we're in-game
|
||||||
if(Minecraft::GetInstance()->level==NULL)
|
if(Minecraft::GetInstance()->level==NULL)
|
||||||
|
|
@ -1406,8 +1406,9 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
|
||||||
case eGameSetting_FOV:
|
case eGameSetting_FOV:
|
||||||
if(iPad==ProfileManager.GetPrimaryPad())
|
if(iPad==ProfileManager.GetPrimaryPad())
|
||||||
{
|
{
|
||||||
float fovDeg = 70.0f + (float)GameSettingsA[iPad]->ucFov * 40.0f / 100.0f;
|
float simulatedFovDeg = 30.0f + (float)GameSettingsA[iPad]->ucFov * 80.0f / 100.0f; // jvnpr -- convert 0-80 to 30-110
|
||||||
pMinecraft->gameRenderer->SetFovVal(fovDeg);
|
float trueFovDeg = ( 55.0f / 80.0f ) * (simulatedFovDeg - 30.0f) + 30.0f; // jnvpr -- further convert 30-110 to a range from 30-85 to better reflect JE fov values
|
||||||
|
pMinecraft->gameRenderer->SetFovVal(trueFovDeg);
|
||||||
pMinecraft->options->set(Options::Option::FOV, (float)GameSettingsA[iPad]->ucFov / 100.0f);
|
pMinecraft->options->set(Options::Option::FOV, (float)GameSettingsA[iPad]->ucFov / 100.0f);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@ UIScene_DebugOverlay::UIScene_DebugOverlay(int iPad, void *initData, UILayer *pa
|
||||||
|
|
||||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||||
WCHAR TempString[256];
|
WCHAR TempString[256];
|
||||||
int fovSliderVal = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
int fovSliderVal = app.GetGameSettings(m_iPad, eGameSetting_FOV) * 80.0f / 100.0f;
|
||||||
int fovDeg = 70 + fovSliderVal * 40 / 100;
|
int fovDeg = 30 + fovSliderVal * 80 / 100;
|
||||||
swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", fovDeg);
|
swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", fovDeg);
|
||||||
m_sliderFov.init(TempString,eControl_FOV,0,100,fovSliderVal);
|
m_sliderFov.init(TempString,eControl_FOV,0,80,fovSliderVal);
|
||||||
|
|
||||||
float currentTime = pMinecraft->level->getLevelData()->getGameTime() % 24000;
|
float currentTime = pMinecraft->level->getLevelData()->getGameTime() % 24000;
|
||||||
swprintf( (WCHAR *)TempString, 256, L"Set time (unsafe) (%d)", (int)currentTime);
|
swprintf( (WCHAR *)TempString, 256, L"Set time (unsafe) (%d)", (int)currentTime);
|
||||||
|
|
@ -274,16 +274,17 @@ void UIScene_DebugOverlay::handleSliderMove(F64 sliderId, F64 currentValue)
|
||||||
break;
|
break;
|
||||||
case eControl_FOV:
|
case eControl_FOV:
|
||||||
{
|
{
|
||||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
|
||||||
int v = (int)currentValue;
|
int v = (int)currentValue;
|
||||||
|
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||||
if (v < 0) v = 0;
|
if (v < 0) v = 0;
|
||||||
if (v > 100) v = 100;
|
if (v > 80) v = 80;
|
||||||
int fovDeg = 70 + v * 40 / 100;
|
int simulatedFovDeg = v + 30; // jvnpr -- convert 0-80 to 30-110
|
||||||
pMinecraft->gameRenderer->SetFovVal((float)fovDeg);
|
float trueFovDeg = ( 55.0f / 80.0f ) * (simulatedFovDeg - 30.0f) + 30.0f; // jvnpr -- further convert 30-110 to a range from 30-85 to better reflect JE fov values
|
||||||
app.SetGameSettings(m_iPad, eGameSetting_FOV, v);
|
pMinecraft->gameRenderer->SetFovVal(trueFovDeg);
|
||||||
|
app.SetGameSettings(m_iPad, eGameSetting_FOV, (v / (80.0f / 100.0f)));
|
||||||
|
|
||||||
WCHAR TempString[256];
|
WCHAR TempString[256];
|
||||||
swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", fovDeg);
|
swprintf( (WCHAR *)TempString, 256, L"FOV: %d (True: %d)", simulatedFovDeg, (int)trueFovDeg);
|
||||||
m_sliderFov.setLabel(TempString);
|
m_sliderFov.setLabel(TempString);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
|
||||||
|
jvnpr -- commented out this code from the kbm refactor to modify fov system :p
|
||||||
|
|
||||||
const int FOV_MIN = 70;
|
const int FOV_MIN = 70;
|
||||||
const int FOV_MAX = 110;
|
const int FOV_MAX = 110;
|
||||||
const int FOV_SLIDER_MAX = 100;
|
const int FOV_SLIDER_MAX = 100;
|
||||||
|
|
@ -30,6 +34,8 @@ namespace
|
||||||
if (sliderValue > FOV_SLIDER_MAX) sliderValue = FOV_SLIDER_MAX;
|
if (sliderValue > FOV_SLIDER_MAX) sliderValue = FOV_SLIDER_MAX;
|
||||||
return FOV_MIN + ((sliderValue * (FOV_MAX - FOV_MIN)) / FOV_SLIDER_MAX);
|
return FOV_MIN + ((sliderValue * (FOV_MAX - FOV_MIN)) / FOV_SLIDER_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int UIScene_SettingsGraphicsMenu::LevelToDistance(int level)
|
int UIScene_SettingsGraphicsMenu::LevelToDistance(int level)
|
||||||
|
|
@ -71,10 +77,10 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD
|
||||||
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma));
|
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma));
|
||||||
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));
|
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));
|
||||||
|
|
||||||
int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
//int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
||||||
int initialFovDeg = sliderValueToFov(initialFovSlider);
|
//int initialFovDeg = sliderValueToFov(initialFovSlider);
|
||||||
swprintf((WCHAR*)TempString, 256, L"FOV: %d", initialFovDeg);
|
swprintf((WCHAR*)TempString, 256, L"FOV: %d", (int)(30.0f + app.GetGameSettings(m_iPad, eGameSetting_FOV) * 80.0f / 100.0f));
|
||||||
m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, initialFovSlider);
|
m_sliderFOV.init(TempString, eControl_FOV, 0, 80, (app.GetGameSettings(m_iPad, eGameSetting_FOV)) * 80.0f / 100.0f);
|
||||||
|
|
||||||
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
|
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
|
||||||
m_sliderInterfaceOpacity.init(TempString,eControl_InterfaceOpacity,0,100,app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
|
m_sliderInterfaceOpacity.init(TempString,eControl_InterfaceOpacity,0,100,app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
|
||||||
|
|
@ -215,14 +221,31 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eControl_FOV:
|
case eControl_FOV:
|
||||||
{
|
{ /* jvnpr -- commented code from keyboard mouse refactor
|
||||||
m_sliderFOV.handleSliderMove(value);
|
m_sliderFOV.handleSliderMove(value);
|
||||||
|
int fovVal = value + 30;
|
||||||
Minecraft* pMinecraft = Minecraft::GetInstance();
|
Minecraft* pMinecraft = Minecraft::GetInstance();
|
||||||
int fovValue = sliderValueToFov(value);
|
//int fovValue = sliderValueToFov(value);
|
||||||
pMinecraft->gameRenderer->SetFovVal((float)fovValue);
|
pMinecraft->gameRenderer->SetFovVal((float)fovVal);
|
||||||
app.SetGameSettings(m_iPad, eGameSetting_FOV, value);
|
app.SetGameSettings(m_iPad, eGameSetting_FOV, fovVal);
|
||||||
WCHAR TempString[256];
|
WCHAR TempString[256];
|
||||||
swprintf((WCHAR*)TempString, 256, L"FOV: %d", fovValue);
|
swprintf((WCHAR*)TempString, 256, L"FOV: %d", fovVal);
|
||||||
|
m_sliderFOV.setLabel(TempString);
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
int v = (int)currentValue;
|
||||||
|
m_sliderFOV.handleSliderMove(v);
|
||||||
|
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||||
|
if (v < 0) v = 0;
|
||||||
|
if (v > 80) v = 80;
|
||||||
|
int simulatedFovDeg = v + 30; // jvnpr -- convert 0-80 to 30-110
|
||||||
|
float trueFovDeg = ( 55.0f / 80.0f ) * (simulatedFovDeg - 30.0f) + 30.0f; // jvnpr -- further convert 30-110 to a range from 30-85 to better reflect JE fov values
|
||||||
|
pMinecraft->gameRenderer->SetFovVal(trueFovDeg);
|
||||||
|
app.SetGameSettings(m_iPad, eGameSetting_FOV, (v / (80.0f / 100.0f)));
|
||||||
|
|
||||||
|
WCHAR TempString[256];
|
||||||
|
swprintf( (WCHAR *)TempString, 256, L"FOV: %d (True: %d)", simulatedFovDeg, (int)trueFovDeg);
|
||||||
m_sliderFOV.setLabel(TempString);
|
m_sliderFOV.setLabel(TempString);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,8 @@ GameRenderer::GameRenderer(Minecraft *mc)
|
||||||
|
|
||||||
m_fov=70.0f;
|
m_fov=70.0f;
|
||||||
|
|
||||||
|
h_fov=70.0f; // jvnpr -- Hardcoded hand FOV to prevent scaling with main renderer fov
|
||||||
|
|
||||||
// 4J Stu - Init these so they are setup before the tick
|
// 4J Stu - Init these so they are setup before the tick
|
||||||
for( int i = 0; i < 4; i++ )
|
for( int i = 0; i < 4; i++ )
|
||||||
{
|
{
|
||||||
|
|
@ -714,14 +716,14 @@ void GameRenderer::renderItemInHand(float a, int eye)
|
||||||
|
|
||||||
// 4J - have split out fov & aspect calculation so we can take into account viewports
|
// 4J - have split out fov & aspect calculation so we can take into account viewports
|
||||||
float fov, aspect;
|
float fov, aspect;
|
||||||
getFovAndAspect(fov, aspect, a, false);
|
getFovAndAspect(fov, aspect, a, false); // jvnpr -- don't need to run fov calc since it's hardcoded now but it's probably better to just leave this
|
||||||
|
|
||||||
if (zoom != 1)
|
if (zoom != 1)
|
||||||
{
|
{
|
||||||
glTranslatef((float) zoom_x, (float) -zoom_y, 0);
|
glTranslatef((float) zoom_x, (float) -zoom_y, 0);
|
||||||
glScaled(zoom, zoom, 1);
|
glScaled(zoom, zoom, 1);
|
||||||
}
|
}
|
||||||
gluPerspective(fov, aspect, 0.05f, renderDistance * 2);
|
gluPerspective(h_fov, aspect, 0.05f, renderDistance * 2); // jvnpr -- hardcoded h_fov to fix hand fov scaling
|
||||||
|
|
||||||
if (mc->gameMode->isCutScene())
|
if (mc->gameMode->isCutScene())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,8 @@ private:
|
||||||
bool isInClouds;
|
bool isInClouds;
|
||||||
|
|
||||||
float m_fov;
|
float m_fov;
|
||||||
|
|
||||||
|
float h_fov; // jvnpr -- Hardcoded hand FOV to prevent scaling with main renderer fov
|
||||||
public:
|
public:
|
||||||
GameRenderer(Minecraft *mc);
|
GameRenderer(Minecraft *mc);
|
||||||
~GameRenderer();
|
~GameRenderer();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue