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

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

?? ogrecollisioncontext.h

?? opcode是功能強大
?? H
字號:
///////////////////////////////////////////////////////////////////////////////
///  @file OgreCollisionContext.h
///  @brief Contains the definition of the CollisionContext class.
///
///  @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 __OgreCollisionContext_h__
#define __OgreCollisionContext_h__

#include <Ogre.h>
#include "OgreNodes.h"
#include "OgreCollisionReporter.h"
#include "OgreCollisionTypes.h"
#include "OgreOpcodeDebugObject.h"
//#include "BP_Scene.h"
#include <Opcode/Opcode.h>

namespace OgreOpcode
{
	class CollisionObject;

	namespace Details
	{
		typedef int CollisionClass;

		class BP_Scene;

		class Encounter
		{
		public:
			CollisionObject* obj1;
			CollisionObject* obj2;

			Encounter(CollisionObject* o1, CollisionObject* o2)
			{
				obj1 = o2;
				obj2 = o1;
			}
		};

		inline bool operator<(const Encounter& x, const Encounter& y)
		{ 
			return x.obj1 < y.obj1 || (!(y.obj1 < x.obj1) && x.obj2 < y.obj2); 
		}

	};
	
	/// Defines a collision space.
	/// A CollisionContext creates a collision context, defined by
	/// a collection of CollisionObject%s which can collide with
	/// each other. CollisionObject%s can be added and removed
	/// from the context at any time.
	//   class _OgreOpcode_Export CollisionContext : public nNode
	class _OgreOpcode_Export CollisionContext
	{
	public:
		/// constructor
		CollisionContext(const Ogre::String& name);
		/// destructor
		virtual ~CollisionContext();
		/// create a collide object
		virtual CollisionObject *createObject(const Ogre::String& name);
		/// kills a collide object
		virtual void destroyObject(CollisionObject *collObj);
		/// add collide object to context
		virtual void addObject(CollisionObject *collObj);
		/// remove collide object from context
		virtual void removeObject(CollisionObject *collObj);
		/// compute contacts between collision objects in context
		virtual int collide(Ogre::Real dt=1.0);
		/// debug visualization of the collide context
		virtual void visualize(bool doVisualize, bool doRadii, bool doContacts, bool doBBs, bool doShapes, bool doAABBs);
		/// get the collide reports for the collisions computed inside collide()
		virtual int getCollisions(CollisionObject *collObj, CollisionPair **&cpPtr);
		/// get reporter for for last collide() call.
		const CollisionReporter& getCollisionReport();
		/// get reporter for for last Check...() call.
		const CollisionReporter& getCheckReport();
		/// get number of collisions for last collide call.
		const int getNumCollisions();
		/// do a "moving sphere" check against collide object radii in the context
		virtual int sweptSphereCheck(const Ogre::Vector3& position, const Ogre::Vector3& translateVector, Ogre::Real radius, Details::CollisionClass collClass, CollisionPair **& cpPtr, Ogre::String ignorename="");
		/// do a line-model check
		virtual int rayCheck(const Ogre::Ray line, const Ogre::Real dist, CollisionType collType, Details::CollisionClass collClass, CollisionPair**& cpPtr);
		/// do a sphere-model check
		virtual int sphereCheck(const Ogre::Sphere& ball, CollisionType collType, Details::CollisionClass collClass, CollisionPair**& cpPtr);
		/// reset position and timestamp of all objects
		void reset();
		/// 
		void update(Ogre::Real dt=1.0);

		Details::BP_Scene* getBroadPhase() { return mBroadPhase; };
		/// 

		virtual const Ogre::String& getName() { return mName; };

		/// 
		virtual CollisionObject* getAttachedObject(Ogre::String name);
		
		/// 
		virtual const std::vector<CollisionObject*> getAttachedObjects()
		{
			return attached_list;
		};

		/// 
		virtual const std::list<CollisionObject*>& getPotentialColliders(const CollisionObject* collidee);

		/// 
		virtual const std::vector<CollisionObject*> getOwnedObjects()
		{
			return owned_list;
		};

		/// 
		virtual const int getAttachedObjectCount()
		{
			return static_cast< int >( attached_list.size() );
		}

		/// 
		virtual const int getOwnedObjectCount()
		{
			return static_cast< int >( owned_list.size() );
		}

		///
		virtual void setRayCulling(bool rayCulling = true)
		{
			mRayCulling = rayCulling;
		}

