feat: Add Holdable option to InputKeyMapList #648
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request adds support for tracking and configuring "holdable" inputs in the input key mapping system. The main change is the introduction of a new
HoldableInputModelclass, which provides observable hold state and timing logic for inputs that require being held down. Additionally, the input key map list now supports options and methods for configuring and querying holdable behavior and maximum hold durations.New model for holdable input logic:
HoldableInputModelclass inHoldableInputModel.lua, which tracks input hold state, manages hold timing, and exposes signals and observables for hold progress and release events.Input key map list enhancements:
InputKeyMapListOptionstype to include optionalholdableandmaxHoldDurationfields, allowing configuration of holdable inputs and their maximum hold durations.InputKeyMapListfor querying and observing whether an input is holdable (IsHoldable,ObserveIsHoldable) and for getting/observing the maximum hold duration (GetMaxHoldDuration,ObserveMaxHoldDuration).📦 Published PR as canary version:
Canary Versions✨ Test out this PR locally via:
npm install @quenty/actionmanager@13.27.2-canary.648.7c77d1f.0 npm install @quenty/adorneeboundingbox@8.30.3-canary.648.7c77d1f.0 npm install @quenty/adorneedata@7.28.2-canary.648.7c77d1f.0 npm install @quenty/adorneevalue@10.29.3-canary.648.7c77d1f.0 npm install @quenty/aggregator@1.10.2-canary.648.7c77d1f.0 npm install @quenty/animationprovider@11.29.3-canary.648.7c77d1f.0 npm install @quenty/animations@8.26.2-canary.648.7c77d1f.0 npm install @quenty/assetserviceutils@5.26.2-canary.648.7c77d1f.0 npm install @quenty/attributeutils@14.24.2-canary.648.7c77d1f.0 npm install @quenty/avatareditorutils@7.31.3-canary.648.7c77d1f.0 npm install @quenty/basicpane@13.25.2-canary.648.7c77d1f.0 npm install @quenty/binder@14.29.2-canary.648.7c77d1f.0 npm install @quenty/bindtocloseservice@8.25.2-canary.648.7c77d1f.0 npm install @quenty/blend@12.28.3-canary.648.7c77d1f.0 npm install @quenty/bodycolorsutils@7.28.3-canary.648.7c77d1f.0 npm install @quenty/boundlinkutils@14.30.2-canary.648.7c77d1f.0 npm install @quenty/brio@14.24.2-canary.648.7c77d1f.0 npm install @quenty/buttondragmodel@1.24.2-canary.648.7c77d1f.0 npm install @quenty/buttonhighlightmodel@14.28.3-canary.648.7c77d1f.0 npm install @quenty/camera@14.32.3-canary.648.7c77d1f.0 npm install @quenty/camerastoryutils@10.13.2-canary.648.7c77d1f.0 npm install @quenty/canceltoken@11.14.2-canary.648.7c77d1f.0 npm install @quenty/characterutils@12.26.2-canary.648.7c77d1f.0 npm install @quenty/chatproviderservice@9.41.3-canary.648.7c77d1f.0 npm install @quenty/clienttranslator@14.29.3-canary.648.7c77d1f.0 npm install @quenty/clipcharacters@12.32.2-canary.648.7c77d1f.0 npm install @quenty/cmdrservice@13.35.3-canary.648.7c77d1f.0 npm install @quenty/collectionserviceutils@8.25.2-canary.648.7c77d1f.0 npm install @quenty/color3utils@11.28.3-canary.648.7c77d1f.0 npm install @quenty/colorpalette@10.31.3-canary.648.7c77d1f.0 npm install @quenty/colorpicker@10.29.3-canary.648.7c77d1f.0 npm install @quenty/conditions@10.33.2-canary.648.7c77d1f.0 npm install @quenty/contentproviderutils@12.25.2-canary.648.7c77d1f.0 npm install @quenty/cooldown@11.31.2-canary.648.7c77d1f.0 npm install @quenty/coreguienabler@12.27.2-canary.648.7c77d1f.0 npm install @quenty/counter@7.25.2-canary.648.7c77d1f.0 npm install @quenty/datastore@13.31.2-canary.648.7c77d1f.0 npm install @quenty/deathreport@10.36.2-canary.648.7c77d1f.0 npm install @quenty/depthoffield@11.30.3-canary.648.7c77d1f.0 npm install @quenty/elo@7.29.3-canary.648.7c77d1f.0 npm install @quenty/enabledmixin@11.20.2-canary.648.7c77d1f.0 npm install @quenty/equippedtracker@13.27.2-canary.648.7c77d1f.0 npm install @quenty/firstpersoncharactertransparency@14.27.2-canary.648.7c77d1f.0 npm install @quenty/flipbook@9.25.3-canary.648.7c77d1f.0 npm install @quenty/friendutils@12.24.2-canary.648.7c77d1f.0 npm install @quenty/funnels@1.17.2-canary.648.7c77d1f.0 npm install @quenty/gameconfig@12.39.3-canary.648.7c77d1f.0 npm install @quenty/gameproductservice@14.41.3-canary.648.7c77d1f.0 npm install @quenty/gamescalingutils@13.28.3-canary.648.7c77d1f.0 npm install @quenty/genericscreenguiprovider@13.31.3-canary.648.7c77d1f.0 npm install @quenty/guivisiblemanager@12.17.2-canary.648.7c77d1f.0 npm install @quenty/hide@11.31.3-canary.648.7c77d1f.0 npm install @quenty/highlight@10.32.3-canary.648.7c77d1f.0 npm install @quenty/hintscoringutils@14.33.3-canary.648.7c77d1f.0 npm install @quenty/humanoidspeed@12.39.3-canary.648.7c77d1f.0 npm install @quenty/humanoidtracker@13.25.2-canary.648.7c77d1f.0 npm install @quenty/humanoidutils@2.7.2-canary.648.7c77d1f.0 npm install @quenty/idleservice@13.41.3-canary.648.7c77d1f.0 npm install @quenty/ik@15.42.3-canary.648.7c77d1f.0 npm install @quenty/influxdbclient@7.28.2-canary.648.7c77d1f.0 npm install @quenty/inputkeymaputils@14.34.3-canary.648.7c77d1f.0 npm install @quenty/inputmode@13.27.2-canary.648.7c77d1f.0 npm install @quenty/inputobjectutils@4.24.2-canary.648.7c77d1f.0 npm install @quenty/instanceutils@13.24.2-canary.648.7c77d1f.0 npm install @quenty/linkutils@13.24.2-canary.648.7c77d1f.0 npm install @quenty/lipsum@14.28.3-canary.648.7c77d1f.0 npm install @quenty/localizedtextutils@12.24.2-canary.648.7c77d1f.0 npm install @quenty/messagingserviceutils@7.15.2-canary.648.7c77d1f.0 npm install @quenty/motor6d@7.35.2-canary.648.7c77d1f.0 npm install @quenty/multipleclickutils@13.23.2-canary.648.7c77d1f.0 npm install @quenty/observablecollection@12.30.3-canary.648.7c77d1f.0 npm install @quenty/particleengine@13.26.2-canary.648.7c77d1f.0 npm install @quenty/parttouchingcalculator@14.33.2-canary.648.7c77d1f.0 npm install @quenty/permissionprovider@14.30.2-canary.648.7c77d1f.0 npm install @quenty/physicsutils@8.23.2-canary.648.7c77d1f.0 npm install @quenty/playerbinder@14.29.2-canary.648.7c77d1f.0 npm install @quenty/playerhumanoidbinder@14.30.2-canary.648.7c77d1f.0 npm install @quenty/playerinputmode@9.31.2-canary.648.7c77d1f.0 npm install @quenty/playerutils@8.26.2-canary.648.7c77d1f.0 npm install @quenty/promptqueue@1.29.3-canary.648.7c77d1f.0 npm install @quenty/propertyvalue@7.24.2-canary.648.7c77d1f.0 npm install @quenty/qframe@10.14.2-canary.648.7c77d1f.0 npm install @quenty/r15utils@13.25.2-canary.648.7c77d1f.0 npm install @quenty/racketingropeconstraint@12.35.2-canary.648.7c77d1f.0 npm install @quenty/radial-image@9.29.3-canary.648.7c77d1f.0 npm install @quenty/ragdoll@15.41.3-canary.648.7c77d1f.0 npm install @quenty/receiptprocessing@7.27.2-canary.648.7c77d1f.0 npm install @quenty/remoting@12.26.2-canary.648.7c77d1f.0 npm install @quenty/resetservice@11.30.2-canary.648.7c77d1f.0 npm install @quenty/rigbuilderutils@10.26.3-canary.648.7c77d1f.0 npm install @quenty/rogue-humanoid@10.39.3-canary.648.7c77d1f.0 npm install @quenty/rogue-properties@11.37.3-canary.648.7c77d1f.0 npm install @quenty/rx@13.23.2-canary.648.7c77d1f.0 npm install @quenty/rxbinderutils@14.29.2-canary.648.7c77d1f.0 npm install @quenty/rxsignal@7.23.2-canary.648.7c77d1f.0 npm install @quenty/scoredactionservice@16.35.3-canary.648.7c77d1f.0 npm install @quenty/screenshothudservice@7.27.2-canary.648.7c77d1f.0 npm install @quenty/seatutils@7.28.2-canary.648.7c77d1f.0 npm install @quenty/secrets@7.39.3-canary.648.7c77d1f.0 npm install @quenty/selectionutils@8.25.2-canary.648.7c77d1f.0 npm install @quenty/settings@11.42.3-canary.648.7c77d1f.0 npm install @quenty/settings-inputkeymap@10.44.3-canary.648.7c77d1f.0 npm install @quenty/snackbar@11.33.3-canary.648.7c77d1f.0 npm install @quenty/softshutdown@9.38.3-canary.648.7c77d1f.0 npm install @quenty/soundgroup@1.32.3-canary.648.7c77d1f.0 npm install @quenty/soundplayer@7.31.4-canary.648.7c77d1f.0 npm install @quenty/spawning@10.37.3-canary.648.7c77d1f.0 npm install @quenty/sprites@13.23.3-canary.648.7c77d1f.0 npm install @quenty/statestack@14.26.2-canary.648.7c77d1f.0 npm install @quenty/teamtracker@13.25.2-canary.648.7c77d1f.0 npm install @quenty/teamutils@10.25.2-canary.648.7c77d1f.0 npm install @quenty/teleportserviceutils@9.25.2-canary.648.7c77d1f.0 npm install @quenty/templateprovider@11.29.3-canary.648.7c77d1f.0 npm install @quenty/textboxutils@7.23.2-canary.648.7c77d1f.0 npm install @quenty/textfilterservice@13.26.2-canary.648.7c77d1f.0 npm install @quenty/textserviceutils@13.28.3-canary.648.7c77d1f.0 npm install @quenty/tie@10.33.2-canary.648.7c77d1f.0 npm install @quenty/timedtween@7.28.3-canary.648.7c77d1f.0 npm install @quenty/timesyncservice@13.27.2-canary.648.7c77d1f.0 npm install @quenty/toolutils@1.10.2-canary.648.7c77d1f.0 npm install @quenty/transitionmodel@7.30.3-canary.648.7c77d1f.0 npm install @quenty/ugcsanitize@1.11.2-canary.648.7c77d1f.0 npm install @quenty/uiobjectutils@6.23.3-canary.648.7c77d1f.0 npm install @quenty/undostack@7.25.2-canary.648.7c77d1f.0 npm install @quenty/userserviceutils@9.25.2-canary.648.7c77d1f.0 npm install @quenty/valuebaseutils@13.24.2-canary.648.7c77d1f.0 npm install @quenty/valueobject@13.25.2-canary.648.7c77d1f.0 npm install @quenty/viewport@11.33.3-canary.648.7c77d1f.0 npm install @quenty/nevermore-cli@4.15.3-canary.648.7c77d1f.0 npm install @quenty/nevermore-template-helpers@1.5.2-canary.648.7c77d1f.0 # or yarn add @quenty/actionmanager@13.27.2-canary.648.7c77d1f.0 yarn add @quenty/adorneeboundingbox@8.30.3-canary.648.7c77d1f.0 yarn add @quenty/adorneedata@7.28.2-canary.648.7c77d1f.0 yarn add @quenty/adorneevalue@10.29.3-canary.648.7c77d1f.0 yarn add @quenty/aggregator@1.10.2-canary.648.7c77d1f.0 yarn add @quenty/animationprovider@11.29.3-canary.648.7c77d1f.0 yarn add @quenty/animations@8.26.2-canary.648.7c77d1f.0 yarn add @quenty/assetserviceutils@5.26.2-canary.648.7c77d1f.0 yarn add @quenty/attributeutils@14.24.2-canary.648.7c77d1f.0 yarn add @quenty/avatareditorutils@7.31.3-canary.648.7c77d1f.0 yarn add @quenty/basicpane@13.25.2-canary.648.7c77d1f.0 yarn add @quenty/binder@14.29.2-canary.648.7c77d1f.0 yarn add @quenty/bindtocloseservice@8.25.2-canary.648.7c77d1f.0 yarn add @quenty/blend@12.28.3-canary.648.7c77d1f.0 yarn add @quenty/bodycolorsutils@7.28.3-canary.648.7c77d1f.0 yarn add @quenty/boundlinkutils@14.30.2-canary.648.7c77d1f.0 yarn add @quenty/brio@14.24.2-canary.648.7c77d1f.0 yarn add @quenty/buttondragmodel@1.24.2-canary.648.7c77d1f.0 yarn add @quenty/buttonhighlightmodel@14.28.3-canary.648.7c77d1f.0 yarn add @quenty/camera@14.32.3-canary.648.7c77d1f.0 yarn add @quenty/camerastoryutils@10.13.2-canary.648.7c77d1f.0 yarn add @quenty/canceltoken@11.14.2-canary.648.7c77d1f.0 yarn add @quenty/characterutils@12.26.2-canary.648.7c77d1f.0 yarn add @quenty/chatproviderservice@9.41.3-canary.648.7c77d1f.0 yarn add @quenty/clienttranslator@14.29.3-canary.648.7c77d1f.0 yarn add @quenty/clipcharacters@12.32.2-canary.648.7c77d1f.0 yarn add @quenty/cmdrservice@13.35.3-canary.648.7c77d1f.0 yarn add @quenty/collectionserviceutils@8.25.2-canary.648.7c77d1f.0 yarn add @quenty/color3utils@11.28.3-canary.648.7c77d1f.0 yarn add @quenty/colorpalette@10.31.3-canary.648.7c77d1f.0 yarn add @quenty/colorpicker@10.29.3-canary.648.7c77d1f.0 yarn add @quenty/conditions@10.33.2-canary.648.7c77d1f.0 yarn add @quenty/contentproviderutils@12.25.2-canary.648.7c77d1f.0 yarn add @quenty/cooldown@11.31.2-canary.648.7c77d1f.0 yarn add @quenty/coreguienabler@12.27.2-canary.648.7c77d1f.0 yarn add @quenty/counter@7.25.2-canary.648.7c77d1f.0 yarn add @quenty/datastore@13.31.2-canary.648.7c77d1f.0 yarn add @quenty/deathreport@10.36.2-canary.648.7c77d1f.0 yarn add @quenty/depthoffield@11.30.3-canary.648.7c77d1f.0 yarn add @quenty/elo@7.29.3-canary.648.7c77d1f.0 yarn add @quenty/enabledmixin@11.20.2-canary.648.7c77d1f.0 yarn add @quenty/equippedtracker@13.27.2-canary.648.7c77d1f.0 yarn add @quenty/firstpersoncharactertransparency@14.27.2-canary.648.7c77d1f.0 yarn add @quenty/flipbook@9.25.3-canary.648.7c77d1f.0 yarn add @quenty/friendutils@12.24.2-canary.648.7c77d1f.0 yarn add @quenty/funnels@1.17.2-canary.648.7c77d1f.0 yarn add @quenty/gameconfig@12.39.3-canary.648.7c77d1f.0 yarn add @quenty/gameproductservice@14.41.3-canary.648.7c77d1f.0 yarn add @quenty/gamescalingutils@13.28.3-canary.648.7c77d1f.0 yarn add @quenty/genericscreenguiprovider@13.31.3-canary.648.7c77d1f.0 yarn add @quenty/guivisiblemanager@12.17.2-canary.648.7c77d1f.0 yarn add @quenty/hide@11.31.3-canary.648.7c77d1f.0 yarn add @quenty/highlight@10.32.3-canary.648.7c77d1f.0 yarn add @quenty/hintscoringutils@14.33.3-canary.648.7c77d1f.0 yarn add @quenty/humanoidspeed@12.39.3-canary.648.7c77d1f.0 yarn add @quenty/humanoidtracker@13.25.2-canary.648.7c77d1f.0 yarn add @quenty/humanoidutils@2.7.2-canary.648.7c77d1f.0 yarn add @quenty/idleservice@13.41.3-canary.648.7c77d1f.0 yarn add @quenty/ik@15.42.3-canary.648.7c77d1f.0 yarn add @quenty/influxdbclient@7.28.2-canary.648.7c77d1f.0 yarn add @quenty/inputkeymaputils@14.34.3-canary.648.7c77d1f.0 yarn add @quenty/inputmode@13.27.2-canary.648.7c77d1f.0 yarn add @quenty/inputobjectutils@4.24.2-canary.648.7c77d1f.0 yarn add @quenty/instanceutils@13.24.2-canary.648.7c77d1f.0 yarn add @quenty/linkutils@13.24.2-canary.648.7c77d1f.0 yarn add @quenty/lipsum@14.28.3-canary.648.7c77d1f.0 yarn add @quenty/localizedtextutils@12.24.2-canary.648.7c77d1f.0 yarn add @quenty/messagingserviceutils@7.15.2-canary.648.7c77d1f.0 yarn add @quenty/motor6d@7.35.2-canary.648.7c77d1f.0 yarn add @quenty/multipleclickutils@13.23.2-canary.648.7c77d1f.0 yarn add @quenty/observablecollection@12.30.3-canary.648.7c77d1f.0 yarn add @quenty/particleengine@13.26.2-canary.648.7c77d1f.0 yarn add @quenty/parttouchingcalculator@14.33.2-canary.648.7c77d1f.0 yarn add @quenty/permissionprovider@14.30.2-canary.648.7c77d1f.0 yarn add @quenty/physicsutils@8.23.2-canary.648.7c77d1f.0 yarn add @quenty/playerbinder@14.29.2-canary.648.7c77d1f.0 yarn add @quenty/playerhumanoidbinder@14.30.2-canary.648.7c77d1f.0 yarn add @quenty/playerinputmode@9.31.2-canary.648.7c77d1f.0 yarn add @quenty/playerutils@8.26.2-canary.648.7c77d1f.0 yarn add @quenty/promptqueue@1.29.3-canary.648.7c77d1f.0 yarn add @quenty/propertyvalue@7.24.2-canary.648.7c77d1f.0 yarn add @quenty/qframe@10.14.2-canary.648.7c77d1f.0 yarn add @quenty/r15utils@13.25.2-canary.648.7c77d1f.0 yarn add @quenty/racketingropeconstraint@12.35.2-canary.648.7c77d1f.0 yarn add @quenty/radial-image@9.29.3-canary.648.7c77d1f.0 yarn add @quenty/ragdoll@15.41.3-canary.648.7c77d1f.0 yarn add @quenty/receiptprocessing@7.27.2-canary.648.7c77d1f.0 yarn add @quenty/remoting@12.26.2-canary.648.7c77d1f.0 yarn add @quenty/resetservice@11.30.2-canary.648.7c77d1f.0 yarn add @quenty/rigbuilderutils@10.26.3-canary.648.7c77d1f.0 yarn add @quenty/rogue-humanoid@10.39.3-canary.648.7c77d1f.0 yarn add @quenty/rogue-properties@11.37.3-canary.648.7c77d1f.0 yarn add @quenty/rx@13.23.2-canary.648.7c77d1f.0 yarn add @quenty/rxbinderutils@14.29.2-canary.648.7c77d1f.0 yarn add @quenty/rxsignal@7.23.2-canary.648.7c77d1f.0 yarn add @quenty/scoredactionservice@16.35.3-canary.648.7c77d1f.0 yarn add @quenty/screenshothudservice@7.27.2-canary.648.7c77d1f.0 yarn add @quenty/seatutils@7.28.2-canary.648.7c77d1f.0 yarn add @quenty/secrets@7.39.3-canary.648.7c77d1f.0 yarn add @quenty/selectionutils@8.25.2-canary.648.7c77d1f.0 yarn add @quenty/settings@11.42.3-canary.648.7c77d1f.0 yarn add @quenty/settings-inputkeymap@10.44.3-canary.648.7c77d1f.0 yarn add @quenty/snackbar@11.33.3-canary.648.7c77d1f.0 yarn add @quenty/softshutdown@9.38.3-canary.648.7c77d1f.0 yarn add @quenty/soundgroup@1.32.3-canary.648.7c77d1f.0 yarn add @quenty/soundplayer@7.31.4-canary.648.7c77d1f.0 yarn add @quenty/spawning@10.37.3-canary.648.7c77d1f.0 yarn add @quenty/sprites@13.23.3-canary.648.7c77d1f.0 yarn add @quenty/statestack@14.26.2-canary.648.7c77d1f.0 yarn add @quenty/teamtracker@13.25.2-canary.648.7c77d1f.0 yarn add @quenty/teamutils@10.25.2-canary.648.7c77d1f.0 yarn add @quenty/teleportserviceutils@9.25.2-canary.648.7c77d1f.0 yarn add @quenty/templateprovider@11.29.3-canary.648.7c77d1f.0 yarn add @quenty/textboxutils@7.23.2-canary.648.7c77d1f.0 yarn add @quenty/textfilterservice@13.26.2-canary.648.7c77d1f.0 yarn add @quenty/textserviceutils@13.28.3-canary.648.7c77d1f.0 yarn add @quenty/tie@10.33.2-canary.648.7c77d1f.0 yarn add @quenty/timedtween@7.28.3-canary.648.7c77d1f.0 yarn add @quenty/timesyncservice@13.27.2-canary.648.7c77d1f.0 yarn add @quenty/toolutils@1.10.2-canary.648.7c77d1f.0 yarn add @quenty/transitionmodel@7.30.3-canary.648.7c77d1f.0 yarn add @quenty/ugcsanitize@1.11.2-canary.648.7c77d1f.0 yarn add @quenty/uiobjectutils@6.23.3-canary.648.7c77d1f.0 yarn add @quenty/undostack@7.25.2-canary.648.7c77d1f.0 yarn add @quenty/userserviceutils@9.25.2-canary.648.7c77d1f.0 yarn add @quenty/valuebaseutils@13.24.2-canary.648.7c77d1f.0 yarn add @quenty/valueobject@13.25.2-canary.648.7c77d1f.0 yarn add @quenty/viewport@11.33.3-canary.648.7c77d1f.0 yarn add @quenty/nevermore-cli@4.15.3-canary.648.7c77d1f.0 yarn add @quenty/nevermore-template-helpers@1.5.2-canary.648.7c77d1f.0