X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclientenvironment.h;h=12070afec723c275f51b3b61415b816b3fabdbab;hb=86b19f284990304f5c8322040f277138333a3697;hp=c8b192ee99b889d972bdd60c9d0f98525bddb674;hpb=76be103a91d6987527af19e87d93007be8ba8a67;p=minetest.git diff --git a/src/clientenvironment.h b/src/clientenvironment.h index c8b192ee9..12070afec 100644 --- a/src/clientenvironment.h +++ b/src/clientenvironment.h @@ -17,13 +17,12 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef CLIENT_ENVIRONMENT_HEADER -#define CLIENT_ENVIRONMENT_HEADER +#pragma once -#include -#include #include "environment.h" +#include #include "clientobject.h" +#include "util/numeric.h" class ClientSimpleObject; class ClientMap; @@ -31,7 +30,6 @@ class ClientScripting; class ClientActiveObject; class GenericCAO; class LocalPlayer; -struct PointedThing; /* The client-side environment. @@ -68,9 +66,7 @@ typedef std::unordered_map ClientActiveObjectMap; class ClientEnvironment : public Environment { public: - ClientEnvironment(ClientMap *map, scene::ISceneManager *smgr, - ITextureSource *texturesource, Client *client, - IrrlichtDevice *device); + ClientEnvironment(ClientMap *map, ITextureSource *texturesource, Client *client); ~ClientEnvironment(); Map & getMap(); @@ -82,7 +78,7 @@ class ClientEnvironment : public Environment void step(f32 dtime); virtual void setLocalPlayer(LocalPlayer *player); - LocalPlayer *getLocalPlayer() { return m_local_player; } + LocalPlayer *getLocalPlayer() const { return m_local_player; } /* ClientSimpleObjects @@ -128,60 +124,29 @@ class ClientEnvironment : public Environment std::vector &dest); bool hasClientEnvEvents() const { return !m_client_event_queue.empty(); } + // Get event from queue. If queue is empty, it triggers an assertion failure. ClientEnvEvent getClientEnvEvent(); - /*! - * Gets closest object pointed by the shootline. - * Returns NULL if not found. - * - * \param[in] shootline_on_map the shootline for - * the test in world coordinates - * \param[out] intersection_point the first point where - * the shootline meets the object. Valid only if - * not NULL is returned. - * \param[out] intersection_normal the normal vector of - * the intersection, pointing outwards. Zero vector if - * the shootline starts in an active object. - * Valid only if not NULL is returned. - */ - ClientActiveObject * getSelectedActiveObject( + virtual void getSelectedActiveObjects( const core::line3d &shootline_on_map, - v3f *intersection_point, - v3s16 *intersection_normal + std::vector &objects ); - /*! - * Performs a raycast on the world. - * Returns the first thing the shootline meets. - * - * @param[in] shootline the shootline, starting from - * the camera position. This also gives the maximal distance - * of the search. - * @param[in] liquids_pointable if false, liquids are ignored - * @param[in] look_for_object if false, objects are ignored - */ - PointedThing getPointedThing( - core::line3d shootline, - bool liquids_pointable, - bool look_for_object); - u16 attachement_parent_ids[USHRT_MAX + 1]; const std::list &getPlayerNames() { return m_player_names; } void addPlayerName(const std::string &name) { m_player_names.push_back(name); } void removePlayerName(const std::string &name) { m_player_names.remove(name); } - void updateCameraOffset(v3s16 camera_offset) + void updateCameraOffset(const v3s16 &camera_offset) { m_camera_offset = camera_offset; } v3s16 getCameraOffset() const { return m_camera_offset; } private: ClientMap *m_map; LocalPlayer *m_local_player = nullptr; - scene::ISceneManager *m_smgr; ITextureSource *m_texturesource; Client *m_client; ClientScripting *m_script = nullptr; - IrrlichtDevice *m_irr; ClientActiveObjectMap m_active_objects; std::vector m_simple_objects; std::queue m_client_event_queue; @@ -192,5 +157,3 @@ class ClientEnvironment : public Environment std::list m_player_names; v3s16 m_camera_offset; }; - -#endif