Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/core/BaseObject.h @ 1583

Last change on this file since 1583 was 1558, checked in by landauf, 16 years ago

added support for isVisible() and isActive() to all objects.
those functions are provided by BaseObject, combined with virtual functions changedVisibility and changedActivity respectively.
use them, to make orxonox scriptable, say: to change the state of objects with 2 simple functions instead of changing all meshes and emitters and billboards of an object. don't forget to pass calls to changedVisibility and changedActivity to the parent class.

additionally there is a new function, isInitialized(), provided by BaseObject too. this returns true if the constructor of BaseObject passed the object registration. this allows you, to check whether an object was properly initialized or if the constructor returned (as this is the case while creating the class hierarchy). use isInitialized() in your destructor before deleting something.

  • Property svn:eol-style set to native
File size: 5.0 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 "util/XMLIncludes.h"
42#include "OrxonoxClass.h"
43
44namespace orxonox
45{
46    //! The BaseObject is the parent of all classes representing an instance in the game.
47    class _CoreExport BaseObject : virtual public OrxonoxClass
48    {
49        friend class WorldEntity;
50
51        public:
52            BaseObject();
53            virtual ~BaseObject();
54            virtual void loadParams(TiXmlElement* xmlElem);
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 setActivity(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 setVisibility(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        private:
96            std::string name_;                          //!< The name of the object
97            bool bInitialized_;                         //!< True if the object was initialized (passed the object registration)
98            bool bActive_;                              //!< True = the object is active
99            bool bVisible_;                             //!< True = the object is visible
100            const Level* level_;                        //!< The level that loaded this object
101            std::string loaderIndentation_;             //!< Indentation of the debug output in the Loader
102            Namespace* namespace_;
103    };
104}
105
106#endif /* _BaseObject_H__ */
Note: See TracBrowser for help on using the repository browser.