X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=mods%2Fmob%2Fapi%2Fanimation.lua;h=8f8660a49ee53597dd1fe882b43cfa513a0a7534;hb=c17dec00099a35ae2e9ea600473b0200d2168ec6;hp=3e31617c3e87d2b214650200c70dbbb0033efe45;hpb=7bc80989b2e2ea5b4c8c0a5a134a2e55705e1186;p=Crafter.git diff --git a/mods/mob/api/animation.lua b/mods/mob/api/animation.lua index 3e31617..8f8660a 100644 --- a/mods/mob/api/animation.lua +++ b/mods/mob/api/animation.lua @@ -1,43 +1,51 @@ +local math,vector = math,vector -- mobs.create_animation_functions = function(def,mob_register) - mob_register.set_animation = function(self) - if self.speed == 0 or vector.equals(self.direction,vector.new(0,0,0)) then - self.object:set_animation(def.standing_frame, 1, 0, true) - else - self.object:set_animation(def.moving_frame, 1, 0, true) - local speed = self.object:get_velocity() - speed.y = 0 - self.object:set_animation_frame_speed(vector.distance(vector.new(0,0,0),speed)*def.animation_multiplier) - end - end + if def.movement_type ~= "jump" then + mob_register.set_animation = function(self) + if self.speed == 0 or vector.equals(self.direction,vector.new(0,0,0)) then + self.current_animation = 0 + self.object:set_animation(def.standing_frame, 1, 0, true) + else + if self.current_animation ~= 1 then + self.object:set_animation(def.moving_frame, 1, 0, true) + self.current_animation = 1 + end + + local speed = self.object:get_velocity() + speed.y = 0 + self.object:set_animation_frame_speed(vector.distance(vector.new(0,0,0),speed)*def.animation_multiplier) + end + end + end - --this makes the mob rotate and then die - mob_register.manage_death_animation = function(self,dtime) - if self.death_animation_timer >= 0 and self.dead == true then - self.death_animation_timer = self.death_animation_timer - dtime - - local self_rotation = self.object:get_rotation() - - if self.death_rotation == "x" then - if self_rotation.x < math.pi/2 then - self_rotation.x = self_rotation.x + (dtime*2) - self.object:set_rotation(self_rotation) - end - elseif self.death_rotation == "z" then - if self_rotation.z < math.pi/2 then - self_rotation.z = self_rotation.z + (dtime*2) - self.object:set_rotation(self_rotation) - end - end - - --print(self.death_animation_timer) - local currentvel = self.object:getvelocity() - local goal = vector.new(0,0,0) - local acceleration = vector.new(goal.x-currentvel.x,0,goal.z-currentvel.z) - acceleration = vector.multiply(acceleration, 0.05) - self.object:add_velocity(acceleration) - self.object:set_animation({x=0,y=0}, 15, 0, true) - end - end - return(mob_register) + --this makes the mob rotate and then die + mob_register.manage_death_animation = function(self,dtime) + if self.death_animation_timer >= 0 and self.dead == true then + self.death_animation_timer = self.death_animation_timer - dtime + + local self_rotation = self.object:get_rotation() + + if self.death_rotation == "x" then + if self_rotation.x < math.pi/2 then + self_rotation.x = self_rotation.x + (dtime*2) + self.object:set_rotation(self_rotation) + end + elseif self.death_rotation == "z" then + if self_rotation.z < math.pi/2 then + self_rotation.z = self_rotation.z + (dtime*2) + self.object:set_rotation(self_rotation) + end + end + + --print(self.death_animation_timer) + local currentvel = self.object:get_velocity() + local goal = vector.new(0,0,0) + local acceleration = vector.new(goal.x-currentvel.x,0,goal.z-currentvel.z) + acceleration = vector.multiply(acceleration, 0.05) + self.object:add_velocity(acceleration) + self.object:set_animation(def.standing_frame, 15, 0, true) + end + end + return(mob_register) end