Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/network/src/world_entities/spawning_point.cc @ 6086

Last change on this file since 6086 was 6086, checked in by patrick, 18 years ago

network: loadparams for the spawning point

File size: 2.5 KB
Line 
1
2/*
3   orxonox - the future of 3D-vertical-scrollers
4
5   Copyright (C) 2004 orx
6
7   This program is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 2, or (at your option)
10   any later version.
11
12### File Specific:
13   main-programmer: Patrick Boenzli
14   co-programmer:
15*/
16
17#include "spawning_point.h"
18#include "load_param.h"
19
20
21/**
22 *  standard constructor
23 */
24SpawningPoint::SpawningPoint (const Vector& absCoordinate, const World* world)
25  : WorldEntity(absCoodrinate)
26{
27  this->world = world;
28  this->frequency = 0.5f;
29  this->seed = 0.0f;
30  this->countDown = 0.0f;
31}
32
33
34/**
35 *  constructor
36 */
37SpawningPoint::SpawningPoint (const Vector& position, float frequency,
38                              float seed, int classID, const World* world)
39  : WorldEntity(position)
40{
41  this->frequency = frequency;
42  this->seed = seed;
43  this->classID = classID;
44  this->world = world;
45  this->countDown = 0.0f;
46}
47
48
49/**
50 *  deconstructor
51 */
52SpawningPoint::~SpawningPoint ()
53{}
54
55
56/**
57 * loads the WorldEntity Specific Parameters.
58 * @param root: the XML-Element to load the Data From
59 */
60void SpawningPoint::loadParams(const TiXmlElement* root)
61{
62  // Do the PNode loading stuff
63  static_cast<PNode*>(this)->loadParams(root);
64
65  // Model Loading
66  LoadParam(root, "model", this, WorldEntity, loadModel)
67      .describe("the fileName of the model, that should be loaded onto this world-entity. (must be relative to the data-dir)")
68      .defaultValues(3, NULL, 1.0f, 0);
69
70}
71
72
73/**
74 *  spawn the entity
75 */
76void SpawningPoint::spawn()
77{
78  PRINTF(5)("Spangingpoint creates a new Entity (id: %i, frequency: %f, seed: %f)\n", this->classID,
79           this->frequency, this->seed);
80  BaseObject* spawningEntity = Factory::fabricate(this->classID);
81  if( LIKELY(this->world != NULL))
82    this->world->spawn(dynamic_cast<WorldEntity*>(spawningEntity));
83}
84
85
86/**
87 *  this method is called every frame
88 * @param time: the time in seconds that has passed since the last tick
89 *
90 * Handle all stuff that should update with time inside this method (movement, animation, etc.)
91 */
92void SpawningPoint::tick(float dt)
93{
94  this->countDown += dt;
95  if( this->countDown > this->frequency)
96  {
97    this->spawn();
98    this->countDown = 0.0f;
99  }
100}
101
102
103/**
104 *  the entity is drawn onto the screen with this function
105 *
106 * This is a central function of an entity: call it to let the entity painted to the screen.
107 * Just override this function with whatever you want to be drawn.
108 */
109void SpawningPoint::draw()
110{}
Note: See TracBrowser for help on using the repository browser.