Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/physics/physics_interface.h @ 10578

Last change on this file since 10578 was 9869, checked in by bensch, 18 years ago

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

File size: 2.1 KB
RevLine 
[4555]1/*!
[5039]2 * @file physics_interface.h
[4836]3  *  a physics interface simulating a body with a mass
[3954]4*/
5
[4375]6#ifndef _PHYSICS_INTERFACE_H
7#define _PHYSICS_INTERFACE_H
[3954]8
[4377]9#include "base_object.h"
[3954]10
[5143]11#include "vector.h"
[6616]12#include "quaternion.h"
[4397]13#ifndef NULL
[4480]14#define NULL 0          //!< NULL
[4397]15#endif
16
[4377]17// Forward Declaration
18class Field;
19
[3961]20//! A Physics interface
[3954]21/**
[4395]22   The PhysicsInterface is an extension to Any other object,
23   that can be used to turn it to be Physcally animated.
24   Still you have to connect fields.
25   IMPORTANT is, that when using PNodes this baseclass is ok.
26   BUT, when using any other class that does not by itself implement
27   PNode you __MUST__ implement all the virtual functions by your own
[3954]28*/
[4382]29class PhysicsInterface : virtual public BaseObject
[4377]30{
[9869]31  ObjectListDeclaration(PhysicsInterface);
[3954]32 public:
[4762]33  PhysicsInterface();
[4375]34  virtual ~PhysicsInterface();
[4836]35  /** @param mass the mass to set for this node. */
[4376]36  inline void setMass( float mass ) { this->mass = mass; };
[4836]37  /** @returns the mass of the node. */
[4376]38  inline float getMass( void ) const { return mass; };
[4836]39  /** @returns the mass of this node plus all its children (only valid for PNodes). */
[4376]40  inline float getTotalMass( void ) const { return mass + massChildren; };
[3954]41
[8190]42  /** @returns the velocity */
43  inline const Vector getVelocity() { return this->velocity; }
44  /** @returns the acceleration */
45  inline const Vector getAcceleration() { return this->acceleration; }
46
[5257]47  virtual void applyForce(const Vector& force);
[4395]48  virtual void applyField(Field* field);
[4377]49  virtual void tickPhys( float dt );
[4376]50
[4121]51 protected:
[4395]52  virtual void recalcMass();
[4376]53
[4555]54
[4376]55 private:
[4555]56  float          mass;                  //!< Mass of this object
57  float          massChildren;          //!< Sum of the masses of the children nodes
[4558]58
[8190]59  Vector         velocity;              //!< the velocity of the masspoint
60  Vector         acceleration;          //!< acceleration of the masspoint
61
[4555]62  Vector         forceSum;              //!< Total central force for this tick
63  Quaternion     momentumSum;           //!< Total momentum in this tick
[4558]64  bool           bForceApplied;         //!< If a force was applied to this object.
[3954]65};
66
[4375]67#endif /* _PHYSICS_INTERFACE_H */
Note: See TracBrowser for help on using the repository browser.