Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/mount_points/src/world_entities/mount_point.cc @ 10243

Last change on this file since 10243 was 10243, checked in by patrick, 17 years ago

still on this resource thingy

File size: 4.1 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific
12   main-programmer: Patrick Boenzli, patrick@orxonox.net
13   co-programmer:
14*/
15#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
16
17
18#include "executor/executor.h"
19#include "util/loading/factory.h"
20#include "util/loading/load_param.h"
21
22
23#include "mount_point.h"
24#include "debug.h"
25#include "state.h"
26
27
28ObjectListDefinition(MountPoint);
29
30
31/**
32 * construct
33 */
34MountPoint::MountPoint (const Vector& up, const Vector& forward, const Vector& center, const std::string& name)
35{
36  PRINTF(0)("Created mount point %s\n", name.c_str());
37
38  this->_name = name;
39  this->setAbsCoor( center);
40  this->setAbsDir( Quaternion(forward, up));
41
42  this->init();
43}
44
45
46
47/**
48 * deconstructor
49 */
50MountPoint::~MountPoint ()
51{}
52
53
54/**
55 * initializing function
56 */
57void MountPoint::init()
58{
59  this->registerObject(this, MountPoint::_objectList);
60  this->toList(OM_GROUP_00);
61
62  this->_mount = NULL;
63}
64
65
66/**
67 * loads the Settings of a MD2Creature from an XML-element.
68 * @param root the XML-element to load the MD2Creature's properties from
69 */
70void MountPoint::initMountPoint(const TiXmlElement* root)
71{
72  if( root == NULL)
73  {
74    PRINTF(1)("MountPoint - initialization failed, since I got no valid xml element\n");
75    return;
76  }
77  // now get the first element
78  const TiXmlElement* element = root->FirstChildElement("MountPoints");
79  if( element == NULL)
80  {
81    PRINTF(1)("I am in section: %s, Object Information file is missing a proper 'MountPoints' section\n", root->Value());
82//     element = root->FirstChildElement( );
83//     PRINTF(0)("first child: %s\n", element->Value());
84  }
85  else
86  {
87    element = element->FirstChildElement();
88    // parse the information for this mount point
89
90    PRINTF(4)("Loading WorldEntities\n");
91    while( element != NULL)
92    {
93      std::string name = element->Value();
94
95      // check if we got the right mount point
96      if( name == this->_name)
97      {
98        // load it
99        this->loadParam(element);
100      }
101
102      element = element->NextSiblingElement();
103    }
104  }
105}
106
107
108
109/**
110 * load the parameters from the xml section
111 * @param root the root element of this xml branche
112 */
113void MountPoint::loadParam(const TiXmlElement* root)
114{
115  // first check for the description
116  LoadParam(root, "Description", this, MountPoint, setDescription)
117  .describe("Sets this mount point a description");
118
119  // now check for the orx class to create
120  LoadParam(root, "OrxClass", this, MountPoint, setOrxClass)
121  .describe("Sets the class this mount points should host");
122}
123
124
125
126/**
127 * setst the description (optional) via xml tag
128 * @param description string containing the description
129 */
130void MountPoint::setDescription(const std::string& description)
131{
132  this->_description = description;
133}
134
135
136
137/**
138 * sets the class of this mount point
139 * @param orxClass class
140 */
141void MountPoint::setOrxClass(const std::string& orxClass)
142{
143  // create the object for this mount point
144  BaseObject* obj = Factory::fabricate(orxClass);
145  // check if the object is created correctly
146  if( this->_mount != NULL)
147  {
148    if( obj->isA( WorldEntity::staticClassID()))
149    {
150      this->_mount = dynamic_cast<WorldEntity*>(obj);
151    }
152  }
153  else
154    PRINTF(1)("Couldn't create %s for this mount point (%s)\n", orxClass.c_str(), this->_name.c_str());
155}
156
157
158
159/**
160 * tick
161 * @param time  time passed since the last tick
162 */
163void MountPoint::tick (float time)
164{
165
166}
167
168
169/**
170 * draw this entity
171 */
172void MountPoint::draw() const
173{
174}
175
176
177
178/**
179 *  function called to draw the mount point itself for debug purposes only
180 */
181void MountPoint::debugDraw() const
182{
183  // invoke the underlying pnode debug draw
184  this->debugDraw();
185}
186
187
188/**
189 * adds an entity to this mount point
190 * @param entity entity to be added
191 */
192void MountPoint::mount(WorldEntity* entity)
193{
194  this->_mount = entity;
195}
196
197
198/**
199 * removes an entity from this mount point
200 */
201void MountPoint::unmount()
202{
203  this->_mount = NULL;
204}
205
Note: See TracBrowser for help on using the repository browser.