Script v1.7.1.0
- AI
- Animals
- Contracts
- Debug
- Economy
- Effects
- Events
- Farms
- GUI
- Handtools
- I3d
- Materials
- Misc
- Objects
- Placeables
- Player
- Player
- PlayerModelManager
- PlayerPickUpObjectEvent
- PlayerSetFarmAnswerEvent
- PlayerSetFarmEvent
- PlayerSetHandToolEvent
- PlayerStateActivateObject
- PlayerStateAnimalFeed
- PlayerStateAnimalInteract
- PlayerStateAnimalPet
- PlayerStateAnimalRide
- PlayerStateBase
- PlayerStateCrouch
- PlayerStateCycleHandtool
- PlayerStateDrop
- PlayerStateFall
- PlayerStateIdle
- PlayerStateJump
- PlayerStateMachine
- PlayerStatePickup
- PlayerStateRun
- PlayerStateSwim
- PlayerStateThrow
- PlayerStateUseLight
- PlayerStateWalk
- PlayerStyle
- PlayerSwitchedFarmEvent
- PlayerTeleportEvent
- PlayerThrowObjectEvent
- PlayerToggleLightEvent
- Shop
- Sounds
- Specializations
- Triggers
- Utils
- Vehicles
- Weather
Engine v1.7.1.0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- XML
- general
Foundation Reference
PlayerStateCrouch
ParentPlayerStateBaseFunctions
deactivate
DescriptionDeactivate method. Player camera node translation is set.Definition
deactivate()Code
62 | function PlayerStateCrouch:deactivate() |
63 | PlayerStateCrouch:superClass().deactivate(self) |
64 | |
65 | setTranslation(self.player.cameraNode, 0.0, self.cameraY, 0.0) |
66 | end |
isAvailable
DescriptionCheck if state is available. Player cannot crouch while in waterDefinition
isAvailable()Return Values
bool | true | if player can crouch |
49 | function PlayerStateCrouch:isAvailable() |
50 | if self.player.baseInformation.isInWater then |
51 | return false |
52 | end |
53 | |
54 | if self.player:hasHandtoolEquipped() and self.player.baseInformation.currentHandtool:isBeingUsed() then |
55 | return false |
56 | end |
57 | return true |
58 | end |
moveCamera
DescriptionDefinitionmoveCamera()Code
112 | function PlayerStateCrouch:moveCamera(dt) |
113 | if self.progress == PlayerStateCrouch.PROGRESS_STATES.CROUCHING then |
114 | local dtInSec = dt * 0.001 |
115 | self.crouchFactor = math.min(1.0, self.crouchFactor + dtInSec / self.crouchTime) |
116 | elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.CROUCH then |
117 | elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.STANDING then |
118 | local dtInSec = dt * 0.001 |
119 | self.crouchFactor = math.max(0.0, self.crouchFactor - dtInSec / self.crouchTime) |
120 | elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.UP then |
121 | self:deactivate() |
122 | end |
123 | self.crouchCameraY = self.cameraY - self.crouchYOffset * self.crouchFactor |
124 | setTranslation(self.player.cameraNode, 0.0, self.crouchCameraY, 0.0) |
125 | end |
new
DescriptionCreating instance of state.Definition
new(table player, table stateMachine)Arguments
table | player | instance of player |
table | stateMachine | instance of the state machine manager |
table | instance | instance of object |
27 | function PlayerStateCrouch:new(player, stateMachine) |
28 | local self = PlayerStateBase:new(player, stateMachine, PlayerStateCrouch_mt) |
29 | |
30 | self.crouchTime = 0.25 -- in sec |
31 | self.crouchFactor = 0 |
32 | self.crouchYOffset = 0.8 |
33 | self.cameraY = 0.0 |
34 | self.crouchCameraY = 0.0 |
35 | self.progress = PlayerStateCrouch.PROGRESS_STATES.UP |
36 | self.toggleMode = false |
37 | return self |
38 | end |
processInput
DescriptionDefinitionprocessInput()Code
84 | function PlayerStateCrouch:processInput() |
85 | if self.player.baseInformation.currentHandtool == nil or self.player:hasHandtoolEquipped() and not self.player.baseInformation.currentHandtool:isBeingUsed() then |
86 | local crouchState = self.progress |
87 | local inputState = self.player.inputInformation.crouchState |
88 | |
89 | local isCrouching = crouchState == PlayerStateCrouch.PROGRESS_STATES.CROUCHING or crouchState == PlayerStateCrouch.PROGRESS_STATES.CROUCH |
90 | local isStanding = crouchState == PlayerStateCrouch.PROGRESS_STATES.STANDING or crouchState == PlayerStateCrouch.PROGRESS_STATES.UP |
91 | |
92 | if self.toggleMode then |
93 | if inputState == Player.BUTTONSTATES.PRESSED then |
94 | if isCrouching then |
95 | self.progress = PlayerStateCrouch.PROGRESS_STATES.STANDING |
96 | elseif isStanding then |
97 | self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCHING |
98 | end |
99 | end |
100 | else |
101 | if inputState == Player.BUTTONSTATES.PRESSED and isStanding then |
102 | self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCHING |
103 | elseif inputState == Player.BUTTONSTATES.RELEASED and isCrouching then |
104 | self.progress = PlayerStateCrouch.PROGRESS_STATES.STANDING |
105 | end |
106 | end |
107 | end |
108 | end |
update
DescriptionUpdate method. Slowly update camera Y position.Definition
update()Code
70 | function PlayerStateCrouch:update(dt) |
71 | -- print(string.format("-- [PlayerStateCrouch:update] toggle(%s) progress(%d) inputState(%d) factor(%.3f)", tostring(self.toggleMode), self.progress, self.player.inputInformation.crouchState, self.crouchFactor)) |
72 | self:processInput() |
73 | self:moveCamera(dt) |
74 | |
75 | if self.crouchFactor == 1.0 then |
76 | self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCH |
77 | elseif self.crouchFactor == 0.0 then |
78 | self.progress = PlayerStateCrouch.PROGRESS_STATES.UP |
79 | end |
80 | end |