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

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

?? chmazmod.cpp

?? Windows上的MUD客戶端程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*----------------------------------------------------------------------------
                        _                              _ _       
        /\             | |                            | (_)      
       /  \   _ __   __| |_ __ ___  _ __ ___   ___  __| |_  __ _ 
      / /\ \ | '_ \ / _` | '__/ _ \| '_ ` _ \ / _ \/ _` | |/ _` |
     / ____ \| | | | (_| | | | (_) | | | | | |  __/ (_| | | (_| |
    /_/    \_\_| |_|\__,_|_|  \___/|_| |_| |_|\___|\__,_|_|\__,_|

    The contents of this file are subject to the Andromedia Public
	License Version 1.0 (the "License"); you may not use this file
	except in compliance with the License. You may obtain a copy of
	the License at http://www.andromedia.com/APL/

    Software distributed under the License is distributed on an
	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
	implied. See the License for the specific language governing
	rights and limitations under the License.

    The Original Code is Pueblo client code, released November 4, 1998.

    The Initial Developer of the Original Code is Andromedia Incorporated.
	Portions created by Andromedia are Copyright (C) 1998 Andromedia
	Incorporated.  All Rights Reserved.

	Andromedia Incorporated                         415.365.6700
	818 Mission Street - 2nd Floor                  415.365.6701 fax
	San Francisco, CA 94103

    Contributor(s):
	--------------------------------------------------------------------------
	   Chaco team:  Dan Greening, Glenn Crocker, Jim Doubek,
	                Coyote Lussier, Pritham Shetty.

					Wrote and designed original codebase.

------------------------------------------------------------------------------

	Implementation for the ChGraphic class, which is used to display
	graphics, & accept selection of hot spots and sprites.

----------------------------------------------------------------------------*/

// $Header: /home/cvs/chaco/modules/client/msw/ChGraphx/ChMazMod.cpp,v 2.82 1996/09/12 19:09:43 pritham Exp $

#include "grheader.h"

#include <ctype.h>

#include <ChCore.h>
#include <ChHtmWnd.h>
#include <ChPane.h>

#if defined( CH_MSW ) && defined( CH_ARCH_16 )

	#include <ChUtil.h>

#endif	// defined( CH_MSW ) && defined( CH_ARCH_16 )

#include "ChGrMod.h"
#include "ChVrmlWnd.h"
#include "ChMazDep.h"

#if !defined( CH_PUEBLO_PLUGIN )
#include "ChMazePr.h"
#endif

#include "ChRlabPr.h"
#include "ChRenderData.h"

#if defined( CH_VRML_EVENTS )

#include "ChStubBrowser.h"
#include "ChVrmlEvent.h"

#endif	// defined( CH_VRML_EVENTS )

#include "ChMazCam.h"


#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))

#include "ChRLImg.h"

#endif	// defined( CH_USE_RLAB )

#ifdef _DEBUG
	#undef THIS_FILE
	static char THIS_FILE[] = __FILE__;
#endif


/*----------------------------------------------------------------------------
	Constants
----------------------------------------------------------------------------*/

#define GRAPHICS_PANE		1

									// Graphics img command modifiers for VRML

#define CH_GRAPH_VRML				"xch_graph_vrml"
#define CH_GRAPH_CMD_MINTIME   		"xch_minTime"
#define CH_GRAPH_CMD_MAXTIME   		"xch_maxTime"
#define CH_GRAPH_CMD_MAXMOVE   		"xch_maxMove"
#define CH_GRAPH_CMD_MAXROTATION   	"xch_maxRotation"
#define CH_GRAPH_CMD_STARTTIME   	"xch_startTime"
#define CH_GRAPH_CMD_PARAMS   		"params"
#define CH_CMD_NAME			   		"xch_cmd"

// IHTML magic name for the the current viewpoint node
#define theCurrentViewpoint			"current_viewpoint"

/*----------------------------------------------------------------------------
	Handler declarations
----------------------------------------------------------------------------*/

CH_DECLARE_MESSAGE_HANDLER( mazeInitHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeLoadCompleteHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeLoadErrorHandler )
#if !defined( CH_PUEBLO_PLUGIN )
CH_DECLARE_MESSAGE_HANDLER( mazeGetPageCountHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeGetPagesHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeGetPageDataHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeReleasePagesHandler )
#endif

CH_DECLARE_MESSAGE_HANDLER( mazeLoadSceneHandler )
CH_DECLARE_MESSAGE_HANDLER( mazeImageHookHandler )
#if !defined( CH_PUEBLO_PLUGIN )
CH_DECLARE_MESSAGE_HANDLER( mazePlayGraphicHandler )
#endif


static ChMsgHandlerDesc	mazeHandlers[] =
						{	{CH_MSG_INIT, 			mazeInitHandler},
							{CH_MSG_LOAD_COMPLETE,	mazeLoadCompleteHandler},
							{CH_MSG_LOAD_ERROR,		mazeLoadErrorHandler},
#if !defined( CH_PUEBLO_PLUGIN )
						{CH_MSG_GET_PAGE_COUNT,	mazeGetPageCountHandler},
							{CH_MSG_GET_PAGES,		mazeGetPagesHandler},
							{CH_MSG_GET_PAGE_DATA,	mazeGetPageDataHandler},
							{CH_MSG_RELEASE_PAGES,	mazeReleasePagesHandler},
#endif
							{CH_MSG_INLINE,			mazeImageHookHandler},
#if !defined( CH_PUEBLO_PLUGIN )
							{CH_MSG_PLAY_GRAPHIC,	mazePlayGraphicHandler},
#endif
							{CH_MSG_LOAD_SCENE,		mazeLoadSceneHandler}
						};
/*----------------------------------------------------------------------------
	Chaco menu handlers
----------------------------------------------------------------------------*/

CH_DECLARE_MESSAGE_HANDLER( graphicsViewMenuHandler )


/*----------------------------------------------------------------------------
	ChMazeMainInfo class
----------------------------------------------------------------------------*/

ChMazeMainInfo::ChMazeMainInfo( ChModuleID idModule,
								ChCore* pCore ) :
					ChGraphicMainInfo( idModule, pCore ),
					m_reg( GR_PREFS_GROUP ),
					m_pInProgressReqs(0),
					m_minNotifyTime(-1),
					m_maxNotifyTime(-1),
					m_lastTick(0),
					m_boolNotificationEnabled(false)
{
	ChPane*		pPane = GetPaneMgr()->FindPane( ChPaneMgr::strGraphicName );
	CRect		rtChild( -100, -100, -1, -1 );
	bool		boolCreated;


	m_pSettings	 = new ChVrmlSettings;
	ReadPreferences();
	m_pWnd = new ChPuebloVrmlWnd( this, m_pSettings );
	boolCreated = GetView()->Create( rtChild, pPane->GetFrameWnd() );

	ASSERT( boolCreated );

	GetView()->SetCmdHookMgr( &m_hookMgr );
	m_pStartReq = new ChMazeStartHTTPReq( GetView(), "" );
}

void ChMazeMainInfo::Initialize()
{	
	ChGraphicMainInfo::Initialize();

	// GetView()->SetHeadlight(false);	Why on earth did we do this????
}

ChMazeMainInfo::~ChMazeMainInfo()
{											/* ChGraphicMainInfo class does
												most all the work */

	ChPane*		pPane = GetPaneMgr()->FindPane( ChPaneMgr::strGraphicName );

	ASSERT( 0 != pPane );

	if ((GetView() == pPane->GetWindow()) &&
		(pPane->GetModuleID() == GetModuleID()))
	{
											// Remove the window from the pane
		pPane->SetOwner( 0, 0, 0 );
	}
											// Destroy the window
	if (GetView())
	{
		GetView()->DestroyWindow();
		delete m_pWnd;
		m_pWnd = 0;
	}

	ChMazeWnd::TermMazeWnd();

	delete m_pSettings;
}


void ChMazeMainInfo::RegisterDispatchers()
{
	chint16		sHandlerCount = sizeof( mazeHandlers ) /
								sizeof( ChMsgHandlerDesc );

	ChGraphicMainInfo::RegisterDispatchers();	  // inherit handlers
	m_graphicDispatcher.AddHandler( mazeHandlers, sHandlerCount );
}


void ChMazeMainInfo::ShowModule( bool boolShow )
{
	ChGraphicMainInfo::ShowModule( boolShow );
	GetView()->SendMessage( WM_QUERYNEWPALETTE );	// ???? fake out 3dr
	if(!boolShow) m_boolNotificationEnabled = false;

	#if 0
	if(!boolShow) 
	{
		// to track down leaks just temporary!!!!!!!!!!!
		ChPane*		pPane = GetPaneMgr()->FindPane( ChPaneMgr::strGraphicName );

		ASSERT( 0 != pPane );

		if ((GetView() == pPane->GetWindow()) &&
			(pPane->GetModuleID() == GetModuleID()))
		{
												// Remove the window from the pane
			pPane->SetOwner( 0, 0, 0 );
		}
												// Destroy the window
		if (GetView())
		{
			GetView()->DestroyWindow();
			delete m_pWnd;
			m_pWnd = 0;
		}

		ChMazeWnd::TermMazeWnd();
	
		CRect		rtChild( -100, -100, -1, -1 );
		m_pWnd = new ChPuebloVrmlWnd( this, m_pSettings );
		bool boolCreated = GetView()->Create( rtChild, pPane->GetFrameWnd() );

		ASSERT( boolCreated );

		GetView()->SetCmdHookMgr( &m_hookMgr );
		delete m_pStartReq;
		m_pStartReq = new ChMazeStartHTTPReq( GetView(), "" );
	}
	#endif
}


void ChMazeMainInfo::EndFrameTime()
{
	DWORD	luNow = GetTickCount();
	DWORD	luElapsed = luNow - m_luTime;
	string	strStatus;
	double	frameRate = luElapsed ? 1.0 / (float)luElapsed : 1.0;

	frameRate *= 1000.0;

	strStatus.Format( "Frames per second: %.2f", frameRate );
	WriteStatus( strStatus );
}

void ChMazeMainInfo::WriteStatus(const string &strMessage)
{
	ChStatusMsg		StatusMsg( (string&)strMessage );
	GetCore()->DispatchMsg( CH_CORE_MODULE_ID, StatusMsg );
}

void ChMazeMainInfo::DoCommand(string& strArgs)
{
	string strValue;
	//TRACE1("DoCommand: %s\n", strArgs);
	//  respond to hooked img messages
	if (ChHtmlWnd::GetHTMLAttribute( strArgs, CH_GRAPH_CMD, strValue ))
	{      
		#if defined( CH_ARCH_16 )    
		TrimLeft( strValue );
		#else
		strValue.TrimLeft();
		#endif
		char cmd[100];   
		#if defined( CH_ARCH_16 ) 
		    
		for ( int i = 0; i < 99 && !isspace( strValue[i] );  i++ )
		{
			cmd[i] = strValue[i];
		}  
		cmd[i] = 0;
		#else
		::sscanf(LPCTSTR(strValue), "%s", cmd);
		#endif
		string strCmd(cmd);

		#if defined( CH_ARCH_16 )   
		TrimLeft( strCmd );
		TrimRight( strCmd ); 
		#else
		strCmd.TrimLeft();
		strCmd.TrimRight();
		#endif            
		
		if(!strCmd.CompareNoCase("light"))
		{
			int	iLight;
			float fLevel; 
			#if defined( CH_ARCH_16 ) 
			const char* pstrStart = strValue;
			pstrStart += i;
			char * pstrEnd;
			iLight =  (int)strtol( pstrStart, &pstrEnd, 10 );
			pstrStart = pstrEnd;
			fLevel =  (int)strtod( pstrStart, &pstrEnd );
			#else
			::sscanf(LPCTSTR(strValue), "%s %d %f", cmd, &iLight, &fLevel);
			#endif
			//GetView()->AdjustLight(string(cmd), iLight, fLevel);
			GetView()->AdjustLight( strCmd, iLight, fLevel);
			return;
		}
		else if(!strCmd.CompareNoCase("draw"))
		{
									// <img xch_graph="draw">
			GetView()->UpdateWindow();
			#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
			GetView()->GetRenderContext()->Draw();
			#endif
			return;
		}
		else if(!strCmd.CompareNoCase("event"))
		{
									// <img xch_graph="event {type} {name} [count] {arg[s]}">
			ProcessEvent(strArgs);
			return;
		}
		else if (!strCmd.CompareNoCase( "load" ))
		{
			// Forwarded by pane as notification of what will happen
			OnLoadInitiated(string(""));
			return;
		}

		else
		{
			// handle all others tbd
		}
	}
	//else
	{
		string strVRML;
		if(ChHtmlWnd::GetHTMLAttribute( strArgs, CH_GRAPH_CMD_NODE, strVRML ))
		{
			string strCmd("node");
			GetView()->DoNodeCommand(strCmd, strVRML);
			return;
		}
	}
	
	{
		string strCmd;
		if(ChHtmlWnd::GetHTMLAttribute( strArgs, CH_EVENT_NOTIFY, strCmd ))
		{
			strCmd.TrimLeft();
			strCmd.TrimRight();
			if(!strCmd.CompareNoCase("move"))
			{
				SetupPositionNotification(strArgs);
			}
		 	return;
		}
	}
}

#if 0
// oughta do it this way someday
template <class eType> 
bool readMFEvent(string &in, const string &fmt, eType *&pEvent)
{
}
#endif

void ChMazeMainInfo::ProcessEvent(string& strArgs)
{
	#if defined(CH_VRML_EVENTS)
	string strValue;

//	TRACE1("ProcessEvent: %s\n", strArgs);
	//  respond to hooked img messages
									// <img xch_graph="event {node} {type} {eventName} [count] {arg[s]}">
									// example:
									// <img xch_graph="event MyCubeRotation SFRotation setRotation 0. 1. 0. .2">

	if (ChHtmlWnd::GetHTMLAttribute( strArgs, CH_GRAPH_CMD, strValue ))
	{      

		strValue.TrimLeft();
		char cmd[100];
		char name[200];
		char nodeName[200];
		char eventTypeName[200];
		int numBytes = 0;	

		ChVRMLEvent::type	eventType;
	   
		int numRead = ::sscanf(LPCTSTR(strValue), "%s %s %s %s%n", cmd, nodeName, eventTypeName, name, &numBytes);

		if(numRead >= 4)
		{
			ChVrmlBrowser * pBrowser = GetView()->GetBrowser();

			// Find the subject node
			
			string strNode(nodeName);

			ChNode * pNode = (pBrowser->Resolve(0, strNode));
			if(pNode == 0 && !strNode.CompareNoCase(theCurrentViewpoint))
			{
				pNode = pBrowser->GetViewpoint();
			}
			ChNode *pSFNode = 0;

			if(pNode)
			{
				// Got a node to work on
				string strEvent(eventTypeName);
				eventType = pBrowser->GetType(strEvent);
				ChIVrmlEvent *pEvent = 0;
			
				switch(eventType)
				{
					case ChVRMLEvent::SFRotation :
					{
						float x, y, z, angle;
						int numRead = ::sscanf(LPCTSTR(strValue) + numBytes, "%f %f %f %f", &x, &y, &z, &angle);
						pEvent = new ChRotationEvent(name, x, y, z, angle);
						break;
					}
					case ChVRMLEvent::SFVec3f :
					{
						float x, y, z;
						int numRead = ::sscanf(LPCTSTR(strValue) + numBytes, "%f %f %f", &x, &y, &z);
						pEvent = new ChVec3fEvent(name, x, y, z);
						break;
					}
					case ChVRMLEvent::MFVec3f :
					{
						int count;
						int nBytes = numBytes;
						int n;
						int numRead = ::sscanf(LPCTSTR(strValue) + nBytes, "%d%n", &count, &n);
						if(numRead)
						{
							float *val = new float [count*3];
							for(int i = 0; i < count * 3; i++)
							{
								nBytes += n;
								numRead = ::sscanf(LPCTSTR(strValue) + nBytes, "%f%n", val+i, &n);
								if(!numRead) break;
							}
							if(numRead) pEvent = new ChVec3fEvent(name, count, val);
							delete []val;
						}
						break;
					}
					case ChVRMLEvent::SFLong :
					{
						long value;
						int numRead = ::sscanf(LPCTSTR(strValue) + numBytes, "%d", &value);
						pEvent = new ChLongEvent(name, value);
						break;
					}
					case ChVRMLEvent::SFFloat :
					{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产第一综合99久久 | aa级大片欧美| 日韩精品中文字幕在线不卡尤物 | 国产在线播精品第三| 在线播放中文字幕一区| 亚洲一区二区成人在线观看| 99久久er热在这里只有精品66| 欧美sm极限捆绑bd| 国产激情视频一区二区在线观看 | 亚洲第一福利视频在线| 欧美日韩中文国产| 日韩电影一二三区| 久久影视一区二区| 成人免费观看视频| 亚洲一区二区欧美日韩| 日韩午夜中文字幕| 99久久99久久精品国产片果冻| 国产精品视频线看| 欧洲视频一区二区| 蜜桃在线一区二区三区| 国产无人区一区二区三区| 99精品视频免费在线观看| 亚洲高清免费一级二级三级| 日韩免费在线观看| 色播五月激情综合网| 日韩精品乱码免费| 综合久久久久久久| 欧美不卡一区二区| 欧美日韩精品专区| 成人黄色在线视频| 日韩1区2区3区| 亚洲美女屁股眼交3| 久久精品视频在线看| 91精品国产综合久久精品图片| 国产成人综合网站| 蜜桃视频在线观看一区二区| 亚洲乱码国产乱码精品精小说| 精品国产一区二区在线观看| 欧美日韩一级二级| 色综合久久六月婷婷中文字幕| 国产激情一区二区三区| 秋霞午夜av一区二区三区| 亚洲观看高清完整版在线观看| 久久久青草青青国产亚洲免观| 欧美一卡在线观看| 欧美日韩色一区| 欧美日韩精品一区二区在线播放 | 在线视频中文字幕一区二区| 国产成人啪午夜精品网站男同| 日韩av网站在线观看| 婷婷久久综合九色国产成人| 午夜欧美在线一二页| 亚洲观看高清完整版在线观看| 亚洲高清免费在线| 免费人成在线不卡| 国产在线精品一区二区不卡了| 久久综合综合久久综合| 老司机免费视频一区二区| 麻豆91免费观看| 不卡高清视频专区| 色av综合在线| 欧美一区二区三区白人| 精品91自产拍在线观看一区| 国产精品天天摸av网| 亚洲欧美日韩系列| 日产国产欧美视频一区精品 | 国产精品不卡在线| 亚洲自拍欧美精品| 久久精品国产**网站演员| 国产成人精品一区二区三区四区| 成人美女在线观看| 欧美高清一级片在线| 26uuu国产日韩综合| 夜夜亚洲天天久久| 国产成人啪免费观看软件| 欧美亚洲一区二区三区四区| 精品国产不卡一区二区三区| 日韩一区欧美一区| 久久99国内精品| 欧美日韩高清在线播放| 国产精品久久午夜夜伦鲁鲁| 五月婷婷激情综合| 91蝌蚪porny| 国产精品久久久久久一区二区三区| 午夜电影网亚洲视频| 91丝袜美腿高跟国产极品老师| 精品乱码亚洲一区二区不卡| 天天色天天操综合| 欧美日韩中文精品| 亚洲成a人在线观看| 成人激情小说乱人伦| 欧美激情在线看| 国产一区免费电影| 精品成人在线观看| 捆绑变态av一区二区三区| 91精品国产一区二区三区香蕉| 尤物在线观看一区| 欧美日韩一级片网站| 亚洲香蕉伊在人在线观| 欧洲人成人精品| 婷婷综合另类小说色区| 日韩一区二区三区视频在线| 肉丝袜脚交视频一区二区| 欧美日韩国产高清一区| 蜜桃视频在线观看一区二区| 精品对白一区国产伦| 岛国精品一区二区| 曰韩精品一区二区| 欧美一区二区三区喷汁尤物| 亚洲成人你懂的| 久久综合九色综合欧美就去吻| 国产在线精品免费| 亚洲色图清纯唯美| 欧美一级国产精品| 大胆欧美人体老妇| 天天色天天爱天天射综合| 日韩免费视频一区| 色综合久久88色综合天天免费| 一区二区三区中文免费| 精品国产第一区二区三区观看体验| 国产精品888| 肉色丝袜一区二区| 亚洲人成在线播放网站岛国| 欧美久久久一区| 97国产一区二区| 久久精品国产**网站演员| 亚洲欧美视频在线观看视频| 日韩欧美精品三级| 在线亚洲一区观看| 国产精品一区在线| 蜜臀精品久久久久久蜜臀| 亚洲欧美国产毛片在线| 欧美精品一区二区三区四区 | 欧美这里有精品| 国产成人av电影在线| 日韩高清一区在线| 亚洲综合网站在线观看| 国产精品毛片久久久久久| 日韩欧美高清dvd碟片| 在线亚洲精品福利网址导航| 国产成人在线免费| 国产乱码精品一区二区三区忘忧草 | 国产一区二区在线观看视频| 亚洲成av人片在线| 亚洲gay无套男同| 亚洲国产三级在线| 亚洲一区二区在线播放相泽| 亚洲免费在线看| 亚洲日本免费电影| 亚洲精品美国一| 亚洲午夜私人影院| 天天操天天色综合| 蜜臀精品一区二区三区在线观看| 蜜桃视频一区二区三区在线观看| 人禽交欧美网站| 国产凹凸在线观看一区二区| 国产精品一区二区三区乱码| 成人高清免费观看| 欧美日韩在线精品一区二区三区激情| 欧美在线免费播放| 欧美一卡在线观看| 国产精品视频免费看| 亚洲免费观看高清完整版在线观看 | 亚洲视频小说图片| 日韩精品福利网| 高清国产午夜精品久久久久久| 91一区二区在线观看| 在线视频国内一区二区| 日韩一级在线观看| 中文字幕日韩欧美一区二区三区| 一区二区三区在线不卡| 美女免费视频一区二区| 91美女在线看| 久久精品亚洲精品国产欧美| 亚洲免费伊人电影| 国产福利精品导航| 精品视频一区 二区 三区| 久久亚洲欧美国产精品乐播| 亚洲一区国产视频| av一本久道久久综合久久鬼色| 日韩午夜av电影| 亚洲一区二区欧美日韩| 97精品电影院| 国产精品嫩草久久久久| 国产一区二区三区久久久| 欧美亚男人的天堂| 一区在线观看视频| 国产成人综合在线观看| 久久久蜜臀国产一区二区| 国产精品中文有码| 91精品视频网| 五月综合激情婷婷六月色窝| 色综合天天在线| 亚洲欧洲韩国日本视频 | 亚洲 欧美综合在线网络| 色婷婷综合久久久久中文| 亚洲三级在线免费观看| 国产v日产∨综合v精品视频| 久久综合色天天久久综合图片| 麻豆传媒一区二区三区|