]> git.lizzy.rs Git - minetest.git/blobdiff - src/content_cao.h
Fix naming conventions of noise userdata
[minetest.git] / src / content_cao.h
index a158e8296761a61e957fb3051feff933c8422415..575aad24145f9adac48a4c1432f1bf96087417bf 100644 (file)
@@ -17,16 +17,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef CONTENT_CAO_HEADER
-#define CONTENT_CAO_HEADER
+#pragma once
 
 #include <map>
 #include "irrlichttypes_extrabloated.h"
 #include "clientobject.h"
 #include "object_properties.h"
 #include "itemgroup.h"
+#include "constants.h"
 
 class Camera;
+class Client;
 struct Nametag;
 
 /*
@@ -38,84 +39,85 @@ struct SmoothTranslator
        v3f vect_old;
        v3f vect_show;
        v3f vect_aim;
-       f32 anim_counter;
-       f32 anim_time;
-       f32 anim_time_counter;
-       bool aim_is_end;
+       f32 anim_counter = 0;
+       f32 anim_time = 0;
+       f32 anim_time_counter = 0;
+       bool aim_is_end = true;
 
-       SmoothTranslator();
+       SmoothTranslator() = default;
 
        void init(v3f vect);
 
-       void sharpen();
-
        void update(v3f vect_new, bool is_end_position=false, float update_interval=-1);
 
        void translate(f32 dtime);
-
-       bool is_moving();
 };
 
 class GenericCAO : public ClientActiveObject
 {
 private:
        // Only set at initialization
-       std::string m_name;
-       bool m_is_player;
-       bool m_is_local_player;
+       std::string m_name = "";
+       bool m_is_player = false;
+       bool m_is_local_player = false;
        // Property-ish things
        ObjectProperties m_prop;
        //
-       scene::ISceneManager *m_smgr;
-       IrrlichtDevice *m_irr;
-       IGameDef *m_gamedef;
-       aabb3f m_selection_box;
-       scene::IMeshSceneNode *m_meshnode;
-       scene::IAnimatedMeshSceneNode *m_animated_meshnode;
-       WieldMeshSceneNode *m_wield_meshnode;
-       scene::IBillboardSceneNode *m_spritenode;
-       Nametag* m_nametag;
-       v3f m_position;
+       scene::ISceneManager *m_smgr = nullptr;
+       Client *m_client = nullptr;
+       aabb3f m_selection_box = aabb3f(-BS/3.,-BS/3.,-BS/3., BS/3.,BS/3.,BS/3.);
+       scene::IMeshSceneNode *m_meshnode = nullptr;
+       scene::IAnimatedMeshSceneNode *m_animated_meshnode = nullptr;
+       WieldMeshSceneNode *m_wield_meshnode = nullptr;
+       scene::IBillboardSceneNode *m_spritenode = nullptr;
+       Nametag *m_nametag = nullptr;
+       v3f m_position = v3f(0.0f, 10.0f * BS, 0);
        v3f m_velocity;
        v3f m_acceleration;
-       float m_yaw;
-       s16 m_hp;
+       float m_yaw = 0.0f;
+       s16 m_hp = 1;
        SmoothTranslator pos_translator;
        // Spritesheet/animation stuff
-       v2f m_tx_size;
+       v2f m_tx_size = v2f(1,1);
        v2s16 m_tx_basepos;
-       bool m_initial_tx_basepos_set;
-       bool m_tx_select_horiz_by_yawpitch;
+       bool m_initial_tx_basepos_set = false;
+       bool m_tx_select_horiz_by_yawpitch = false;
        v2s32 m_animation_range;
-       int m_animation_speed;
-       int m_animation_blend;
-       bool m_animation_loop;
-       UNORDERED_MAP<std::string, core::vector2d<v3f> > m_bone_position; // stores position and rotation for each bone name
-       std::string m_attachment_bone;
+       float m_animation_speed = 15.0f;
+       float m_animation_blend = 0.0f;
+       bool m_animation_loop = true;
+       // stores position and rotation for each bone name
+       std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
+       std::string m_attachment_bone = "";
        v3f m_attachment_position;
        v3f m_attachment_rotation;
-       bool m_attached_to_local;
-       int m_anim_frame;
-       int m_anim_num_frames;
-       float m_anim_framelength;
-       float m_anim_timer;
+       bool m_attached_to_local = false;
+       int m_anim_frame = 0;
+       int m_anim_num_frames = 1;
+       float m_anim_framelength = 0.2f;
+       float m_anim_timer = 0.0f;
        ItemGroupList m_armor_groups;
-       float m_reset_textures_timer;
-       bool m_visuals_expired;
-       float m_step_distance_counter;
-       u8 m_last_light;
-       bool m_is_visible;
+       float m_reset_textures_timer = -1.0f;
+       // stores texture modifier before punch update
+       std::string m_previous_texture_modifier = "";
+       // last applied texture modifier
+       std::string m_current_texture_modifier = "";
+       bool m_visuals_expired = false;
+       float m_step_distance_counter = 0.0f;
+       u8 m_last_light = 255;
+       bool m_is_visible = false;
+       s8 m_glow = 0;
 
        std::vector<u16> m_children;
 
 public:
-       GenericCAO(IGameDef *gamedef, ClientEnvironment *env);
+       GenericCAO(Client *client, ClientEnvironment *env);
 
        ~GenericCAO();
 
-       static ClientActiveObject* create(IGameDef *gamedef, ClientEnvironment *env)
+       static ClientActiveObject* create(Client *client, ClientEnvironment *env)
        {
-               return new GenericCAO(gamedef, env);
+               return new GenericCAO(client, env);
        }
 
        inline ActiveObjectType getType() const
@@ -127,13 +129,13 @@ class GenericCAO : public ClientActiveObject
 
        void processInitData(const std::string &data);
 
-       ClientActiveObject *getParent();
+       ClientActiveObject *getParent() const;
 
-       bool getCollisionBox(aabb3f *toset);
+       bool getCollisionBox(aabb3f *toset) const;
 
-       bool collideWithObjects();
+       bool collideWithObjects() const;
 
-       aabb3f *getSelectionBox();
+       virtual bool getSelectionBox(aabb3f *toset) const;
 
        v3f getPosition();
        inline float getYaw() const
@@ -143,17 +145,11 @@ class GenericCAO : public ClientActiveObject
 
        scene::ISceneNode *getSceneNode();
 
-       scene::IMeshSceneNode *getMeshSceneNode();
-
        scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode();
 
-       WieldMeshSceneNode *getWieldMeshSceneNode();
-
-       scene::IBillboardSceneNode *getSpriteSceneNode();
-
-       inline bool isPlayer() const
+       inline f32 getStepHeight() const
        {
-               return m_is_player;
+               return m_prop.stepheight;
        }
 
        inline bool isLocalPlayer() const
@@ -177,8 +173,7 @@ class GenericCAO : public ClientActiveObject
 
        void removeFromScene(bool permanent);
 
-       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc,
-                       IrrlichtDevice *irr);
+       void addToScene(ITextureSource *tsrc);
 
        inline void expireVisuals()
        {
@@ -197,10 +192,14 @@ class GenericCAO : public ClientActiveObject
 
        void updateTexturePos();
 
-       void updateTextures(const std::string &mod);
+       // std::string copy is mandatory as mod can be a class member and there is a swap
+       // on those class members
+       void updateTextures(std::string mod);
 
        void updateAnimation();
 
+       void updateAnimationSpeed();
+
        void updateBonePosition();
 
        void updateAttachments();
@@ -217,6 +216,3 @@ class GenericCAO : public ClientActiveObject
                return m_prop.infotext;
        }
 };
-
-
-#endif