亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogrecollisionmanager.h

?? opcode是功能強大
?? H
字號:
///////////////////////////////////////////////////////////////////////////////
///  @file OgreCollisionManager.h
///  @brief Collision Manager
///
///  @author The OgreOpcode Team
///
///////////////////////////////////////////////////////////////////////////////
///
///  This file is part of OgreOpcode.
///
///  A lot of the code is based on the Nebula Opcode Collision module, see docs/Nebula_license.txt
///
///  OgreOpcode is free software; you can redistribute it and/or
///  modify it under the terms of the GNU Lesser General Public
///  License as published by the Free Software Foundation; either
///  version 2.1 of the License, or (at your option) any later version.
///
///  OgreOpcode is distributed in the hope that it will be useful,
///  but WITHOUT ANY WARRANTY; without even the implied warranty of
///  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
///  Lesser General Public License for more details.
///
///  You should have received a copy of the GNU Lesser General Public
///  License along with OgreOpcode; if not, write to the Free Software
///  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
///
///////////////////////////////////////////////////////////////////////////////
#ifndef __OgreCollisionManager_h__
#define __OgreCollisionManager_h__

#include "OgreOpcodeExports.h"
#include <Ogre.h>
#include "OgreCollisionTypes.h"
#include "OgreNodes.h"
#include "OgreCollisionContext.h"
#include "Opcode/Opcode.h"
#include "IOgreCollisionShape.h"


#include <list>
#include <map>

/// Main %OgreOpcode namespace
namespace OgreOpcode
{
	namespace Details
	{
		typedef int CollisionClass;
	};

	/// Shape types
	enum ShapeType
	{
		SHAPETYPE_ENTITY	= 0,    ///< entity based shape
		SHAPETYPE_MESH		= 1,    ///< mesh based shape
		SHAPETYPE_PTR		= 2,    ///< raw ptr based shape
		SHAPETYPE_BOX		= 3,    ///< box shape
		SHAPETYPE_SPHERE	= 4,    ///< sphere shape
		SHAPETYPE_CAPSULE	= 5,    ///< capsule shape
		SHAPETYPE_TERRAIN	= 6		///< terrain shape
	};

	class MeshCollisionShape;
	class EntityCollisionShape;
	class BoxCollisionShape;
	class CapsuleMeshCollisionShape;
	class SphereMeshCollisionShape;
	class PtrCollisionShape;
	class TerrainCollisionShape;

	/// Collision manager.
	/// The CollisionManager object serves as factory object of the
	/// different classes of the collision system, namely
	/// CollisionContext and ICollisionShape. A CollisionContext
	/// serves as factory for CollisionObject%s.
	class _OgreOpcode_Export CollisionManager : public Ogre::Singleton<CollisionManager>
	{
		//friend class EntityCollisionShape;
	public:
		///TODO: Put these back into the private section!!
		Opcode::AABBTreeCollider opcTreeCollider; ///<
		Opcode::RayCollider      opcRayCollider; ///<
		Opcode::SphereCollider   opcSphereCollider; ///<
		Opcode::PlanesCollider   opcPlanesCollider; ///<
		Opcode::LSSCollider      opcSweptSphereCollider; ///<
		Opcode::BVTCache         opcTreeCache; ///<
		Opcode::CollisionFaces   opcFaceCache; ///<
		Opcode::SphereCache      opcSphereCache; ///<
		Opcode::PlanesCache      opcPlanesCache; ///<
		Opcode::LSSCache         opcSweptSphereCache; ///<

		CollisionManager(Ogre::SceneManager *);
		virtual ~CollisionManager();

		static CollisionManager& getSingleton(void);
		static CollisionManager* getSingletonPtr(void);

		///
		CollisionContext *createContext(const Ogre::String&);
		///
		void destroyContext(CollisionContext *);

		///
		MeshCollisionShape* createMeshCollisionShape(const Ogre::String&);
		///
		EntityCollisionShape* createEntityCollisionShape(const Ogre::String&);
		///
		BoxCollisionShape* createBoxCollisionShape(const Ogre::String&);
		//
		CapsuleMeshCollisionShape* createCapsuleMeshCollisionShape(const Ogre::String&);
		///
		SphereMeshCollisionShape* createSphereMeshCollisionShape(const Ogre::String&);
		///
		PtrCollisionShape* createPtrCollisionShape(const Ogre::String&);
		///
		TerrainCollisionShape* createTerrainCollisionShape(const Ogre::String&);

		///
		void destroyShape(ICollisionShape *);

		///
		void attachContext(CollisionContext *);
		///
		void attachShape(ICollisionShape *);
		///
		void detachContext(CollisionContext *);
		///
		void detachShape(ICollisionShape *);

