Merge pull request 'elytra_animation_fix' (#2805) from elytra_animation_fix into master

Reviewed-on: MineClone2/MineClone2#2805
Reviewed-by: cora <cora@noreply.git.minetest.land>
This commit is contained in:
cora 2022-10-17 10:02:08 +00:00
commit 4e4bd8f978
2 changed files with 9 additions and 2 deletions

View File

@ -91,7 +91,7 @@ local function update_player_textures(player)
end
player:set_properties({ textures = textures })
-- Delay calling the callbacks because mods (including mcl_player)
-- need to fully initialize player data from minetest.register_on_joinplayer
-- before callbacks run
@ -234,6 +234,8 @@ minetest.register_globalstep(function(dtime)
-- Apply animations based on what the player is doing
if player:get_hp() == 0 then
player_set_animation(player, "die")
elseif mcl_playerplus.elytra[player] and mcl_playerplus.elytra[player].active then
player_set_animation(player, "stand")
elseif walking and velocity.x > 0.35
or walking and velocity.x < -0.35
or walking and velocity.z > 0.35

View File

@ -196,6 +196,10 @@ minetest.register_globalstep(function(dtime)
elytra.speed = 0
end
if not elytra.last_yaw then
elytra.last_yaw = player:get_look_horizontal()
end
local is_just_jumped = control.jump and not mcl_playerplus.is_pressing_jump[name] and not elytra.active
mcl_playerplus.is_pressing_jump[name] = control.jump
if is_just_jumped and not elytra.active then
@ -314,7 +318,7 @@ minetest.register_globalstep(function(dtime)
if elytra.active then
-- set head pitch and yaw when flying
set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0))
set_bone_position_conditional(player,"Head_Control", vector.new(0,6.3,0), vector.new(pitch-degrees(dir_to_pitch(player_velocity))+50,player_vel_yaw - yaw,0))
-- sets eye height, and nametag color accordingly
set_properties_conditional(player,{collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
-- control body bone when flying
@ -349,6 +353,7 @@ minetest.register_globalstep(function(dtime)
set_bone_position_conditional(player,"Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0))
end
elytra.last_yaw = player:get_look_horizontal()
-- Update jump status immediately since we need this info in real time.
-- WARNING: This section is HACKY as hell since it is all just based on heuristics.