Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 1, 2008, 11:09:43 PM (15 years ago)
Author:
rgrieder
Message:
  • Added support for attaching physical WorldEntities to each other. Currently you can only add static objects to kinematic/dynamic/static other objects. Future plans involve attaching kinematic objects to static/kinematic ones. All other combinations don't make sense at all.
  • Added CollisionShape, SphereCollisionShape and CompoundCollisionShape

Usage for collision shapes (example):

<LinearEntity collisionType="kinematic">

<attached>

<Model position="0,0,0" scale=10 mesh="ast1.mesh" />
<StaticEntity position="0,10,0" collisionType="static"> # Everything else than "static" fails!

<collisionShapes>

<SphereCollisionShape radius=40 position="10,10,-10"/>
<CompoundCollisionShape position="4,4,4"> # You can also make compound shapes directly

<SphereCollisionShape radius=10/>

</CompoundCollisionShape>

</collisionShapes>

</StaticEntity>

</attached>

</LinearEntity>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/physics/src/orxonox/objects/Scene.cc

    r2298 r2303  
    3535#include <OgreLight.h>
    3636
     37#include "BulletCollision/BroadphaseCollision/btAxisSweep3.h"
     38#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"
     39#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h"
     40#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
     41
    3742#include "core/CoreIncludes.h"
    3843#include "core/Core.h"
    3944#include "core/XMLPort.h"
    40 
    41 #include "BulletCollision/BroadphaseCollision/btAxisSweep3.h"
    42 #include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h"
    43 #include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"
     45#include "objects/worldentities/WorldEntity.h"
    4446
    4547namespace orxonox
     
    123125
    124126        XMLPortObjectExtended(Scene, BaseObject, "", addObject, getObject, xmlelement, mode, true, false);
     127
     128        // finally add all rigid bodies to the physics engine
     129        if (hasPhysics())
     130        {
     131            for (std::list<BaseObject*>::const_iterator it = this->objects_.begin(); it != this->objects_.end(); ++it)
     132            {
     133                WorldEntity* temp = dynamic_cast<WorldEntity*>(*it);
     134                if (temp)
     135                {
     136                    if (temp->getCollisionType() != WorldEntity::None)
     137                        this->physicalWorld_->addRigidBody(temp->getPhysicalBody());
     138                }
     139            }
     140        }
    125141    }
    126142
     
    157173    {
    158174        if (physicalWorld_)
    159             physicalWorld_->stepSimulation(dt,10);
     175            physicalWorld_->stepSimulation(dt,(int)(dt/0.0166666f));
    160176    }
    161177
Note: See TracChangeset for help on using the changeset viewer.