mirror of
https://github.com/Kapendev/parin.git
synced 2025-04-25 20:49:57 +03:00
Faster mouse and sound stuff.
This commit is contained in:
parent
f21a8f8f32
commit
798b792e83
3 changed files with 26 additions and 20 deletions
|
@ -148,8 +148,8 @@ int runDubSetup(string[] args, bool isFirstRun) {
|
|||
if (hasDubLockFileNow != dubLockFile.isX) rm(dubLockFile);
|
||||
// Remove the backup copies if something failed.
|
||||
if (dub1 || dub2) {
|
||||
restore(dubFile, true);
|
||||
restore(dubLockFile, true);
|
||||
restore(dubFile);
|
||||
restore(dubLockFile);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -599,6 +599,11 @@ struct SoundId {
|
|||
getOr().setPan(value);
|
||||
}
|
||||
|
||||
/// Sets the looping mode for the sound associated with the resource identifier.
|
||||
void setIsLooping(bool value) {
|
||||
if (isValid) get().isLooping = value;
|
||||
}
|
||||
|
||||
/// Checks if the resource identifier is valid. It becomes automatically invalid when the resource is freed.
|
||||
bool isValid() {
|
||||
return data.value && engineState.sounds.has(GenerationalIndex(data.value - 1, data.generation));
|
||||
|
@ -893,6 +898,7 @@ struct EngineState {
|
|||
EngineFlags flags;
|
||||
EngineFullscreenState fullscreenState;
|
||||
EngineViewportInfo viewportInfoBuffer;
|
||||
Vec2 mouseBuffer;
|
||||
|
||||
Sz tickCount;
|
||||
Color borderColor;
|
||||
|
@ -1332,6 +1338,16 @@ void updateWindow(bool function(float dt) updateFunc) {
|
|||
engineState.droppedFilePathsBuffer.append(list.paths[i].toStr());
|
||||
}
|
||||
}
|
||||
if (isResolutionLocked) {
|
||||
auto rlMouse = rl.GetTouchPosition(0);
|
||||
auto info = engineViewportInfo;
|
||||
engineState.mouseBuffer = Vec2(
|
||||
(rlMouse.x - (info.maxSize.x - info.area.size.x) * 0.5f) / info.minRatio,
|
||||
(rlMouse.y - (info.maxSize.y - info.area.size.y) * 0.5f) / info.minRatio,
|
||||
);
|
||||
} else {
|
||||
engineState.mouseBuffer = rl.GetTouchPosition(0).toParin();
|
||||
}
|
||||
auto dt = deltaTime;
|
||||
auto result = __updateFunc(dt);
|
||||
engineState.tickCount = (engineState.tickCount + 1) % engineState.tickCount.max;
|
||||
|
@ -1724,17 +1740,7 @@ Vec2 resolution() {
|
|||
/// Returns the current position of the mouse on the screen.
|
||||
@trusted
|
||||
Vec2 mouse() {
|
||||
// Touch works on desktop, web and mobile.
|
||||
auto rlMouse = rl.GetTouchPosition(0);
|
||||
if (isResolutionLocked) {
|
||||
auto info = engineViewportInfo;
|
||||
return Vec2(
|
||||
(rlMouse.x - (info.maxSize.x - info.area.size.x) * 0.5f) / info.minRatio,
|
||||
(rlMouse.y - (info.maxSize.y - info.area.size.y) * 0.5f) / info.minRatio,
|
||||
);
|
||||
} else {
|
||||
return rlMouse.toParin();
|
||||
}
|
||||
return engineState.mouseBuffer;
|
||||
}
|
||||
|
||||
/// Returns the current frames per second (FPS).
|
||||
|
@ -2436,7 +2442,6 @@ mixin template runGame(alias readyFunc, alias updateFunc, alias finishFunc, int
|
|||
Sz length = 0;
|
||||
while (argv[i][length] != '\0') length += 1;
|
||||
engineState.envArgsBuffer.append(argv[i][0 .. length]);
|
||||
|
||||
}
|
||||
engineState.assetsPath.append(pathConcat(engineState.envArgsBuffer[0].pathDir, "assets"));
|
||||
readyFunc();
|
||||
|
|
|
@ -82,6 +82,7 @@ struct UiState {
|
|||
Vec2 viewportSize;
|
||||
Vec2 viewportScale = Vec2(1.0f);
|
||||
|
||||
Vec2 mouseBuffer;
|
||||
Vec2 mousePressedPosition;
|
||||
Vec2 itemDragOffset;
|
||||
short itemId;
|
||||
|
@ -133,12 +134,7 @@ void prepareUi() {
|
|||
}
|
||||
|
||||
Vec2 uiMouse() {
|
||||
auto result = (mouse - uiState.viewportPosition) / uiState.viewportScale;
|
||||
if (result.x < 0) result.x = -100000.0f;
|
||||
else if (result.x > uiState.viewportSize.x) result.x = 100000.0f;
|
||||
if (result.y < 0) result.y = -100000.0f;
|
||||
else if (result.y > uiState.viewportSize.y) result.y = 100000.0f;
|
||||
return result;
|
||||
return uiState.mouseBuffer;
|
||||
}
|
||||
|
||||
void setUiClickAction(Mouse value) {
|
||||
|
@ -168,6 +164,11 @@ void setUiViewportState(Vec2 position, Vec2 size, Vec2 scale) {
|
|||
if (uiState.mouseClickAction.isPressed) {
|
||||
uiState.mousePressedPosition = uiMouse;
|
||||
}
|
||||
uiState.mouseBuffer = (mouse - position) / scale;
|
||||
if (uiState.mouseBuffer.x < 0) uiState.mouseBuffer.x = -100000.0f;
|
||||
else if (uiState.mouseBuffer.x > size.x) uiState.mouseBuffer.x = 100000.0f;
|
||||
if (uiState.mouseBuffer.y < 0) uiState.mouseBuffer.y = -100000.0f;
|
||||
else if (uiState.mouseBuffer.y > size.y) uiState.mouseBuffer.y = 100000.0f;
|
||||
}
|
||||
|
||||
short uiItemId() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue