fix top-down orbit; WASD on keyboard; softer cursor

This commit is contained in:
RallyBlock committed 2026-11-09 20:12:57 -05:00
1 parent 59c9fe33cc
commit cac917989f
1 file changed
+88 -11
+88 -11
View File
@@ -163,6 +163,10 @@ function RPGClient_EnsureCursor()
{
return;
}
if (Canvas.isCursorOn())
{
return;
}
lockMouse(0);
cursorOn();
}
@@ -211,6 +215,42 @@ function RPGClient_StartCameraTick()
$RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick);
}
function RPGClient_KeyMvForward(%val)
{
if (!$RPGClient::Active)
{
return;
}
$RPGClient::MvF = %val * $RunMultiplier;
}
function RPGClient_KeyMvBackward(%val)
{
if (!$RPGClient::Active)
{
return;
}
$RPGClient::MvB = %val * $RunMultiplier;
}
function RPGClient_KeyMvLeft(%val)
{
if (!$RPGClient::Active)
{
return;
}
$RPGClient::MvL = %val * $RunMultiplier;
}
function RPGClient_KeyMvRight(%val)
{
if (!$RPGClient::Active)
{
return;
}
$RPGClient::MvR = %val * $RunMultiplier;
}
function RPGClient_SendClickFromCursor(%button)
{
if (!$RPGClient::Active || !isObject(Canvas))
@@ -244,10 +284,23 @@ function RPGClient_EnableOverlay()
RPGClient_KeyMap.delete();
}
new ActionMap(RPGClient_KeyMap);
RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward);
RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward);
RPGClient_KeyMap.bind(keyboard, a, RPGClient_KeyMvLeft);
RPGClient_KeyMap.bind(keyboard, d, RPGClient_KeyMvRight);
RPGClient_KeyMap.bind(keyboard0, w, RPGClient_KeyMvForward);
RPGClient_KeyMap.bind(keyboard0, s, RPGClient_KeyMvBackward);
RPGClient_KeyMap.bind(keyboard0, a, RPGClient_KeyMvLeft);
RPGClient_KeyMap.bind(keyboard0, d, RPGClient_KeyMvRight);
RPGClient_KeyMap.bind(keyboard, left, RPGClient_YawLeft);
RPGClient_KeyMap.bind(keyboard, right, RPGClient_YawRight);
RPGClient_KeyMap.bind(keyboard0, left, RPGClient_YawLeft);
RPGClient_KeyMap.bind(keyboard0, right, RPGClient_YawRight);
RPGClient_KeyMap.bind(keyboard, equals, RPGClient_ZoomIn);
RPGClient_KeyMap.bind(keyboard, minus, RPGClient_ZoomOut);
RPGClient_KeyMap.bind(keyboard0, equals, RPGClient_ZoomIn);
RPGClient_KeyMap.bind(keyboard0, minus, RPGClient_ZoomOut);
RPGClient_KeyMap.bind(keyboard, m, RPGClient_ToggleCursor);
RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor);
RPGClient_KeyMap.push();
$mvFreeLook = 0;
@@ -330,9 +383,11 @@ function RPGClient_ApplyCamera(%forceSync)
$mvRightAction = 0;
%cam.unmountImage(0);
%xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY);
%cam.setFlyMode();
%cam.setTransform(%xfm);
%cam.mode = "Fly";
%cam.setMode("Corpse", %body);
%cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist);
%cam.mode = "Corpse";
%cam.thirdPersonOnly = 1;
%now = getSimTime();
if (%forceSync || %now - $RPGClient::LastCamSync > 120)
{
@@ -718,15 +773,6 @@ activatePackage(RPGClient_MoveMap);
package RPGClient_Cursor
{
function GuiCanvas::checkCursor(%this)
{
Parent::checkCursor(%this);
if ($RPGClient::Active)
{
RPGClient_EnsureCursor();
}
}
function escapeMenu::toggle(%this)
{
if (%this.isAwake())
@@ -748,6 +794,37 @@ package RPGClient_Cursor
};
activatePackage(RPGClient_Cursor);
package RPGClient_ViewLock
{
function toggleFirstPerson(%val)
{
if ($RPGClient::Active)
{
return;
}
Parent::toggleFirstPerson(%val);
}
function toggleFreeLook(%val)
{
if ($RPGClient::Active)
{
return;
}
Parent::toggleFreeLook(%val);
}
function dropCameraAtPlayer(%val)
{
if ($RPGClient::Active)
{
return;
}
Parent::dropCameraAtPlayer(%val);
}
};
activatePackage(RPGClient_ViewLock);
package RPGClient_Cleanup
{
function disconnectedCleanup(%doReconnect)