		///
		CollisionContext *getDefaultContext(void);
		///
		CollisionContext *getContext(const Ogre::String& name);
		///
		Ogre::SceneManager *getSceneManager(void);
		///
		void setSceneManager(Ogre::SceneManager* newSceneMgr)
		{
			mSceneMgr  = newSceneMgr;
		}

		///
		const int getShapeCount()
		{
			return static_cast< int >( shape_list.size() );
		}

		// define collision classes and collision check relationships
		///
		void addCollClass(const Ogre::String &);
		///
		void addCollType(const Ogre::String&, const Ogre::String&, CollisionType);
		///
		Details::CollisionClass queryCollClass(const Ogre::String&);
		///
		CollisionType queryCollType(const Ogre::String&, const Ogre::String&);
		///
		CollisionType queryCollType(Details::CollisionClass cc1, Details::CollisionClass cc2);
		///
		Ogre::String getCollisionTypeEnum(CollisionType colltype);

	protected:
		///
		ICollisionShape *createShape(const Ogre::String&, const ShapeType shpType = SHAPETYPE_MESH);

		int unique_id; ///<
		typedef std::map<Ogre::String,CollisionContext*> ContextList;///<
		typedef ContextList::const_iterator ContextIterator;///<
		ContextList context_list;///<

		typedef HashMap<Ogre::String,ICollisionShape*> ShapeList;///<
		// TODO: Do I own these shapes? Or do I pass the responsibility on?
		ShapeList shape_list;///<
		typedef ShapeList::const_iterator ShapeIterator;///<

		typedef std::map<Ogre::String, Details::CollisionClass> CollClassList;///<
		CollClassList collclass_list;///<
		typedef CollClassList::const_iterator CollClassIterator;///<
		typedef std::map<int, CollisionType> CollTypeList;///<
		CollTypeList colltype_table;///<
		typedef CollTypeList::const_iterator CollTypeIterator;///<

		CollisionContext *default_context;///<

		Ogre::SceneManager *mSceneMgr;///<
		///
		Ogre::String getResourceID(const Ogre::String&);
	private:

		// Merge the 2 object id's into 1 32 bit id,
		// order them, so that any combination of 2 id's
		// results in the same merged id. Return true
		// a swap happened (because other attributes
		// may have to be swapped as well).
		bool get_merged_id(int id1, int id2, int& mrg)
		{
			if (id1 > id2)
			{
				mrg = ((id2 & 0xffff)<<16) | (id1 & 0xffff);
				return true;
			} else
			{
				mrg = ((id1 & 0xffff)<<16) | (id2 & 0xffff);
				return false;
			}
		};
	};

}; // namespace OgreOpcode

