Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 24, 2008, 2:48:43 AM (16 years ago)
Author:
landauf
Message:

many changes, can't remember everything, but these are the most important:

  • attaching entities to other entities works
  • displaying models, lights and shadows works
  • controlling a spectator works
  • removed an update hack in PositionableEntity because I've found a much better solution

and with "works" I mean: it works on client, server and standalone

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.cc

    r2001 r2006  
    3131
    3232#include "core/CoreIncludes.h"
     33#include "core/Core.h"
    3334#include "objects/worldentities/Model.h"
     35#include "tools/BillboardSet.h"
    3436
    3537namespace orxonox
     
    5153        this->setDestroyWhenPlayerLeft(true);
    5254
    53         Model* temp = new Model;
    54         temp->setMeshSource("assff.mesh");
    55         this->attach(temp);
     55        // test test test
     56        {
     57            this->testmesh_ = new Mesh();
     58            this->testnode_ = this->getNode()->createChildSceneNode();
     59            this->testmesh_->setMeshSource("assff.mesh");
     60            if (this->testmesh_->getEntity())
     61                this->testnode_->attachObject(this->testmesh_->getEntity());
     62            this->testnode_->pitch(Degree(-90));
     63            this->testnode_->roll(Degree(+90));
     64            this->testnode_->scale(10, 10, 10);
     65        }
     66        // test test test
     67
     68        this->greetingFlare_ = new BillboardSet();
     69        this->greetingFlare_->setBillboardSet("Examples/Flare", ColourValue(1.0, 1.0, 0.8), Vector3(0, 20, 0), 1);
     70        this->getNode()->attachObject(this->greetingFlare_->getBillboardSet());
     71        this->greetingFlare_->setVisible(false);
     72        this->bGreetingFlareVisible_ = false;
     73        this->bGreeting_ = false;
     74
     75        this->registerVariables();
    5676    }
    5777
    5878    Spectator::~Spectator()
    5979    {
     80        if (this->isInitialized())
     81        {
     82            delete this->greetingFlare_;
     83
     84            // test test test
     85            {
     86                delete this->testmesh_;
     87                delete this->testnode_;
     88            }
     89            // test test test
     90        }
     91    }
     92
     93    void Spectator::registerVariables()
     94    {
     95        REGISTERDATA(this->bGreetingFlareVisible_, network::direction::toclient, new network::NetworkCallback<Spectator>(this, &Spectator::changedFlareVisibility));
     96        REGISTERDATA(this->bGreeting_,             network::direction::toserver, new network::NetworkCallback<Spectator>(this, &Spectator::changedGreeting));
     97    }
     98
     99    void Spectator::changedGreeting()
     100    {
     101        this->bGreetingFlareVisible_ = this->bGreeting_;
     102        this->changedFlareVisibility();
     103    }
     104
     105    void Spectator::changedFlareVisibility()
     106    {
     107        this->greetingFlare_->setVisible(this->bGreetingFlareVisible_);
    60108    }
    61109
    62110    void Spectator::tick(float dt)
    63111    {
    64         Vector3 velocity = this->getVelocity();
    65         velocity.normalise();
    66         this->setVelocity(velocity * this->speed_);
     112        if (this->isLocallyControlled())
     113        {
     114            Vector3 velocity = this->getVelocity();
     115            velocity.normalise();
     116            this->setVelocity(velocity * this->speed_);
    67117
    68         // TODO: Check why I have removed *dt (1337)
    69         this->yaw(Radian(this->yaw_ * this->rotationSpeed_));
    70         this->pitch(Radian(this->pitch_ * this->rotationSpeed_));
    71         this->roll(Radian(this->roll_ * this->rotationSpeed_));
     118            this->yaw(Radian(this->yaw_ * this->rotationSpeed_));
     119            this->pitch(Radian(this->pitch_ * this->rotationSpeed_));
     120            this->roll(Radian(this->roll_ * this->rotationSpeed_));
    72121
    73         this->yaw_ = this->pitch_ = this->roll_ = 0;
     122            this->yaw_ = this->pitch_ = this->roll_ = 0;
     123        }
    74124
    75125        SUPER(Spectator, tick, dt);
    76126
    77         this->setVelocity(Vector3::ZERO);
     127        if (this->isLocallyControlled())
     128        {
     129            this->setVelocity(Vector3::ZERO);
     130        }
    78131    }
    79132
     
    82135        ControllableEntity::setPlayer(player);
    83136
    84         this->setObjectMode(network::direction::toclient);
     137//        this->setObjectMode(network::direction::toclient);
     138    }
     139
     140    void Spectator::startLocalControl()
     141    {
     142        ControllableEntity::startLocalControl();
     143        if (this->isLocallyControlled())
     144            this->testmesh_->setVisible(false);
    85145    }
    86146
     
    118178    {
    119179    }
     180
     181    void Spectator::greet()
     182    {
     183        this->bGreeting_ = !this->bGreeting_;
     184
     185        if (Core::isMaster())
     186        {
     187            this->bGreetingFlareVisible_ = this->bGreeting_;
     188            this->changedFlareVisibility();
     189        }
     190    }
    120191}
Note: See TracChangeset for help on using the changeset viewer.