Panda3D

physxForceFieldShape.h

00001 // Filename: physxForceFieldShape.h
00002 // Created by:  enn0x (15Nov09)
00003 //
00004 ////////////////////////////////////////////////////////////////////
00005 //
00006 // PANDA 3D SOFTWARE
00007 // Copyright (c) Carnegie Mellon University.  All rights reserved.
00008 //
00009 // All use of this software is subject to the terms of the revised BSD
00010 // license.  You should have received a copy of this license along
00011 // with this source code in a file named "LICENSE."
00012 //
00013 ////////////////////////////////////////////////////////////////////
00014 
00015 #ifndef PHYSXFORCEFIELDSHAPE_H
00016 #define PHYSXFORCEFIELDSHAPE_H
00017 
00018 #include "pandabase.h"
00019 #include "pointerTo.h"
00020 #include "luse.h"
00021 
00022 #include "physxObject.h"
00023 #include "physxEnums.h"
00024 #include "physx_includes.h"
00025 
00026 class PhysxForceField;
00027 class PhysxForceFieldShapeGroup;
00028 
00029 ////////////////////////////////////////////////////////////////////
00030 //       Class : PhysxForceFieldShape
00031 // Description : Abstract base class for force field shapes.
00032 ////////////////////////////////////////////////////////////////////
00033 class EXPCL_PANDAPHYSX PhysxForceFieldShape : public PhysxObject, public PhysxEnums {
00034 
00035 PUBLISHED:
00036   void release();
00037 
00038   PhysxForceField *get_force_field() const;
00039   PhysxForceFieldShapeGroup *get_shape_group() const;
00040 
00041   void set_name(const char *name);
00042   void set_mat(const LMatrix4f &mat);
00043   void set_pos(const LPoint3f &pos);
00044 
00045   const char *get_name() const;
00046   LMatrix4f get_mat() const;
00047   LPoint3f get_pos() const;
00048 
00049   INLINE void ls() const;
00050   INLINE void ls(ostream &out, int indent_level=0) const;
00051 
00052 public:
00053   static PhysxForceFieldShape *factory(NxShapeType shapeType);
00054 
00055   virtual NxForceFieldShape *ptr() const = 0;
00056 
00057   virtual void link(NxForceFieldShape *shapePtr) = 0;
00058   virtual void unlink() = 0;
00059 
00060 protected:
00061   INLINE PhysxForceFieldShape();
00062 
00063 private:
00064   string _name;
00065 
00066 ////////////////////////////////////////////////////////////////////
00067 public:
00068   static TypeHandle get_class_type() {
00069     return _type_handle;
00070   }
00071   static void init_type() {
00072     PhysxObject::init_type();
00073     register_type(_type_handle, "PhysxForceFieldShape", 
00074                   PhysxObject::get_class_type());
00075   }
00076   virtual TypeHandle get_type() const {
00077     return get_class_type();
00078   }
00079   virtual TypeHandle force_init_type() {
00080     init_type();
00081     return get_class_type();
00082   }
00083 
00084 private:
00085   static TypeHandle _type_handle;
00086 };
00087 
00088 #include "physxForceFieldShape.I"
00089 
00090 #endif // PHYSXFORCEFIELDSHAPE_H
 All Classes Functions Variables Enumerations