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

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

?? opc_collider.h

?? opcode是功能強大
?? H
字號:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
 *	OPCODE - Optimized Collision Detection
 *	Copyright (C) 2001 Pierre Terdiman
 *	Homepage: http://www.codercorner.com/Opcode.htm
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Contains base collider class.
 *	\file		OPC_Collider.h
 *	\author		Pierre Terdiman
 *	\date		June, 2, 2001
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Include Guard
#ifndef __OPC_COLLIDER_H__
#define __OPC_COLLIDER_H__

	enum CollisionFlag
	{
		OPC_FIRST_CONTACT		= (1<<0),		//!< Report all contacts (false) or only first one (true)
		OPC_TEMPORAL_COHERENCE	= (1<<1),		//!< Use temporal coherence or not
		OPC_CONTACT				= (1<<2),		//!< Final contact status after a collision query
		OPC_TEMPORAL_HIT		= (1<<3),		//!< There has been an early exit due to temporal coherence
		OPC_NO_PRIMITIVE_TESTS	= (1<<4),		//!< Keep or discard primitive-bv tests in leaf nodes (volume-mesh queries)

		OPC_CONTACT_FOUND		= OPC_FIRST_CONTACT | OPC_CONTACT,
		OPC_TEMPORAL_CONTACT	= OPC_TEMPORAL_HIT | OPC_CONTACT,

		OPC_FORCE_DWORD			= 0x7fffffff
	};

	class Collider
	{
		public:
		// Constructor / Destructor
											Collider();
		virtual								~Collider();

		// Collision report

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Gets the last collision status after a collision query.
		 *	\return		true if a collision occured
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			GetContactStatus()			const	{ return mFlags & OPC_CONTACT;							}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Gets the "first contact" mode.
		 *	\return		true if "first contact" mode is on
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			FirstContactEnabled()		const	{ return mFlags & OPC_FIRST_CONTACT;					}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Gets the temporal coherence mode.
		 *	\return		true if temporal coherence is on
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			TemporalCoherenceEnabled()	const	{ return mFlags & OPC_TEMPORAL_COHERENCE;				}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Checks a first contact has already been found.
		 *	\return		true if a first contact has been found and we can stop a query
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			ContactFound()				const	{ return (mFlags&OPC_CONTACT_FOUND)==OPC_CONTACT_FOUND;	}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Checks there's been an early exit due to temporal coherence;
		 *	\return		true if a temporal hit has occured
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			TemporalHit()				const	{ return mFlags & OPC_TEMPORAL_HIT;						}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Checks primitive tests are enabled;
		 *	\return		true if primitive tests must be skipped
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			SkipPrimitiveTests()		const	{ return mFlags & OPC_NO_PRIMITIVE_TESTS;				}

		// Settings

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Reports all contacts (false) or first contact only (true)
		 *	\param		flag		[in] true for first contact, false for all contacts
		 *	\see		SetTemporalCoherence(bool flag)
		 *	\see		ValidateSettings()
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				void			SetFirstContact(bool flag)
											{
												if(flag)	mFlags |= OPC_FIRST_CONTACT;
												else		mFlags &= ~OPC_FIRST_CONTACT;
											}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Enable/disable temporal coherence.
		 *	\param		flag		[in] true to enable temporal coherence, false to discard it
		 *	\see		SetFirstContact(bool flag)
		 *	\see		ValidateSettings()
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				void			SetTemporalCoherence(bool flag)
											{
												if(flag)	mFlags |= OPC_TEMPORAL_COHERENCE;
												else		mFlags &= ~OPC_TEMPORAL_COHERENCE;
											}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Enable/disable primitive tests.
		 *	\param		flag		[in] true to enable primitive tests, false to discard them
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				void			SetPrimitiveTests(bool flag)
											{
												if(!flag)	mFlags |= OPC_NO_PRIMITIVE_TESTS;
												else		mFlags &= ~OPC_NO_PRIMITIVE_TESTS;
											}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Validates current settings. You should call this method after all the settings / callbacks have been defined for a collider.
		 *	\return		null if everything is ok, else a string describing the problem
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		virtual				const char*		ValidateSettings()	= 0;

		protected:
							udword			mFlags;			//!< Bit flags
					const	BaseModel*		mCurrentModel;	//!< Current model for collision query (owner of touched faces)
		// User mesh interface
					const	MeshInterface*	mIMesh;			//!< User-defined mesh interface

		// Internal methods
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Setups current collision model
		 *	\param		model	[in] current collision model
		 *	\return		TRUE if success
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		inline_				BOOL			Setup(const BaseModel* model)
											{
												// Keep track of current model
												mCurrentModel = model;
												if(!mCurrentModel)	return FALSE;

												mIMesh = model->GetMeshInterface();
												return mIMesh!=null;
											}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 *	Initializes a query
		 */
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		virtual inline_		void			InitQuery()		{ mFlags &= ~OPC_TEMPORAL_CONTACT;	}
	};

