summaryrefslogtreecommitdiff
path: root/src/content_cao.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-10-15 02:28:57 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-10-15 02:28:57 +0300
commit43a28f04fa3ddf4b612f58c25a896293a01567e3 (patch)
tree58ca2cac232c28ffd59609ad3998b97628f13e33 /src/content_cao.h
parent080002f8ed1af6d34cdc6f5abff0f51586ca831c (diff)
downloadminetest-43a28f04fa3ddf4b612f58c25a896293a01567e3.tar.gz
minetest-43a28f04fa3ddf4b612f58c25a896293a01567e3.tar.bz2
minetest-43a28f04fa3ddf4b612f58c25a896293a01567e3.zip
mobv2
Diffstat (limited to 'src/content_cao.h')
-rw-r--r--src/content_cao.h75
1 files changed, 74 insertions, 1 deletions
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<f32>* 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<f32> 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