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_RenderDistance,16);
|
||||
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
|
||||
if(Minecraft::GetInstance()->level==NULL)
|
||||
|
|
@ -1406,8 +1406,9 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
|
|||
case eGameSetting_FOV:
|
||||
if(iPad==ProfileManager.GetPrimaryPad())
|
||||
{
|
||||
float fovDeg = 70.0f + (float)GameSettingsA[iPad]->ucFov * 40.0f / 100.0f;
|
||||
pMinecraft->gameRenderer->SetFovVal(fovDeg);
|
||||
float simulatedFovDeg = 30.0f + (float)GameSettingsA[iPad]->ucFov * 80.0f / 100.0f; // jvnpr -- convert 0-80 to 30-110
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ UIScene_DebugOverlay::UIScene_DebugOverlay(int iPad, void *initData, UILayer *pa
|
|||
|
||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||
WCHAR TempString[256];
|
||||
int fovSliderVal = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
||||
int fovDeg = 70 + fovSliderVal * 40 / 100;
|
||||
int fovSliderVal = app.GetGameSettings(m_iPad, eGameSetting_FOV) * 80.0f / 100.0f;
|
||||
int fovDeg = 30 + fovSliderVal * 80 / 100;
|
||||
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;
|
||||
swprintf( (WCHAR *)TempString, 256, L"Set time (unsafe) (%d)", (int)currentTime);
|
||||
|
|
@ -274,16 +274,17 @@ void UIScene_DebugOverlay::handleSliderMove(F64 sliderId, F64 currentValue)
|
|||
break;
|
||||
case eControl_FOV:
|
||||
{
|
||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||
int v = (int)currentValue;
|
||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||
if (v < 0) v = 0;
|
||||
if (v > 100) v = 100;
|
||||
int fovDeg = 70 + v * 40 / 100;
|
||||
pMinecraft->gameRenderer->SetFovVal((float)fovDeg);
|
||||
app.SetGameSettings(m_iPad, eGameSetting_FOV, v);
|
||||
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"Set fov (%d)", fovDeg);
|
||||
swprintf( (WCHAR *)TempString, 256, L"FOV: %d (True: %d)", simulatedFovDeg, (int)trueFovDeg);
|
||||
m_sliderFov.setLabel(TempString);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@
|
|||
|
||||
namespace
|
||||
{
|
||||
/*
|
||||
|
||||
jvnpr -- commented out this code from the kbm refactor to modify fov system :p
|
||||
|
||||
const int FOV_MIN = 70;
|
||||
const int FOV_MAX = 110;
|
||||
const int FOV_SLIDER_MAX = 100;
|
||||
|
|
@ -30,6 +34,8 @@ namespace
|
|||
if (sliderValue > FOV_SLIDER_MAX) sliderValue = FOV_SLIDER_MAX;
|
||||
return FOV_MIN + ((sliderValue * (FOV_MAX - FOV_MIN)) / FOV_SLIDER_MAX);
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
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));
|
||||
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));
|
||||
|
||||
int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
||||
int initialFovDeg = sliderValueToFov(initialFovSlider);
|
||||
swprintf((WCHAR*)TempString, 256, L"FOV: %d", initialFovDeg);
|
||||
m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, initialFovSlider);
|
||||
//int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV);
|
||||
//int initialFovDeg = sliderValueToFov(initialFovSlider);
|
||||
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, 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));
|
||||
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;
|
||||
|
||||
case eControl_FOV:
|
||||
{
|
||||
{ /* jvnpr -- commented code from keyboard mouse refactor
|
||||
m_sliderFOV.handleSliderMove(value);
|
||||
int fovVal = value + 30;
|
||||
Minecraft* pMinecraft = Minecraft::GetInstance();
|
||||
int fovValue = sliderValueToFov(value);
|
||||
pMinecraft->gameRenderer->SetFovVal((float)fovValue);
|
||||
app.SetGameSettings(m_iPad, eGameSetting_FOV, value);
|
||||
//int fovValue = sliderValueToFov(value);
|
||||
pMinecraft->gameRenderer->SetFovVal((float)fovVal);
|
||||
app.SetGameSettings(m_iPad, eGameSetting_FOV, fovVal);
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@ GameRenderer::GameRenderer(Minecraft *mc)
|
|||
|
||||
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
|
||||
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
|
||||
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)
|
||||
{
|
||||
glTranslatef((float) zoom_x, (float) -zoom_y, 0);
|
||||
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())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@ private:
|
|||
bool isInClouds;
|
||||
|
||||
float m_fov;
|
||||
|
||||
float h_fov; // jvnpr -- Hardcoded hand FOV to prevent scaling with main renderer fov
|
||||
public:
|
||||
GameRenderer(Minecraft *mc);
|
||||
~GameRenderer();
|
||||
|
|
|
|||
Loading…
Reference in a new issue