#endif // __OPC_COLLIDER_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片| 东方aⅴ免费观看久久av| 亚洲精品国产品国语在线app| 国产日产欧美一区二区视频| 国产免费久久精品| 国产精品欧美一区喷水| 亚洲天堂成人网| 亚洲精品免费在线| 婷婷激情综合网| 久久www免费人成看片高清| 国产激情一区二区三区四区| 99精品1区2区| 91精品国产综合久久精品app| 日韩西西人体444www| 中文字幕一区二区三区不卡| 亚洲成人1区2区| 经典三级在线一区| 亚洲一区在线播放| 国产九色精品成人porny| 91国偷自产一区二区三区观看 | 88在线观看91蜜桃国自产| 欧美mv和日韩mv国产网站| 国产女人18毛片水真多成人如厕| 亚洲成人免费视频| 成人性生交大片免费看视频在线 | 久久精品国产精品亚洲红杏| 成人av动漫网站| 日韩免费视频一区二区| 国产午夜三级一区二区三| 亚洲成a天堂v人片| 成人sese在线| 精品国产乱码久久久久久夜甘婷婷 | 一区二区三区久久| 国产99久久久国产精品潘金| 欧美猛男男办公室激情| 亚洲精选一二三| 成人黄色在线视频| 精品电影一区二区| 日本欧美一区二区三区乱码| 高清beeg欧美| 精品国产区一区| 麻豆精品一区二区| 欧美丰满一区二区免费视频| 亚洲在线中文字幕| 91蜜桃网址入口| 日韩一区中文字幕| 91香蕉视频污| ●精品国产综合乱码久久久久| 丰满放荡岳乱妇91ww| 久久精品亚洲国产奇米99| 69av一区二区三区| 亚洲一区免费观看| 色欧美片视频在线观看| 亚洲一区二三区| 欧美三片在线视频观看| 日本三级亚洲精品| 日韩一区二区三区在线| 韩国av一区二区三区在线观看| 国产免费久久精品| 欧美性xxxxxxxx| 奇米影视7777精品一区二区| 欧美大胆一级视频| 成人免费毛片app| 一区二区三区四区乱视频| 99精品视频免费在线观看| 国产精品嫩草影院av蜜臀| 成人h动漫精品一区二| 有码一区二区三区| 欧美日韩亚洲综合一区二区三区| 奇米888四色在线精品| 中文字幕乱码日本亚洲一区二区| 欧美影院午夜播放| 国产麻豆午夜三级精品| 天堂蜜桃一区二区三区| 国产拍揄自揄精品视频麻豆| 在线观看视频一区| 国产一区二区网址| 午夜精品在线视频一区| 国产精品毛片久久久久久久| 欧美成人一区二区三区片免费| 色婷婷综合久久| eeuss国产一区二区三区| 狠狠狠色丁香婷婷综合激情| 亚洲一区在线视频| 成人欧美一区二区三区在线播放| 欧美成人激情免费网| 爽爽淫人综合网网站| 亚洲欧洲成人精品av97| 久久色视频免费观看| 日韩亚洲欧美一区二区三区| 欧美性猛片aaaaaaa做受| 94-欧美-setu| 99精品欧美一区二区三区综合在线| 国产精品夜夜嗨| 日韩精品专区在线| 欧美精品三级在线观看| 欧美蜜桃一区二区三区| 日韩欧美高清dvd碟片| 精品日韩一区二区三区免费视频| 日韩一二在线观看| 欧美精彩视频一区二区三区| 日本一区二区久久| 亚洲综合色自拍一区| 性欧美疯狂xxxxbbbb| 经典三级在线一区| 99视频热这里只有精品免费| 在线日韩一区二区| 日韩欧美国产午夜精品| 国产精品国产三级国产| 午夜av一区二区三区| 国产一区二区三区四| k8久久久一区二区三区| 91黄色激情网站| 91精品视频网| 91精品国产综合久久久久久漫画| 欧美精品一区二区久久久| 中文字幕国产一区| 亚洲欧美视频在线观看| 午夜精品久久久久久久久久久 | 中文字幕精品三区| 国产精品美女久久久久久久久久久| 久久久久久久久久久黄色| 久久精品在这里| 亚洲精品欧美激情| 日韩国产高清影视| 韩国女主播一区| 91免费观看视频在线| 91麻豆精品91久久久久久清纯 | 精品1区2区3区| 免费在线观看日韩欧美| jlzzjlzz欧美大全| 日韩三级av在线播放| ●精品国产综合乱码久久久久| 日韩在线卡一卡二| 91小视频在线观看| 国产精品久久久久久久久图文区 | 日本精品一级二级| 久久综合久久久久88| 婷婷国产v国产偷v亚洲高清| 一本一道久久a久久精品综合蜜臀| 久久久99免费| 看片网站欧美日韩| 精品国产区一区| 精品一区二区免费看| 欧美成人综合网站| 成人精品国产一区二区4080| 中文字幕免费不卡| 亚洲免费观看高清完整版在线| 婷婷一区二区三区| 欧美区视频在线观看| 久久久久国产精品厨房| 青青青伊人色综合久久| 国内外成人在线| 欧美巨大另类极品videosbest| 中文字幕一区二区日韩精品绯色 | 日本韩国一区二区三区视频| 亚洲精品水蜜桃| 欧美色老头old∨ideo| 免费国产亚洲视频| 国产三级精品视频| 成人爽a毛片一区二区免费| 色哟哟在线观看一区二区三区| 欧美一区二区三区在| 日韩中文字幕亚洲一区二区va在线| 99麻豆久久久国产精品免费优播| 日韩一级大片在线观看| 精品国产欧美一区二区| 99这里只有精品| 精品欧美一区二区在线观看| 亚洲精品一二三区| 一本大道av伊人久久综合| 亚洲视频在线观看三级| 精品夜夜嗨av一区二区三区| 中文字幕av在线一区二区三区| 国产精品亚洲一区二区三区在线 | 国产白丝网站精品污在线入口| 亚洲乱码一区二区三区在线观看| 精品播放一区二区| 在线综合+亚洲+欧美中文字幕| 色老头久久综合| 成人动漫一区二区三区| 久久国产剧场电影| 男男视频亚洲欧美| 肉丝袜脚交视频一区二区| 国产精品传媒在线| 亚洲免费成人av| 中文字幕一区二| 国产精品久久福利| 国产午夜精品一区二区三区四区| 欧美mv和日韩mv的网站| 日韩一区二区电影在线| 欧美日韩高清一区二区不卡| 99久久99久久久精品齐齐| av中文字幕一区| 99国产精品99久久久久久| eeuss鲁一区二区三区| 狠狠色伊人亚洲综合成人| 麻豆成人久久精品二区三区小说| 1024成人网色www| 久久精品视频一区二区三区|