#endif // __OgreCollisionManager_h__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美日韩一区二区| 日本丶国产丶欧美色综合| 国产精品夜夜嗨| 91丨九色丨蝌蚪富婆spa| 在线播放中文字幕一区| 国产精品久久久久毛片软件| 日日摸夜夜添夜夜添精品视频| 成人av第一页| 久久精品人人爽人人爽| 无码av中文一区二区三区桃花岛| 国产激情一区二区三区| 日韩欧美亚洲一区二区| 亚洲一区二区欧美| av网站一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 日本免费在线视频不卡一不卡二| 国产又粗又猛又爽又黄91精品| 欧美日韩高清一区二区三区| 1000部国产精品成人观看| 国产一区二区在线视频| 91精品国产综合久久久久久久久久 | 国产欧美一区视频| 日韩成人一级片| 欧美日韩精品专区| 亚洲欧美日韩在线不卡| 99久久99久久精品国产片果冻| 久久无码av三级| 国产一区二区三区在线观看免费| 日韩欧美一级二级三级| 热久久国产精品| 精品日韩欧美在线| 久久精品国产成人一区二区三区 | 99久久精品国产一区| 国产女同性恋一区二区| 国产精品白丝av| 国产亚洲精品久| 成人污污视频在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 国产乱国产乱300精品| 久久久久久久电影| proumb性欧美在线观看| 亚洲精品免费视频| 欧美在线免费观看亚洲| 性做久久久久久久久| 欧美丰满少妇xxxbbb| 久久国产免费看| 中文字幕精品综合| 91影院在线免费观看| 亚洲综合在线观看视频| 91精品一区二区三区在线观看| 黄网站免费久久| 亚洲欧美中日韩| 日本精品一级二级| 无码av免费一区二区三区试看| 精品久久久久久久人人人人传媒| 国产精品99久久久久久似苏梦涵 | 天堂精品中文字幕在线| 91精品视频网| 懂色av噜噜一区二区三区av| 亚洲蜜桃精久久久久久久| 欧美日韩精品欧美日韩精品一综合| 日韩中文字幕区一区有砖一区 | 亚洲另类春色国产| 在线综合+亚洲+欧美中文字幕| 久久精品国产久精国产爱| 欧美激情综合五月色丁香小说| 色综合一个色综合| 日本亚洲三级在线| 国产欧美日本一区二区三区| 欧美在线小视频| 国产91精品欧美| 日韩av一区二| 最新中文字幕一区二区三区| 欧美一区二区三区四区在线观看 | 亚洲视频在线一区二区| 日韩午夜在线影院| eeuss影院一区二区三区| 日韩电影免费在线看| 自拍视频在线观看一区二区| 精品国产麻豆免费人成网站| 在线观看日韩国产| 国产在线国偷精品免费看| 一区二区三区欧美日韩| 久久久99精品久久| 欧美疯狂做受xxxx富婆| www.亚洲在线| 国产自产高清不卡| 日本欧洲一区二区| 亚洲一区在线播放| 18涩涩午夜精品.www| 2023国产一二三区日本精品2022| 欧美综合天天夜夜久久| 成人污视频在线观看| 极品少妇一区二区三区精品视频| 亚洲综合视频在线| 国产精品乱码一区二三区小蝌蚪| 日韩一区二区高清| 欧美性大战久久久| 一本久道中文字幕精品亚洲嫩| 国产盗摄一区二区三区| 美女在线观看视频一区二区| 午夜影院在线观看欧美| 一区二区三区影院| 亚洲欧洲无码一区二区三区| 久久久久久久久97黄色工厂| 久久在线观看免费| 精品1区2区在线观看| 91精品国产福利| 欧美一级xxx| 欧美一区二区三区免费视频 | 久久久精品国产免大香伊| 日韩免费观看高清完整版在线观看| 欧美日韩你懂得| 欧美美女一区二区在线观看| 欧美日韩精品专区| 91精品在线观看入口| 91精品国产综合久久久蜜臀粉嫩| 欧美高清视频一二三区 | 国产色综合久久| 国产色产综合色产在线视频| 国产日韩在线不卡| 久久精品无码一区二区三区| 欧美精彩视频一区二区三区| 中文字幕一区二区在线观看| 亚洲素人一区二区| 亚洲小少妇裸体bbw| 亚洲成人免费在线| 日本不卡中文字幕| 精品在线播放午夜| 国产91高潮流白浆在线麻豆| 成人性生交大片免费看视频在线| caoporn国产精品| 在线一区二区三区四区五区| 欧美精选一区二区| 精品久久久久99| 国产精品你懂的在线| 亚洲女厕所小便bbb| 午夜精品视频一区| 精品在线一区二区| 成人毛片视频在线观看| 一本大道av伊人久久综合| 欧美日本国产视频| 久久日一线二线三线suv| 18涩涩午夜精品.www| 婷婷国产在线综合| 国产一区二区三区精品视频| 97久久久精品综合88久久| 欧美精品第1页| 久久九九全国免费| 亚洲成人免费av| 国产麻豆成人精品| 欧美伊人久久久久久久久影院| 日韩女优av电影| 亚洲欧美综合网| 久久精品国产精品亚洲综合| 99精品欧美一区二区三区综合在线| 欧美日本高清视频在线观看| 国产欧美一区二区精品性| 亚洲资源中文字幕| 国产成人丝袜美腿| 欧美日产国产精品| 国产精品国产自产拍高清av王其| 亚洲1区2区3区视频| 成人综合婷婷国产精品久久免费| 精品视频999| 国产婷婷一区二区| 亚洲va国产天堂va久久en| 懂色av一区二区三区免费观看| 67194成人在线观看| 亚洲私人黄色宅男| 粉嫩av一区二区三区粉嫩 | 久久网这里都是精品| 亚洲成人免费影院| 91在线免费视频观看| www久久久久| 日精品一区二区| 欧美在线一二三四区| 国产精品久久精品日日| 国产一区二区不卡| 欧美一区二区三区免费视频 | 国产精品乱人伦中文| 久久精品国产99国产精品| 欧美性受xxxx| 国产精品久久久久毛片软件| 精一区二区三区| 日韩一区二区免费高清| 亚洲国产一区二区三区青草影视| 成人丝袜视频网| 国产欧美一区二区三区在线看蜜臀 | 99国产精品国产精品久久| 国产欧美一区二区精品忘忧草| 久色婷婷小香蕉久久| 欧美剧情片在线观看| 亚洲一线二线三线久久久| 91免费版pro下载短视频| 中文字幕一区二区三区乱码在线 | 中文字幕一区三区| 国产乱子伦视频一区二区三区 | 亚洲成人激情社区| 欧美在线一二三|