From 43a28f04fa3ddf4b612f58c25a896293a01567e3 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 15 Oct 2011 02:28:57 +0300 Subject: mobv2 --- src/content_cao.h | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) (limited to 'src/content_cao.h') diff --git a/src/content_cao.h b/src/content_cao.h index 319f90380..e240d7392 100644 --- a/src/content_cao.h +++ b/src/content_cao.h @@ -23,6 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "clientobject.h" #include "content_object.h" #include "utility.h" // For IntervalLimiter +class Settings; +#include "MyBillboardSceneNode.h" /* SmoothTranslator @@ -74,11 +76,16 @@ struct SmoothTranslator if(anim_time > 0.001) moveratio = anim_time_counter / anim_time; // Move a bit less than should, to avoid oscillation - moveratio = moveratio * 0.8; + moveratio = moveratio * 0.5; if(moveratio > 1.5) moveratio = 1.5; vect_show = vect_old + vect_move * moveratio; } + + bool is_moving() + { + return ((anim_time_counter / anim_time) < 1.4); + } }; @@ -286,6 +293,72 @@ private: SmoothTranslator pos_translator; }; +/* + MobV2CAO +*/ + +class MobV2CAO : public ClientActiveObject +{ +public: + MobV2CAO(); + virtual ~MobV2CAO(); + + u8 getType() const + { + return ACTIVEOBJECT_TYPE_MOBV2; + } + + static ClientActiveObject* create(); + + void addToScene(scene::ISceneManager *smgr); + void removeFromScene(); + void updateLight(u8 light_at_pos); + v3s16 getLightPosition(); + void updateNodePos(); + + void step(float dtime, ClientEnvironment *env); + + void processMessage(const std::string &data); + + void initialize(const std::string &data); + + core::aabbox3d* getSelectionBox() + {return &m_selection_box;} + v3f getPosition() + {return pos_translator.vect_show;} + //{return m_position;} + bool doShowSelectionBox(){return false;} + +private: + IntervalLimiter m_attack_interval; + core::aabbox3d m_selection_box; + scene::MyBillboardSceneNode *m_node; + v3f m_position; + float m_yaw; + SmoothTranslator pos_translator; + bool m_walking; + float m_walking_unset_timer; + float m_walk_timer; + int m_walk_frame; + float m_damage_visual_timer; + u8 m_last_light; + bool m_shooting; + float m_shooting_unset_timer; + v2f m_sprite_size; + v3f m_sprite_pos; + bool m_bright_shooting; + std::string m_sprite_type; + int m_simple_anim_frames; + float m_simple_anim_frametime; + bool m_lock_full_brightness; + int m_player_hit_damage; + float m_player_hit_distance; + float m_player_hit_interval; + float m_player_hit_timer; + + Settings *m_properties; +}; + #endif -- cgit v1.2.3