Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/objecthierarchy/src/core/BaseObject.h @ 1944

Last change on this file since 1944 was 1940, checked in by landauf, 16 years ago

did some first (and very unfinished) steps to deal with different players on server and client

  • Property svn:eol-style set to native
File size: 5.1 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file BaseObject.h
31    @brief Definition of the BaseObject class.
32
33    The BaseObject is the parent of all classes representing an instance in the game.
34*/
35
36#ifndef _BaseObject_H__
37#define _BaseObject_H__
38
39#include "CorePrereqs.h"
40
41#include "Super.h"
42#include "OrxonoxClass.h"
43#include "XMLIncludes.h"
44
45namespace orxonox
46{
47    //! The BaseObject is the parent of all classes representing an instance in the game.
48    class _CoreExport BaseObject : virtual public OrxonoxClass
49    {
50        friend class WorldEntity;
51
52        public:
53            BaseObject();
54            virtual ~BaseObject();
55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
56
57            /** @brief Returns if the object was initialized (passed the object registration). @return True was the object is initialized */
58            inline bool isInitialized() const { return this->bInitialized_; }
59
60            /** @brief Sets the name of the object. @param name The name */
61            inline void setName(const std::string& name) { this->name_ = name; this->changedName(); }
62            /** @brief Returns the name of the object. @return The name */
63            inline const std::string& getName() const { return this->name_; }
64            /** @brief This function gets called if the name of the object changes. */
65            virtual void changedName() {}
66
67            /** @brief Sets the state of the objects activity. @param bActive True = active */
68            inline void setActive(bool bActive) { this->bActive_ = bActive; this->changedActivity(); }
69            /** @brief Returns the state of the objects activity. @return The state of the activity */
70            inline bool isActive() const { return this->bActive_; }
71            /** @brief This function gets called if the activity of the object changes. */
72            virtual void changedActivity() {}
73
74            /** @brief Sets the state of the objects visibility. @param bVisible True = visible */
75            inline void setVisible(bool bVisible) { this->bVisible_ = bVisible; this->changedVisibility(); }
76            /** @brief Returns the state of the objects visibility. @return The state of the visibility */
77            inline bool isVisible() const { return this->bVisible_; }
78            /** @brief This function gets called if the visibility of the object changes. */
79            virtual void changedVisibility() {}
80
81            /** @brief Sets a pointer to the level that loaded this object. @param level The pointer to the level */
82            inline void setLevel(const Level* level) { this->level_ = level; }
83            /** @brief Returns a pointer to the level that loaded this object. @return The level */
84            inline const Level* getLevel() const { return this->level_; }
85            const std::string& getLevelfile() const;
86
87            virtual inline void setNamespace(Namespace* ns) { this->namespace_ = ns; }
88            inline Namespace* getNamespace() const { return this->namespace_; }
89
90            /** @brief Sets the indentation of the debug output in the Loader. @param indentation The indentation */
91            inline void setLoaderIndentation(const std::string& indentation) { this->loaderIndentation_ = indentation; }
92            /** @brief Returns the indentation of the debug output in the Loader. @return The indentation */
93            inline const std::string& getLoaderIndentation() const { return this->loaderIndentation_; }
94
95        protected:
96            std::string name_;                          //!< The name of the object
97            bool bActive_;                              //!< True = the object is active
98            bool bVisible_;                             //!< True = the object is visible
99
100        private:
101            bool bInitialized_;                         //!< True if the object was initialized (passed the object registration)
102            const Level* level_;                        //!< The level that loaded this object
103            std::string loaderIndentation_;             //!< Indentation of the debug output in the Loader
104            Namespace* namespace_;
105    };
106
107    SUPER_FUNCTION(0, BaseObject, XMLPort, false);
108    SUPER_FUNCTION(2, BaseObject, changedActivity, false);
109    SUPER_FUNCTION(3, BaseObject, changedVisibility, false);
110}
111
112#endif /* _BaseObject_H__ */
Note: See TracBrowser for help on using the repository browser.