		Details::OgreOpcodeDebugger* getVisualDebugger()
		{
			return mVisualDebugger;
		}

	private:

		friend class CollisionObject; ///<

		static const int max_aabbs = 256; ///<
		static const int maxnum_collisions = 4096; ///<

		CollisionReporter collideReportHandler;     ///< collide reports for collide()
		CollisionReporter checkReportHandler;       ///< collide reports for Check() functions

		IceMaths::AABB* aabb_array[max_aabbs]; ///<
		typedef std::multimap<int,CollisionObject*> CollObjAABBPairs;///<
		typedef CollObjAABBPairs::const_iterator CollObjAABBPair_Iterator;///<
		CollObjAABBPairs collAABB_pairs;	///<
		Details::BP_Scene* mBroadPhase;	///<
		typedef std::vector<CollisionObject*>::iterator rw_attached_list_iterator; ///<
		typedef std::vector<CollisionObject*>::iterator rw_owned_list_iterator; ///<
		typedef std::set<Details::Encounter> ProxList;
		ProxList proxList;

		static void addPair(void *client_data, void *object1, void *object2)
		{
			((ProxList *)client_data)->insert(Details::Encounter((CollisionObject*)object1, (CollisionObject*)object2));
		}

		static void removePair(void *client_data, void *object1, void *object2)
		{
			((ProxList *)client_data)->erase(Details::Encounter((CollisionObject*)object1, (CollisionObject*)object2));
		}

	protected:
		std::vector<CollisionObject*> owned_list;       ///< list of CollisionObject%s created by this context
		typedef std::vector<CollisionObject*>::const_iterator owned_list_iterator; ///<
		std::vector<CollisionObject*> attached_list;    ///< the list of objects currently attached to the context
		typedef std::vector<CollisionObject*>::const_iterator attached_list_iterator; ///<
		int unique_id; ///<
		Ogre::String mName; ///<
		bool mRayCulling; ///<
		bool mIsSAPDirty; ///<
		std::list<CollisionInfo> mRecentContactList; ///<
		Details::OgreOpcodeDebugger* mVisualDebugger; ///<
	};
}

