Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 28, 2008, 7:42:30 PM (15 years ago)
Author:
rgrieder
Message:

Added comments to the WorldEntity except for the non physics section of the header file (going to do that some time later).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc

    r2535 r2540  
    5252    const Vector3 WorldEntity::UP    = Vector3::UNIT_Y;
    5353
     54    /**
     55    @brief
     56        Creates a new WorldEntity that may immediately be used.
     57        All the default values are being set here.
     58    */
    5459    WorldEntity::WorldEntity(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), collisionShape_(0)
    55 
    5660    {
    5761        RegisterObject(WorldEntity);
     
    9296    }
    9397
     98    /**
     99    @brief
     100        Destroys the WorldEntity AND ALL its children with it.
     101    */
    94102    WorldEntity::~WorldEntity()
    95103    {
     
    172180    }
    173181
     182    /**
     183    @brief
     184        Network function that object this instance to its correct parent.
     185    */
    174186    void WorldEntity::parentChanged()
    175187    {
     
    182194    }
    183195
     196    /**
     197    @brief
     198        Attaches this object to a parent SceneNode.
     199    @Remarks
     200        Only use this method if you know exactly what you're doing!
     201        Normally, attaching works internally by attaching WE's.
     202    */
    184203    void WorldEntity::attachToNode(Ogre::SceneNode* node)
    185204    {
     
    190209    }
    191210
     211    /**
     212    @brief
     213        Detaches this object from a parent SceneNode.
     214    @Remarks
     215        Only use this method if you know exactly what you're doing!
     216        Normally, attaching works internally by attaching WE's.
     217    */
    192218    void WorldEntity::detachFromNode(Ogre::SceneNode* node)
    193219    {
     
    196222    }
    197223
     224    /**
     225    @brief
     226        Network callback for the collision type. Only change the type if it was valid.
     227    */
    198228    void WorldEntity::collisionTypeChanged()
    199229    {
     
    214244    }
    215245
     246    //! Network callback for this->bPhysicsActive_
    216247    void WorldEntity::physicsActivityChanged()
    217248    {
     
    222253    }
    223254
     255    //! Function is called to set the right flags in Bullet (if there is physics at all)
    224256    void WorldEntity::collisionCallbackActivityChanged()
    225257    {
     
    235267    }
    236268
     269    /**
     270    @brief
     271        Attaches a child WorldEntity to this object. This calls notifyBeingAttached()
     272        of the child WE.
     273    @Note
     274        The collision shape of the child object gets attached nevertheless. That also means
     275        that you can change the collision shape of the child and it correctly cascadeds the changes to this instance.
     276        Be aware of this implication: When implementing attaching of kinematic objects to others, you have to change
     277        this behaviour because you then might not want to merge the collision shapes.
     278    */
    237279    void WorldEntity::attach(WorldEntity* object)
    238280    {
     
    255297    }
    256298
     299    /**
     300    @brief
     301        Function gets called when this object is being attached to a new parent.
     302
     303        This operation is only allowed if the collision types "like" each other.
     304        - You cannot a attach a non physical object to a physical one.
     305        - Dynamic object can NOT be attached at all.
     306        - It is also not possible to attach a kinematic to a dynamic one.
     307        - Attaching of kinematic objects otherwise is not yet supported.
     308    */
    257309    bool WorldEntity::notifyBeingAttached(WorldEntity* newParent)
    258310    {
     
    300352    }
    301353
     354    /**
     355    @brief
     356        Detaches a child WorldEntity from this instance.
     357    */
    302358    void WorldEntity::detach(WorldEntity* object)
    303359    {
     
    324380    }
    325381
     382    /**
     383    @brief
     384        Function gets called when the object has been detached from its parent.
     385    */
    326386    void WorldEntity::notifyDetached()
    327387    {
     
    341401    }
    342402
     403    //! Returns an attached object (merely for XMLPort).
    343404    WorldEntity* WorldEntity::getAttachedObject(unsigned int index)
    344405    {
     
    353414    }
    354415
     416    //! Attaches an Ogre::SceneNode to this WorldEntity.
    355417    void WorldEntity::attachNode(Ogre::SceneNode* node)
    356418    {
     
    361423    }
    362424
     425    //! Detaches an Ogre::SceneNode from this WorldEntity.
    363426    void WorldEntity::detachNode(Ogre::SceneNode* node)
    364427    {
     
    367430    }
    368431
     432    //! Attaches an Ogre::MovableObject to this WorldEntity.
    369433    void WorldEntity::attachOgreObject(Ogre::MovableObject* object)
    370434    {
     
    372436    }
    373437
     438    //! Detaches an Ogre::MovableObject from this WorldEntity.
    374439    void WorldEntity::detachOgreObject(Ogre::MovableObject* object)
    375440    {
     
    377442    }
    378443
     444    //! Detaches an Ogre::MovableObject (by string) from this WorldEntity.
    379445    Ogre::MovableObject* WorldEntity::detachOgreObject(const Ogre::String& name)
    380446    {
     
    382448    }
    383449
     450    //! Attaches a collision Shape to this object (delegated to the internal CompoundCollisionShape)
    384451    void WorldEntity::attachCollisionShape(CollisionShape* shape)
    385452    {
     
    388455    }
    389456
     457    //! Detaches a collision Shape from this object (delegated to the internal CompoundCollisionShape)
    390458    void WorldEntity::detachCollisionShape(CollisionShape* shape)
    391459    {
     
    394462    }
    395463
    396     CollisionShape* WorldEntity::getAttachedCollisionShape(unsigned int index) const
     464    //! Returns an attached collision Shape of this object (delegated to the internal CompoundCollisionShape)
     465    CollisionShape* WorldEntity::getAttachedCollisionShape(unsigned int index)
    397466    {
    398467        return this->collisionShape_.getAttachedShape(index);
     
    417486#endif
    418487
     488    //! Returns the position relative to the root space
    419489    const Vector3& WorldEntity::getWorldPosition() const
    420490    {
     
    422492    }
    423493
     494    //! Returns the orientation relative to the root space
    424495    const Quaternion& WorldEntity::getWorldOrientation() const
    425496    {
     
    427498    }
    428499
     500    //! Returns the scaling applied relative to the root space in 3 coordinates
    429501    const Vector3& WorldEntity::getWorldScale3D() const
    430502    {
     
    432504    }
    433505
     506    /**
     507    @brief
     508        Returns the scaling applied relative to the root space in 3 coordinates
     509    @return
     510        Returns the scaling if it is uniform, 1.0f otherwise.
     511    */
    434512    float WorldEntity::getWorldScale() const
    435513    {
     
    438516    }
    439517
     518    /**
     519    @brief
     520        Sets the three dimensional scaling of this object.
     521    @Note
     522        Scaling physical objects has not yet been implemented and is therefore forbidden.
     523    */
    440524    void WorldEntity::setScale3D(const Vector3& scale)
    441525    {
     
    454538    }
    455539
     540    /**
     541    @brief
     542        Translates this WorldEntity by a vector.
     543    @param relativeTo
     544        @see TransformSpace::Enum
     545    */
    456546    void WorldEntity::translate(const Vector3& distance, TransformSpace::Enum relativeTo)
    457547    {
     
    476566    }
    477567
    478     void WorldEntity::rotate(const Quaternion& rotation, TransformSpace::Space relativeTo)
     568    /**
     569    @brief
     570        Rotates this WorldEntity by a quaternion.
     571    @param relativeTo
     572        @see TransformSpace::Enum
     573    */
    479574    void WorldEntity::rotate(const Quaternion& rotation, TransformSpace::Enum relativeTo)
    480575    {
     
    496591    }
    497592
    498     void WorldEntity::lookAt(const Vector3& target, TransformSpace::Space relativeTo, const Vector3& localDirectionVector)
     593    /**
     594    @brief
     595        Makes this WorldEntity look a specific target location.
     596    @param relativeTo
     597        @see TransformSpace::Enum
     598    @param localDirectionVector
     599        The vector which normally describes the natural direction of the object, usually -Z.
     600    */
    499601    void WorldEntity::lookAt(const Vector3& target, TransformSpace::Enum relativeTo, const Vector3& localDirectionVector)
    500602    {
     
    515617    }
    516618
    517     void WorldEntity::setDirection(const Vector3& direction, TransformSpace::Space relativeTo, const Vector3& localDirectionVector)
     619    /**
     620    @brief
     621        Makes this WorldEntity look in specific direction.
     622    @param relativeTo
     623        @see TransformSpace::Enum
     624    @param localDirectionVector
     625        The vector which normally describes the natural direction of the object, usually -Z.
     626    */
    518627    void WorldEntity::setDirection(const Vector3& direction, TransformSpace::Enum relativeTo, const Vector3& localDirectionVector)
    519628    {
     
    535644    }
    536645
     646    //! Activates physics if the CollisionType is not None.
    537647    void WorldEntity::activatePhysics()
    538648    {
     
    544654    }
    545655
     656    //! Deactivates physics but the CollisionType does not change.
    546657    void WorldEntity::deactivatePhysics()
    547658    {
     
    553664    }
    554665
     666    //! Tells whether the object has already been added to the Bullet physics World.
    555667    bool WorldEntity::addedToPhysicalWorld() const
    556668    {
     
    558670    }
    559671
     672    /**
     673    @brief
     674        Sets the CollisionType. This alters the object significantly! @see CollisionType.
     675    @Note
     676        Operation does not work on attached WorldEntities.
     677    */
    560678    void WorldEntity::setCollisionType(CollisionType type)
    561679    {
     
    647765    }
    648766
     767    //! Sets the CollisionType by string (used for the XMLPort)
    649768    void WorldEntity::setCollisionTypeStr(const std::string& typeStr)
    650769    {
     
    664783    }
    665784
     785    //! Gets the CollisionType by string (used for the XMLPort)
    666786    std::string WorldEntity::getCollisionTypeStr() const
    667787    {
     
    695815    }
    696816
     817    /**
     818    @brief
     819        Recalculates the accumulated child mass and calls recalculateMassProps()
     820        and notifies the parent of the change.
     821    @Note
     822        Called by a child WE
     823    */
    697824    void WorldEntity::notifyChildMassChanged()
    698825    {
     
    708835    }
    709836
     837    /**
     838    @brief
     839        Undertakes the necessary steps to change the collision shape in Bullet, even at runtime.
     840    @Note
     841        - called by this->collisionShape_
     842        - May have a REALLY big overhead when called continuously at runtime, because then we need
     843          to remove the physical body from Bullet and add it again.
     844    */
    710845    void WorldEntity::notifyCollisionShapeChanged()
    711846    {
     
    725860    }
    726861
     862    //! Updates all mass dependent parameters (mass, inertia tensor and child mass)
    727863    void WorldEntity::recalculateMassProps()
    728864    {
     
    740876            {
    741877                // Use default values to avoid very large or very small values
    742                 CCOUT(4) << "Warning: Setting the internal physical mass to 1.0 because mass_ is 0.0." << std::endl;
     878                CCOUT(4) << "Warning: Setting the internal physical mass to 1.0 because mass_ is 0.0" << std::endl;
    743879                btVector3 inertia(0, 0, 0);
    744880                this->collisionShape_.calculateLocalInertia(1.0f, inertia);
     
    752888    }
    753889
     890    //! Copies our own parameters for restitution, angular factor, dampings and friction to the bullet rigid body.
    754891    void WorldEntity::internalSetPhysicsProps()
    755892    {
Note: See TracChangeset for help on using the changeset viewer.