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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? navigationmesh.h

?? 一個(gè)人工智能方面的小程序,用OPENGL和VC++做到,希望對(duì)大家有所啟發(fā)
?? H
字號(hào):
/* Copyright (C) Greg Snook, 2000.  * All rights reserved worldwide. * * This software is provided "as is" without express or implied * warranties. You may freely copy and compile this source into * applications you distribute provided that the copyright text * below is included in the resulting source code, for example: * "Portions Copyright (C) Greg Snook, 2000" */#ifndef NAVIGATIONMESH_H#define NAVIGATIONMESH_H/****************************************************************************************\	NavigationMesh.h	NavigationMesh component interface for the Navimesh sample program.	Included as part of the Game Programming Gems sample code.	Created 3/18/00 by Greg Snook	greg@mightystudios.com    ------------------------------------------------------------------------------------- 	Notes/Revisions:\****************************************************************************************/#ifndef _MTXLIB_H#include "mtxlib.h"#endif#ifndef NAVIGATIONCELL_H#include "navigationcell.h"#endif#ifndef NAVIGATIONHEAP_H#include "navigationheap.h"#endif#ifndef STD_VECTOR_H#define STD_VECTOR_H#pragma warning(disable : 4786)#include <vector>#endif#include <GL/glut.h>// forward declaration requiredclass NavigationPath;/*	NavigationMesh------------------------------------------------------------------------------------------		A NavigationMesh is a collecion of NavigationCells used to control object movement while	also providing path finding line-of-sight testing. It serves as a parent to all the	Actor objects which exist upon it.	------------------------------------------------------------------------------------------*/class NavigationMesh{public:	// ----- ENUMERATIONS & CONSTANTS -----	typedef	std::vector<NavigationCell*> CELL_ARRAY;	// ----- CREATORS ---------------------	NavigationMesh();	~NavigationMesh();	// ----- OPERATORS --------------------	// ----- MUTATORS ---------------------	void Clear();	void AddCell(const vector3& PointA, const vector3& PointB, const vector3& PointC);	void LinkCells();	vector3 SnapPointToCell(NavigationCell* Cell, const vector3& Point);	vector3 SnapPointToMesh(NavigationCell** CellOut, const vector3& Point);	NavigationCell* FindClosestCell(const vector3& Point)const;	bool LineOfSightTest(NavigationCell* StartCell, const vector3& StartPos, NavigationCell* EndCell, const vector3& EndPos);	bool BuildNavigationPath(NavigationPath& NavPath, NavigationCell* StartCell, const vector3& StartPos, NavigationCell* EndCell, const vector3& EndPos);	void ResolveMotionOnMesh(const vector3& StartPos, NavigationCell* StartCell, vector3& EndPos, NavigationCell** EndCell);	void Update(float elapsedTime = 1.0f);	void Render();	// ----- ACCESSORS --------------------	int TotalCells()const;	NavigationCell* Cell(int index);private:	// ----- DATA -------------------------	CELL_ARRAY m_CellArray; // the cells that make up this mesh	// path finding data...	int m_PathSession;	NavigationHeap m_NavHeap;	// ----- HELPER FUNCTIONS -------------	// ----- UNIMPLEMENTED FUNCTIONS ------	NavigationMesh( const NavigationMesh& Src);	NavigationMesh& operator=( const NavigationMesh& Src);};//- Inline Functions ---------------------------------------------------------------------//= CREATORS =============================================================================/*	NavigationMesh------------------------------------------------------------------------------------------		Default Object Constructor	------------------------------------------------------------------------------------------*/inline NavigationMesh::NavigationMesh():m_PathSession(0){	m_CellArray.clear();}/*	~NavigationMesh------------------------------------------------------------------------------------------		Default Object Destructor	------------------------------------------------------------------------------------------*/inline NavigationMesh::~NavigationMesh(){	Clear();}//= OPERATORS ============================================================================//= MUTATORS =============================================================================//:	Clear//----------------------------------------------------------------------------------------////	Delete all cells associated with this mesh ////-------------------------------------------------------------------------------------://inline void NavigationMesh::Clear(){	CELL_ARRAY::iterator	CellIter = m_CellArray.begin();	for(;CellIter != m_CellArray.end(); ++CellIter)	{		NavigationCell* Cell = *CellIter;		delete Cell;	}	m_CellArray.clear();}//:	AddCell//----------------------------------------------------------------------------------------////	Add a new cell, defined by the three vertices in clockwise order, to this mesh ////-------------------------------------------------------------------------------------://inline void NavigationMesh::AddCell(const vector3& PointA, const vector3& PointB, const vector3& PointC){	NavigationCell* NewCell = new NavigationCell;	NewCell->Initialize(PointA, PointB, PointC);	m_CellArray.push_back(NewCell);}//:	Render//----------------------------------------------------------------------------------------////	Render the mesh geometry to screen. The mesh is assumed to exist in world corrdinates //	for the purpose of this demo ////-------------------------------------------------------------------------------------://inline void NavigationMesh::Render(){    glPushMatrix();	glTranslatef(0.0f, 0.0f, 0.0f);	glBegin(GL_TRIANGLES);	// render each cell triangle	CELL_ARRAY::const_iterator	iter = m_CellArray.begin();	for(;iter != m_CellArray.end(); ++iter)	{		const NavigationCell* Cell = *iter;		int i;		for (i=0;i<3;++i)		{			char shade = (char)Cell->Vertex(i).y;			shade = 128+shade;			glColor4ub(shade, shade, shade, 0xff);			glTexCoord2f(0.0f, 0.0f);			glVertex3f(Cell->Vertex(i).x, Cell->Vertex(i).y, Cell->Vertex(i).z);		}	}	glEnd();	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);	glBegin(GL_TRIANGLES);	// render cell edges as wireframe for added visibility	iter = m_CellArray.begin();	for(;iter != m_CellArray.end(); ++iter)	{		const NavigationCell* Cell = *iter;		int i;		for (i=0;i<3;++i)		{			char shade = (char)Cell->Vertex(i).y;			shade = 64+shade;			glColor4ub(shade, shade, shade, 0x80);			glTexCoord2f(0.0f, 0.0f);			glVertex3f(Cell->Vertex(i).x, Cell->Vertex(i).y + 0.2, Cell->Vertex(i).z);		}	}	glEnd();	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);   	glPopMatrix();}//:	Update//----------------------------------------------------------------------------------------////	Does noting at this point. Stubbed for future use in animating the mesh ////-------------------------------------------------------------------------------------://inline void NavigationMesh::Update(float elapsedTime){}//= ACCESSORS ============================================================================inline int NavigationMesh::TotalCells()const{	return((int)m_CellArray.size());}inline NavigationCell* NavigationMesh::Cell(int index){	return(m_CellArray.at(index));}//- End of NavigationMesh ----------------------------------------------------------------//****************************************************************************************#endif  // end of file      ( NavigationMesh.h )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臂av日日欢夜夜爽一区| 亚洲一区二区欧美| 成人一区二区三区在线观看 | 欧美一区二区在线播放| 麻豆成人综合网| 久久久久久久久久看片| 97久久精品人人爽人人爽蜜臀| 中文字幕一区不卡| 欧美色倩网站大全免费| 精品亚洲欧美一区| 国产精品美日韩| 欧美日韩国产天堂| 国产专区综合网| 樱花影视一区二区| 精品奇米国产一区二区三区| 粉嫩13p一区二区三区| 亚洲一区影音先锋| 精品久久久久久久人人人人传媒 | 97久久超碰国产精品| 午夜精品久久久久久不卡8050| 日韩欧美国产一二三区| 91原创在线视频| 免费在线观看日韩欧美| 日本一二三四高清不卡| 欧美男生操女生| 国产精品亚洲成人| 亚洲国产视频在线| 久久久99久久精品欧美| 欧美日韩中文字幕一区二区| 国产盗摄一区二区| 五月天中文字幕一区二区| 国产日韩欧美亚洲| 在线播放中文字幕一区| 成人理论电影网| 久久99久久久久久久久久久| 一个色综合av| 国产欧美精品日韩区二区麻豆天美| 欧美日韩国产另类不卡| jvid福利写真一区二区三区| 日本午夜一区二区| 亚洲一区二区三区自拍| 国产精品色哟哟| 日韩欧美中文字幕公布| 欧美在线免费视屏| 成人黄色av电影| 国产乱国产乱300精品| 婷婷成人综合网| 亚洲香蕉伊在人在线观| 亚洲视频中文字幕| 久久久三级国产网站| 日韩三级av在线播放| 欧美日韩国产一级二级| 91黄色小视频| 一本一本久久a久久精品综合麻豆| 大胆欧美人体老妇| 国产麻豆91精品| 精品一区二区三区日韩| 麻豆视频一区二区| 日本免费在线视频不卡一不卡二| 亚洲图片有声小说| 有坂深雪av一区二区精品| 国产精品超碰97尤物18| 国产精品区一区二区三区| 久久久久久久久久电影| 精品不卡在线视频| 精品对白一区国产伦| 日韩欧美电影一区| 日韩欧美国产一区二区在线播放 | 午夜激情综合网| 亚洲一区二区三区小说| 亚洲国产aⅴ成人精品无吗| 最新日韩在线视频| 亚洲蜜臀av乱码久久精品| 最新国产の精品合集bt伙计| 成人欧美一区二区三区视频网页| 亚洲欧洲韩国日本视频| 日韩一区中文字幕| 一区二区视频在线| 亚洲一级不卡视频| 天天影视色香欲综合网老头| 偷偷要91色婷婷| 男女男精品网站| 韩国精品在线观看| 国产.欧美.日韩| 99精品在线观看视频| 在线看不卡av| 91精品蜜臀在线一区尤物| 精品日韩一区二区三区| 国产性做久久久久久| 亚洲欧洲国产日韩| 亚洲风情在线资源站| 日韩成人免费电影| 国产精品资源网站| 99视频超级精品| 欧美日韩dvd在线观看| 欧美成人性战久久| 日本一区二区三区在线不卡| 亚洲欧美国产77777| 日韩成人伦理电影在线观看| 国产精品羞羞答答xxdd| 97久久超碰国产精品| 欧美丰满少妇xxxbbb| 久久久蜜桃精品| 一级女性全黄久久生活片免费| 蜜桃av一区二区三区电影| 丰满少妇久久久久久久| 欧美性大战xxxxx久久久| 日韩欧美亚洲国产精品字幕久久久 | 亚洲免费伊人电影| 欧美aaaaaa午夜精品| 成人激情图片网| 欧美日韩国产成人在线免费| 久久久高清一区二区三区| 夜夜揉揉日日人人青青一国产精品| 三级欧美在线一区| 成人精品在线视频观看| 91精品国产全国免费观看| 中文字幕成人网| 日本在线不卡一区| 91丨九色丨尤物| 欧美videos大乳护士334| 中文字幕视频一区| 久久99深爱久久99精品| 91国内精品野花午夜精品 | 日韩一区二区在线观看视频| 中文字幕精品在线不卡| 免费亚洲电影在线| 一本大道久久a久久综合婷婷| 精品久久久久久久久久久久久久久 | 青草国产精品久久久久久| 94色蜜桃网一区二区三区| 日韩精品影音先锋| 亚洲午夜免费电影| 成人a区在线观看| 久久综合av免费| 日本中文在线一区| 欧美日韩国产在线观看| 国产精品久久久久久久久免费桃花| 麻豆精品国产91久久久久久| 欧美系列一区二区| 中文字幕欧美一| 国产成人精品一区二区三区网站观看| 欧美一区二区大片| 午夜欧美电影在线观看| 欧美中文字幕不卡| 亚洲精品菠萝久久久久久久| 成人午夜激情在线| 国产日韩高清在线| 黄网站免费久久| 日韩午夜中文字幕| 天堂va蜜桃一区二区三区| 色婷婷精品大视频在线蜜桃视频| 中文字幕第一区综合| 国产精品一区一区| 久久久久88色偷偷免费| 国产在线日韩欧美| 久久中文娱乐网| 极品瑜伽女神91| 精品国产乱码久久久久久影片| 亚洲国产日韩精品| 欧美影视一区在线| 亚洲国产精品久久艾草纯爱| 欧美性xxxxx极品少妇| 亚洲国产cao| 欧美一区二区三区婷婷月色| 奇米777欧美一区二区| 91精品国产欧美日韩| 免费美女久久99| 精品国产sm最大网站免费看| 精品一区在线看| 精品国产乱码久久久久久闺蜜| 精品一区二区影视| 欧美激情在线看| 色综合 综合色| 婷婷丁香久久五月婷婷| 日韩精品一区二区三区在线播放 | 日韩一区二区三区视频| 奇米色一区二区| 国产偷国产偷精品高清尤物 | 欧美电视剧在线看免费| 欧美老女人在线| 日韩高清国产一区在线| 日韩欧美你懂的| 国产成人免费视频网站 | 日韩一级片在线观看| 国产一区二三区| 国产精品成人一区二区艾草 | 一区二区欧美国产| 欧美日韩一区二区三区四区 | 欧美不卡在线视频| 成人av网站免费观看| 亚洲国产精品久久久久秋霞影院| 69堂国产成人免费视频| 国产毛片一区二区| 亚洲婷婷综合色高清在线| 91麻豆精品国产91久久久久| 国产综合久久久久久鬼色| 亚洲欧美另类小说视频| 欧美一级高清大全免费观看| 国产91丝袜在线18|