aboutsummaryrefslogtreecommitdiff
path: root/assets/blender/mbb/signal.png
diff options
context:
space:
mode:
authororwell96 <mono96.mml@gmail.com>2018-02-20 16:22:31 +0100
committerGitHub <noreply@github.com>2018-02-20 16:22:31 +0100
commite9322075a366f7d09b472194a13bdb239f7410cf (patch)
tree1c9ad7ca4d23486078212bac0540514e4ea12aa4 /assets/blender/mbb/signal.png
parent06cdb14f3d28780f011d842c17580c748d2020f2 (diff)
downloadadvtrains-e9322075a366f7d09b472194a13bdb239f7410cf.tar.gz
advtrains-e9322075a366f7d09b472194a13bdb239f7410cf.tar.bz2
advtrains-e9322075a366f7d09b472194a13bdb239f7410cf.zip
Allow wagon owners to control their own trains
...even without the train_operator privilege This still doesn't allow them to control switches, but whatever...
Diffstat (limited to 'assets/blender/mbb/signal.png')
0 files changed, 0 insertions, 0 deletions
s. 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 "irrlichttypes_extrabloated.h" #include "activeobject.h" #include <unordered_map> #include <unordered_set> class ClientEnvironment; class ITextureSource; class Client; class IGameDef; class LocalPlayer; struct ItemStack; class WieldMeshSceneNode; class ClientActiveObject : public ActiveObject { public: ClientActiveObject(u16 id, Client *client, ClientEnvironment *env); virtual ~ClientActiveObject(); virtual void addToScene(ITextureSource *tsrc) {} virtual void removeFromScene(bool permanent) {} // 0 <= light_at_pos <= LIGHT_SUN virtual void updateLight(u8 light_at_pos) {} virtual void updateLightNoCheck(u8 light_at_pos) {} virtual v3s16 getLightPosition() { return v3s16(0, 0, 0); } virtual bool getCollisionBox(aabb3f *toset) const { return false; } virtual bool getSelectionBox(aabb3f *toset) const { return false; } virtual bool collideWithObjects() const { return false; } virtual const v3f getPosition() const { return v3f(0.0f); } virtual scene::ISceneNode *getSceneNode() const { return NULL; } virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode() const { return NULL; } virtual bool isLocalPlayer() const { return false; } virtual ClientActiveObject *getParent() const { return nullptr; }; virtual const std::unordered_set<int> &getAttachmentChildIds() const { static std::unordered_set<int> rv; return rv; } virtual void updateAttachments() {}; virtual bool doShowSelectionBox() { return true; } // Step object in time virtual void step(float dtime, ClientEnvironment *env) {} // Process a message sent by the server side object virtual void processMessage(const std::string &data) {} virtual std::string infoText() { return ""; } virtual std::string debugInfoText() { return ""; } /* This takes the return value of ServerActiveObject::getClientInitializationData */ virtual void initialize(const std::string &data) {} // Create a certain type of ClientActiveObject static ClientActiveObject *create(ActiveObjectType type, Client *client, ClientEnvironment *env); // If returns true, punch will not be sent to the server virtual bool directReportPunch(v3f dir, const ItemStack *punchitem = nullptr, float time_from_last_punch = 1000000) { return false; } protected: // Used for creating objects based on type typedef ClientActiveObject *(*Factory)(Client *client, ClientEnvironment *env); static void registerType(u16 type, Factory f); Client *m_client; ClientEnvironment *m_env; private: // Used for creating objects based on type static std::unordered_map<u16, Factory> m_types; }; class DistanceSortedActiveObject { public: ClientActiveObject *obj; DistanceSortedActiveObject(ClientActiveObject *a_obj, f32 a_d) { obj = a_obj; d = a_d; } bool operator < (const DistanceSortedActiveObject &other) const { return d < other.d; } private: f32 d; };