diff options
author | Quentin Bazin <quent42340@gmail.com> | 2018-11-28 20:01:49 +0100 |
---|---|---|
committer | SmallJoker <SmallJoker@users.noreply.github.com> | 2018-11-28 20:01:49 +0100 |
commit | 5f1cd555cd9d1c64426e173b30b5b792d211c835 (patch) | |
tree | 2c8508467d3bf28d549cce2d25144fa8ef42beae /src/content_cao.h | |
parent | ddd9317b733857630499972179caebc236b4d991 (diff) | |
download | minetest-5f1cd555cd9d1c64426e173b30b5b792d211c835.tar.gz minetest-5f1cd555cd9d1c64426e173b30b5b792d211c835.tar.bz2 minetest-5f1cd555cd9d1c64426e173b30b5b792d211c835.zip |
Move client-specific files to 'src/client' (#7902)
Update Android.mk
Remove 'src/client' from include_directories
Diffstat (limited to 'src/content_cao.h')
-rw-r--r-- | src/content_cao.h | 236 |
1 files changed, 0 insertions, 236 deletions
diff --git a/src/content_cao.h b/src/content_cao.h deleted file mode 100644 index 98932137e..000000000 --- a/src/content_cao.h +++ /dev/null @@ -1,236 +0,0 @@ -/* -Minetest -Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com> - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#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; - -/* - SmoothTranslator -*/ - -template<typename T> -struct SmoothTranslator -{ - T val_old; - T val_current; - T val_target; - f32 anim_time = 0; - f32 anim_time_counter = 0; - bool aim_is_end = true; - - SmoothTranslator() = default; - - void init(T current); - - void update(T new_target, bool is_end_position = false, - float update_interval = -1); - - void translate(f32 dtime); -}; - -struct SmoothTranslatorWrapped : SmoothTranslator<f32> -{ - void translate(f32 dtime); -}; - -struct SmoothTranslatorWrappedv3f : SmoothTranslator<v3f> -{ - void translate(f32 dtime); -}; - -class GenericCAO : public ClientActiveObject -{ -private: - // Only set at initialization - 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 = 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; - v3f m_rotation; - s16 m_hp = 1; - SmoothTranslator<v3f> pos_translator; - SmoothTranslatorWrappedv3f rot_translator; - // Spritesheet/animation stuff - v2f m_tx_size = v2f(1,1); - v2s16 m_tx_basepos; - bool m_initial_tx_basepos_set = false; - bool m_tx_select_horiz_by_yawpitch = false; - v2s32 m_animation_range; - 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 = 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 = -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(Client *client, ClientEnvironment *env); - - ~GenericCAO(); - - static ClientActiveObject* create(Client *client, ClientEnvironment *env) - { - return new GenericCAO(client, env); - } - - inline ActiveObjectType getType() const - { - return ACTIVEOBJECT_TYPE_GENERIC; - } - inline const ItemGroupList &getGroups() const - { - return m_armor_groups; - } - void initialize(const std::string &data); - - void processInitData(const std::string &data); - - bool getCollisionBox(aabb3f *toset) const; - - bool collideWithObjects() const; - - virtual bool getSelectionBox(aabb3f *toset) const; - - v3f getPosition(); - - inline const v3f &getRotation() - { - return m_rotation; - } - - const bool isImmortal(); - - scene::ISceneNode *getSceneNode(); - - scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode(); - - inline f32 getStepHeight() const - { - return m_prop.stepheight; - } - - inline bool isLocalPlayer() const - { - return m_is_local_player; - } - - inline bool isVisible() const - { - return m_is_visible; - } - - inline void setVisible(bool toset) - { - m_is_visible = toset; - } - - void setChildrenVisible(bool toset); - - ClientActiveObject *getParent() const; - - void setAttachments(); - - void removeFromScene(bool permanent); - - void addToScene(ITextureSource *tsrc); - - inline void expireVisuals() - { - m_visuals_expired = true; - } - - void updateLight(u8 light_at_pos); - - void updateLightNoCheck(u8 light_at_pos); - - v3s16 getLightPosition(); - - void updateNodePos(); - - void step(float dtime, ClientEnvironment *env); - - void updateTexturePos(); - - // std::string copy is mandatory as mod can be a class member and there is a swap - // on those class members... do NOT pass by reference - void updateTextures(std::string mod); - - void updateAnimation(); - - void updateAnimationSpeed(); - - void updateBonePosition(); - - void updateAttachments(); - - void processMessage(const std::string &data); - - bool directReportPunch(v3f dir, const ItemStack *punchitem=NULL, - float time_from_last_punch=1000000); - - std::string debugInfoText(); - - std::string infoText() - { - return m_prop.infotext; - } -}; |