00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _MODELCOLLISIONHULL_
00019 #define _MODELCOLLISIONHULL_
00020
00021 #include "game/BaseCollisionHull.h"
00022 #include "game/CollisionHullFactory.h"
00023
00024 #include "util/ModelResource.h"
00025
00026 class ResourceCache;
00027
00028 class ModelCollisionHull : public BaseCollisionHull
00029 {
00030 private:
00031 bool m_bParsed;
00032 ModelResource m_resource;
00033 public:
00034 DEFAULT_COLLISIONHULL_CONSTRUCTOR(ModelCollisionHull, INIT1(m_bParsed, false));
00035
00036 ModelCollisionHull(const ModelResource & resource, ResourceCache* pResourceCache)
00037 :BaseCollisionHull("collisionhull_model", pResourceCache), m_resource(resource), m_bParsed(false)
00038 {
00039 }
00040
00041 void SetModelResource(const ModelResource & resource) { m_resource = resource; }
00042 const ModelResource & GetModelResource() const { return m_resource; }
00043
00044 virtual void FromStream(std::istream & stream);
00045 virtual void ParseShapes();
00046 virtual bool FromAttribute(const Attribute * pRoot);
00047 };
00048
00049 typedef boost::shared_ptr<ModelCollisionHull> ModelCollisionHullPtr;
00050
00051 REGISTER_COLLISIONHULL(ModelCollisionHull, "collisionhull_model");
00052
00053 #endif