#endif // __OgreCollisionContext_h__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7878成人国产在线观看| 亚洲图片一区二区| 久久综合久久综合九色| 91精品国产乱| 日韩一级片在线播放| 91精品国产综合久久精品| 欧美猛男男办公室激情| 欧美日韩国产精选| 欧美一级高清片| 日韩视频在线永久播放| 日韩一级二级三级| 日韩精品一区二区三区四区| 欧美videos大乳护士334| 精品国产伦一区二区三区观看体验 | 国产精品污www在线观看| 欧美国产综合一区二区| 国产精品国产三级国产aⅴ入口 | 欧美aaa在线| 五月天视频一区| 免费成人美女在线观看.| 久久99精品久久久| 国产精品夜夜嗨| 成人在线综合网| 91尤物视频在线观看| 在线看日韩精品电影| 欧美绝品在线观看成人午夜影视| 日韩视频一区二区在线观看| 精品粉嫩aⅴ一区二区三区四区| 久久九九全国免费| 亚洲色图制服诱惑| 丝袜亚洲精品中文字幕一区| 六月丁香婷婷色狠狠久久| 国内精品写真在线观看| av影院午夜一区| 欧美日韩国产免费一区二区| 精品嫩草影院久久| 国产精品国产三级国产a | 91老司机福利 在线| 欧美日韩免费一区二区三区| 精品国精品国产尤物美女| 国产精品欧美一区喷水| 亚洲午夜一区二区三区| 麻豆一区二区三| www.欧美日韩| 91麻豆精品国产91久久久久久| 久久久久综合网| 夜夜嗨av一区二区三区网页| 秋霞电影网一区二区| 成人99免费视频| 717成人午夜免费福利电影| 国产日韩欧美精品一区| 亚洲电影一区二区三区| 国产盗摄女厕一区二区三区| 欧美亚洲一区三区| 久久久精品tv| 亚洲不卡在线观看| 粉嫩13p一区二区三区| 在线播放国产精品二区一二区四区 | 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | heyzo一本久久综合| 日韩欧美一级片| 亚洲精品国久久99热| 精品一区二区三区不卡 | 中文字幕第一区综合| 日韩成人精品在线| av电影在线观看完整版一区二区| 制服丝袜中文字幕一区| 1区2区3区国产精品| 精品在线免费观看| 欧美日韩一级二级| 国产精品妹子av| 国产最新精品精品你懂的| 欧美日韩国产美| 亚洲日本乱码在线观看| 国产成人超碰人人澡人人澡| 欧美日韩国产综合一区二区| 国产精品理伦片| 狠狠色2019综合网| 69av一区二区三区| 一区二区三区精品| 懂色av中文字幕一区二区三区 | 一区二区三区在线观看视频 | 欧美高清一级片在线| 日韩美女啊v在线免费观看| 精品一区二区免费| 911精品国产一区二区在线| 亚洲另类中文字| 波多野结衣一区二区三区 | 激情五月婷婷综合| 欧美精品1区2区3区| 亚洲图片有声小说| 欧美色综合影院| 樱花草国产18久久久久| caoporm超碰国产精品| 久久品道一品道久久精品| 奇米影视7777精品一区二区| 欧美日韩久久久一区| 一区二区三区免费网站| 91免费小视频| 最新久久zyz资源站| 成人午夜电影久久影院| 欧美激情中文不卡| 成人免费视频免费观看| 日本一区免费视频| 成人激情动漫在线观看| 中文字幕第一页久久| yourporn久久国产精品| 亚洲欧美综合色| 色诱视频网站一区| 夜夜爽夜夜爽精品视频| 欧美人与性动xxxx| 日韩av一区二区在线影视| 欧美一区二区三区在线| 蜜臀久久久久久久| 2024国产精品| 成人夜色视频网站在线观看| 国产精品毛片a∨一区二区三区 | 国产精品视频一二三| 成人黄色片在线观看| 亚洲人成在线播放网站岛国 | 一区二区三区日韩欧美精品| 色国产综合视频| 亚洲国产精品精华液网站| 欧美精品日韩精品| 久久精品国产秦先生| 精品久久久久久最新网址| 国产麻豆精品95视频| 国产精品麻豆欧美日韩ww| 色综合欧美在线视频区| 亚洲一区视频在线| 3d动漫精品啪啪| 国产盗摄视频一区二区三区| 亚洲精品自拍动漫在线| 在线成人小视频| 国产揄拍国内精品对白| 亚洲欧洲无码一区二区三区| 欧美天堂一区二区三区| 免费三级欧美电影| 亚洲国产精品成人综合色在线婷婷 | 欧美一区三区二区| 国产酒店精品激情| 自拍偷拍欧美精品| 欧美一个色资源| 国产69精品久久777的优势| 亚洲一区中文在线| 精品久久久网站| 97精品电影院| 日本欧美在线看| 日本一区二区综合亚洲| 欧美日韩成人一区| 国产福利一区二区三区| 亚洲国产成人av网| 久久精品视频一区| 色悠悠久久综合| 狠狠久久亚洲欧美| 亚洲免费观看高清完整| 欧美精品一区二区三| 91欧美激情一区二区三区成人| 久久精品国产在热久久| 亚洲精品国产a| 久久久综合精品| 欧美另类高清zo欧美| 成人永久免费视频| 日韩成人av影视| 亚洲日本va在线观看| 久久久久久一二三区| 欧美日韩你懂的| 成人不卡免费av| 国产资源在线一区| 亚洲高清久久久| 国产精品麻豆一区二区| 精品精品欲导航| 欧美日韩精品一二三区| 成人黄色综合网站| 国产一区二区三区蝌蚪| 日韩综合一区二区| 夜夜亚洲天天久久| 国产精品国产三级国产aⅴ中文| 337p粉嫩大胆色噜噜噜噜亚洲| 在线欧美一区二区| 91在线porny国产在线看| 国产高清久久久久| 九九视频精品免费| 日本三级韩国三级欧美三级| 亚洲自拍偷拍九九九| 亚洲丝袜自拍清纯另类| 精品88久久久久88久久久| 日韩一区二区三区视频| 欧美日韩国产欧美日美国产精品| 91浏览器在线视频| 91污片在线观看| 成人av网址在线观看| 国产成人日日夜夜| 国产综合久久久久久鬼色| 精品一区二区三区香蕉蜜桃| 日本三级亚洲精品| 蜜臀久久99精品久久久久宅男| 石原莉奈在线亚洲二区| 亚洲成a人片综合在线| 亚洲成人第一页|