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

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

?? max2nmo.cpp

?? 3dmax導出3d模型二次開發插件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

void Max2Nmo::ShowAbout(HWND hWnd)
{
	DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, AboutBoxDlgProc, 0);
}

static BOOL CALLBACK ReportDlgProc(HWND hWnd, UINT msg,
	WPARAM wParam, LPARAM lParam)
{
	Max2Nmo *exp = (Max2Nmo*)GetWindowLong(hWnd,GWL_USERDATA); 
	switch (msg) {
		case WM_INITDIALOG: {
			exp = (Max2Nmo*)lParam;
			SetWindowLong(hWnd,GWL_USERDATA,lParam); 
			CenterWindow(hWnd, GetParent(hWnd)); 
			SetDlgItemText(hWnd,IDC_EDITREPORT,(const char*)exp->ReportBuffer.Begin()); 
			break;
		}
		case WM_COMMAND:
			switch (LOWORD(wParam)) {
				case IDOK: {
					EndDialog(hWnd, 1);
					break;
			} break;
			}
		default: return FALSE;
	}

	return TRUE;
}       


// Dialog proc
static BOOL CALLBACK ExportDlgProc(HWND hWnd, UINT msg,
	WPARAM wParam, LPARAM lParam)
{
	Interval animRange;
	ISpinnerControl  *spin;

	Max2Nmo *exp = (Max2Nmo*)GetWindowLong(hWnd,GWL_USERDATA); 
	switch (msg) {
	case WM_INITDIALOG: {
		exp = (Max2Nmo*)lParam;
		SetWindowLong(hWnd,GWL_USERDATA,lParam); 
		CenterWindow(hWnd, GetParent(hWnd)); 

// check Export Type
		int RadioToEnable = IDC_RADIOEXPORTASOBJECTS;
		if (exp->GetExportAsObjects()) RadioToEnable=IDC_RADIOEXPORTASOBJECTS;
		else
		if (exp->GetExportAsCharacter()) RadioToEnable=IDC_RADIOEXPORTASCHARACTER;
		else
		if (exp->GetExportAsAnimationOnly()) RadioToEnable=IDC_RADIOEXPORTASANIMATION;
		CheckRadioButton(hWnd, IDC_RADIOEXPORTASOBJECTS, IDC_RADIOEXPORTASANIMATION, RadioToEnable);

		CheckDlgButton(hWnd, IDC_CHECKSTOREFILENAMES, exp->GetStoreOnlyFilenames()); 
		CheckDlgButton(hWnd, IDC_CHECKRESCALESCENE, exp->GetRescaleScene()); 
		CheckDlgButton(hWnd, IDC_CHECKGROUPASPLACE, exp->GetGroupAsPlace()); 
		CheckDlgButton(hWnd, IDC_CHECKBIPEDMESH, exp->GetSaveBipedGeom());
		CheckDlgButton(hWnd, IDC_CHECKALIGNANIMATIONS, exp->GetAlignAnimOnZ());  

		CheckRadioButton(hWnd, IDC_RADIOSKIN, IDC_RADIOMORPH, 
			exp->GetConvertPhysiqueToSkin() ? IDC_RADIOSKIN : IDC_RADIOMORPH);


		// Setup the spinner controls for the controller key sample rate 
		spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_STEP_SPIN)); 
		spin->LinkToEdit(GetDlgItem(hWnd,IDC_CONT_STEP), EDITTYPE_INT ); 
		spin->SetLimits(1, 100, TRUE); 
		spin->SetScale(1.0f);
		spin->SetValue(exp->GetKeyFrameStep() ,FALSE);
		ReleaseISpinner(spin);

		// Setup the spinner controls for the report level 
		spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_REPORTSPIN)); 
		spin->LinkToEdit(GetDlgItem(hWnd,IDC_CONT_REPORT), EDITTYPE_INT ); 
		spin->SetLimits(REPORT_NONE, REPORT_LLEVEL, TRUE); 
		spin->SetScale(1.0f);
		spin->SetValue(exp->GetReportLevel() ,FALSE);
		ReleaseISpinner(spin);

		// Setup the spinner controls for the compression level 
		spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_COMPRESSIONSPIN)); 
		spin->LinkToEdit(GetDlgItem(hWnd,IDC_CONT_COMPRESSION), EDITTYPE_INT ); 
		spin->SetLimits(0, 9, TRUE); 
		spin->SetScale(1.0f);
		spin->SetValue(exp->GetCompressionLevel() ,FALSE);
		ReleaseISpinner(spin);
		
		// Setup the spinner controls for the mesh definition sample rate 
		spin = GetISpinner(GetDlgItem(hWnd, IDC_MESH_STEP_SPIN)); 
		spin->LinkToEdit(GetDlgItem(hWnd,IDC_MESH_STEP), EDITTYPE_INT ); 
		spin->SetLimits(1, 100, TRUE); 
		spin->SetScale(1.0f);
		spin->SetValue(exp->GetMeshFrameStep() ,FALSE);
		ReleaseISpinner(spin);

		SetWindowText(GetDlgItem(hWnd, IDC_EDITCHARACTERNAME),exp->GetCharacterName());
		SetWindowText(GetDlgItem(hWnd, IDC_EDITANIMATIONNAME),exp->GetAnimationName());

		// Enable / disable character name edit box
		EnableWindow(GetDlgItem(hWnd, IDC_EDITCHARACTERNAME), exp->GetExportAsCharacter());
		break;
	}
	case CC_SPINNER_CHANGE:
		spin = (ISpinnerControl*)lParam; 
		break;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_RADIOEXPORTASOBJECTS:
		case IDC_RADIOEXPORTASANIMATION:
		case IDC_RADIOEXPORTASCHARACTER:
			// Enable / disable character name edit box options
			EnableWindow(GetDlgItem(hWnd, IDC_EDITCHARACTERNAME), IsDlgButtonChecked(hWnd,IDC_RADIOEXPORTASCHARACTER));
			break;
		case IDOK: {
				exp->SetExportAsAnimationOnly(IsDlgButtonChecked(hWnd, IDC_RADIOEXPORTASANIMATION)); 
				exp->SetExportAsCharacter(IsDlgButtonChecked(hWnd, IDC_RADIOEXPORTASCHARACTER)); 
				exp->SetExportAsObjects(IsDlgButtonChecked(hWnd, IDC_RADIOEXPORTASOBJECTS)); 
				exp->SetConvertPhysiqueToSkin(IsDlgButtonChecked(hWnd, IDC_RADIOSKIN)); 
				exp->SetRescaleScene(IsDlgButtonChecked(hWnd, IDC_CHECKRESCALESCENE)); 
				exp->SetGroupAsPlace(IsDlgButtonChecked(hWnd, IDC_CHECKGROUPASPLACE)); 
				exp->SetSaveBipedGeom(IsDlgButtonChecked(hWnd, IDC_CHECKBIPEDMESH));
				exp->SetbAlignAnimOnZ(IsDlgButtonChecked(hWnd, IDC_CHECKALIGNANIMATIONS));  
				exp->SetStoreOnlyFilenames(IsDlgButtonChecked(hWnd, IDC_CHECKSTOREFILENAMES)); 
				char TempString[512];
				GetDlgItemText(hWnd,IDC_EDITANIMATIONNAME,TempString,512);
				exp->SetAnimationName(TempString);
				GetDlgItemText(hWnd,IDC_EDITCHARACTERNAME,TempString,512);
				exp->SetCharacterName(TempString);

				spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_STEP_SPIN)); 
				exp->SetKeyFrameStep(spin->GetIVal()); 
				ReleaseISpinner(spin);

				spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_REPORTSPIN)); 
				exp->SetReportLevel(spin->GetIVal()); 
				ReleaseISpinner(spin);

				spin = GetISpinner(GetDlgItem(hWnd, IDC_CONT_COMPRESSIONSPIN)); 
				exp->SetCompressionLevel(spin->GetIVal()); 
				ReleaseISpinner(spin);


				spin = GetISpinner(GetDlgItem(hWnd, IDC_MESH_STEP_SPIN)); 
				exp->SetMeshFrameStep(spin->GetIVal());
				ReleaseISpinner(spin);
				EndDialog(hWnd, 1);
				break;
		}
		case IDCANCEL:
			EndDialog(hWnd, 0);
			break;
		}
		break;
		default:
			return FALSE;
	}
	return TRUE;
}       

// Dummy function for progress bar
DWORD WINAPI fn(LPVOID arg)
{
	return(0);
}

// Start the exporter!
// This is the real entrypoint to the exporter. After the user has selected
// the filename (and he's prompted for overwrite etc.) this method is called.
int Max2Nmo::DoExport(const TCHAR *name,ExpInterface *ei,Interface *inf, BOOL suppressPrompts, DWORD options) 
{
// Grab the interface pointer.
	ip = inf;

#ifdef _USESCRIPTS_
	if( name ){
		theVirtoolsTool.m_ExportFileName = name;
		for( int a=0 ; a<theVirtoolsTool.m_ExportFileName.Length() ; ++a ){
			if( theVirtoolsTool.m_ExportFileName[a] == '\\' ){
				theVirtoolsTool.m_ExportFileName[a] = '/';
			}
		}
	} else {
		theVirtoolsTool.m_ExportFileName = "";
	}
	
	theVirtoolsTool.BeginEditParams( inf, NULL );
	
	return 1;

#else

	// Get the options the user selected the last time
	ReadConfig();

	// Prompt the user with our dialogbox, and get all the options.
	if (!DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAX2NMOEXPORT_DLG),
		ip->GetMAXHWnd(), ExportDlgProc, (LPARAM)this)) {
		return 1;
	}

	SetShowProgressionBar( TRUE );
	int res = ReallyDoExport( name, ip, (options&SCENE_EXPORT_SELECTED)? TRUE:FALSE );

	return res;

#endif
}



// This methode do the export job, and suppose all the parameters
// has correctly been set (by the export UI, or with MAXScript)
int Max2Nmo::ReallyDoExport( const TCHAR *name, Interface *inf, BOOL sel )
{
	ip = inf;
	exportSelected = sel;
	
	// Virtools Engine initialization
	if (!VirtoolsPluginsParsed) {

#ifndef MAX42
		//------ Check the version of Physique installed...
		g_CharacterStudio312 = FALSE;
		// Parse every plugin dir to find Physique Version !
		DWORD Version1,Version2,Version3,Version4;
		for (int k=0;k<ip->GetPlugInEntryCount();k++) {
			XString Path = 	ip->GetPlugInDir(k);
			Path << "Physique.dlm";
			if (GetVersionInfo(Path.Str(),Version1,Version2,Version3,Version4)) {
	#ifdef MAX4		
				// For Max 4 incompatibility starts at version 3.0.2 
				if ((Version1 >= 3) && ( Version2 >= 1) && ( Version3 >= 2)) {
					g_CharacterStudio312 = TRUE;
				}
	#else
				// For Max 3 incompatibility starts at version 3.0.2 
				if ((Version1 >= 3) && ( Version2 >= 0) && ( Version3 >= 2)) {
					g_CharacterStudio312 = TRUE;
				}

	#endif
				break;
			}
		}
#endif
		//-------------------------------------------------------
		
#ifdef CK_LIB
		// Register static plugins that we use...
		CKPluginManager* pm = CKGetPluginManager();
		
		// NULL Rasterizer
		RegisterRenderEngine(pm);

		// Image Plugins
		RegisterImageReader(pm);
		RegisterAVIReader(pm);
		RegisterPNGReader(pm);
		RegisterJPGReader(pm);
		RegisterTIFFReader(pm);
	
		//--- That's All

#else
		for (int j=0;j<ip->GetPlugInEntryCount();j++)
				CKGetPluginManager()->ParsePlugins(ip->GetPlugInDir(j));
#endif
		VirtoolsPluginsParsed = TRUE;
	}

	if( !g_VirtoolsContext ){
		if (CKCreateContext(&VirtoolsContext,ip->GetMAXHWnd(),0) != CK_OK)
		{
			MessageBox(NULL, "CK Initialisation Problems", "Max2Nmo", MB_OK);
			return 1;
		}
		
		VirtoolsContext->GetVariableManager()->SetStringValue("Globals/StartingFlags","Disable Sound,Disable Input");

		//-- Add Max Bitmap path to Virtools PathManager
		int BitmapPathCount = TheManager->GetMapDirCount();
		for(int i=0;i<BitmapPathCount;i++) {
			VirtoolsContext->GetPathManager()->AddPath(BITMAP_PATH_IDX,XString(TheManager->GetMapDir(i)));
		}

		RegisterAllSpecialParameters();

		g_VirtoolsContext = VirtoolsContext;
	
	} else {
		VirtoolsContext = g_VirtoolsContext;
	}

	

//	Virtools Exporter context creation
	VirtoolsExporter = new Export2Virtools(VirtoolsContext);


// Rescale Scene to 1 unit = 1 meter if asked
	if (GetRescaleScene()) {
		RescaleScene();
		Report(REPORT_HLEVEL,"Scene rescaled to 1 unit = 1 meter\r\n");
	}

// First we write out a file header with global information. 
	Interval range = ip->GetAnimRange();
	m_StartFrame	=  (float)range.Start();
	m_EndFrame		=  (float)range.End();
	m_InvFrameRate	=  1.0f/(float)GetTicksPerFrame();
	

// Startup the progress bar.
	if( GetShowProgressionBar() ){
		ip->ProgressStart(GetString(IDS_PROGRESS_MSG), TRUE, fn, NULL);
	}

// Get a total node count by traversing the scene
// We don't really need to do this, but it doesn't take long, and
// it is nice to have an accurate progress bar.
	nTotalNodeCount = 0;
	nCurNode = 0;
	PreProcess(ip->GetRootNode(), nTotalNodeCount);
	
//-- Export list of material definitions
	Report(REPORT_HLEVEL,"---------Exporting materials----------\r\n");
	ExportMaterialList();
	
	Report(REPORT_HLEVEL,"\r\n");
	Report(REPORT_HLEVEL,"-----------Exporting objects-----------\r\n");
// Call our node enumerator.
// The nodeEnum function will recurse into itself and 
// export each object found in the scene.
	int numChildren = ip->GetRootNode()->NumberOfChildren();
	for (int idx=0; idx<numChildren; idx++) {
		if (ip->GetCancel())
			break;
		nodeEnum(ip->GetRootNode()->GetChildNode(idx));
	}

	Report(REPORT_HLEVEL,"\r\n");
	Report(REPORT_HLEVEL,"------ Exporting animated meshes ------\r\n");

//-- Check if there are animated meshes (morph, skin, physique)
	PostProcess(ip->GetRootNode());

// We're done. Finish the progress bar.
	if( GetShowProgressionBar() ){
		ip->ProgressEnd();
	}


	// Write the current options to be used next time around.
	WriteConfig();


// Finish creating appropriate objects
	CKKeyedAnimation* GlobalAnim = VirtoolsExporter->CreateGlobalAnimation(GetAnimationName());
	GlobalAnim->SetLength(FrameTime(m_EndFrame));

	if (GetExportAsCharacter()) {
		Report(REPORT_HLEVEL,"\r\n");
		Report(REPORT_HLEVEL,"Creating character : %s\r\n",GetCharacterName());
		VirtoolsExporter->CreateCharacter(GetCharacterName());
	}

	
	if (GetStoreOnlyFilenames()) 
		VirtoolsContext->SetGlobalImagesSaveOptions(CKTEXTURE_EXTERNAL);
	
	
	// Generate the final list containing all the CKObjects
	CKFile*			VirtoolsFile = VirtoolsContext->CreateCKFile();
	m_VirtoolsObjects = CreateCKObjectArray();
	
	VirtoolsExporter->GenerateObjects(m_VirtoolsObjects,GetExportAsAnimationOnly());


	// Create Groups for Named Selection Sets
	if( GetSelectionAsGroup() ){
		Report(REPORT_HLEVEL,"\r\n");
		Report(REPORT_HLEVEL,"----------- Exporting Named Selections -----------\r\n");
		int namedSelCount = ip->GetNumNamedSelSets();
		for( int a=0 ; a<namedSelCount ; ++a ){
			CKGroup *grp = (CKGroup *)VirtoolsContext->CreateObject( CKCID_GROUP, ip->GetNamedSelSetName(a) );
			if( !grp ) continue;
			
			int selObjCount = ip->GetNamedSelSetItemCount(a);
			for( int b=0 ; b<selObjCount ; ++b ){
				INode *selNode = ip->GetNamedSelSetItem( a, b);
				CK3dEntity *selEnt = VirtoolsExporter->GetEntityByKey( selNode );
				if( !selEnt ){
					selEnt = VirtoolsExporter->GetLightByKey( selNode );
					if( !selEnt ){
						selEnt = VirtoolsExporter->GetCameraByKey( selNode );
					}
				}
				if( selEnt ){
					grp->AddObject( selEnt );
				}
			}
			
			if( grp->GetObjectCount() ){
				m_VirtoolsObjects->InsertFront( grp );
			}
		}
	}

#ifdef _USESCRIPTS_
	Report(REPORT_HLEVEL,"\r\n");
	Report(REPORT_HLEVEL,"----------- Evaluating User Defined Properties -----------\r\n");
	// Call our node user defined properties evaluator.
	// The nodeEnum function will recurse into itself and 
	// evaluate each user defined properties
	for( idx=0; idx<numChildren; idx++) {
		if (ip->GetCancel())
			break;
		evaluateNodeUserDefinedProperties( ip->GetRootNode()->GetChildNode(idx) );
	}
	
	// If some scripts has been added
	// we must create a Level
	int behCount = VirtoolsContext->GetObjectsCountByClassID( CKCID_BEHAVIOR );
	if( behCount ){
		
		// create a level
		CKLevel *level = (CKLevel *)VirtoolsContext->CreateObject( CKCID_LEVEL );
		CKScene* LevelScene = level->GetLevelScene();
		VirtoolsContext->SetCurrentLevel(level);

		// add all objects to this level
		for( m_VirtoolsObjects->Reset() ; !m_VirtoolsObjects->EndOfList() ;  ){
			CKObject *tmpObj = m_VirtoolsObjects->GetData( VirtoolsContext );

			// if their was already a scene or a level remove it
			if (CKIsChildClassOf(tmpObj,CKCID_SCENE) ||  CKIsChildClassOf(tmpObj,CKCID_LEVEL)) {
				m_VirtoolsObjects->RemoveAt();

			// if it isn't a level (or scene)
			} else {
				
				DWORD SceneFlags = 0;
				CKSceneObject* ScnObj = NULL;

				// if the object is attached to a scene
				if (CKIsChildClassOf(tmpObj,CKCID_SCENEOBJECT)) {
					ScnObj = (CKSceneObject*)tmpObj;
					CKScene *Scene = ScnObj->GetSceneIn(0);
					
					if (Scene && Scene!=LevelScene) {
						// get the scripts activation states
						SceneFlags = Scene->GetObjectFlags(ScnObj);
					}
				}
				
				// add object to the created level
				level->AddObject( tmpObj );

				if (SceneFlags) {
					// put scripts activation states
					LevelScene->SetObjectFlags(	ScnObj,  (CK_SCENEOBJECT_FLAGS)SceneFlags);
				}

				m_VirtoolsObjects->Next();
			}
		}

		// add the created level to the list of objects to be saved
		// only for the web player (because it has no level and it need one)
		// but don't save the level if it's supposed to be loaded by some
		// application (like Dev) that already has a level (because it won't be loaded).
		//
		// if we save without level, the scripts activation states will be saved
		// into a special chunk

 		XString fileName = name;
		CKPathSplitter splitter( fileName.Str() );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频xxxx| 免费欧美日韩国产三级电影| 亚洲欧美在线视频| 亚洲一区在线免费观看| 亚洲电影中文字幕在线观看| 国产成人免费视| 欧美三级韩国三级日本三斤| 国产欧美精品一区二区色综合| 亚洲已满18点击进入久久| 国产精品原创巨作av| 欧美肥妇bbw| 亚洲欧美日韩国产另类专区| 国产福利一区二区| 51精品久久久久久久蜜臀| 中文字幕欧美日本乱码一线二线| 男男gaygay亚洲| 欧美在线观看视频一区二区三区| 欧美精品一区男女天堂| 午夜不卡av在线| 色哟哟亚洲精品| 久久精品网站免费观看| 美国毛片一区二区三区| 911精品国产一区二区在线| 国产精品久久久久久户外露出| 国产在线播精品第三| 精品美女一区二区三区| 欧美a级理论片| 337p亚洲精品色噜噜噜| 一区二区三区在线免费播放| 国产成人在线电影| 久久一日本道色综合| 极品瑜伽女神91| 日韩免费一区二区| 偷窥少妇高潮呻吟av久久免费| 色综合天天视频在线观看| 国产精品福利一区二区| eeuss鲁片一区二区三区在线看| 中文字幕欧美国产| www.av精品| 国产精品盗摄一区二区三区| 99久久精品免费看| 亚洲天堂成人网| 欧美在线观看视频一区二区| 亚洲国产aⅴ成人精品无吗| 欧洲av一区二区嗯嗯嗯啊| 五月天中文字幕一区二区| 91麻豆精品国产91久久久使用方法 | 亚洲日本在线视频观看| 国产黄色精品视频| 国产欧美日韩在线视频| 国产91高潮流白浆在线麻豆 | 国产精品毛片久久久久久久| 不卡一卡二卡三乱码免费网站| 香蕉影视欧美成人| 日韩欧美激情在线| 国产91在线|亚洲| 自拍偷自拍亚洲精品播放| 91成人国产精品| 免费日本视频一区| 国产欧美精品一区二区三区四区| 91在线你懂得| 天堂久久久久va久久久久| 2022国产精品视频| 成人福利视频在线| 亚洲美女精品一区| 日韩亚洲欧美成人一区| 国产精品一级二级三级| 亚洲在线观看免费| 久久婷婷国产综合国色天香| 色哟哟一区二区| 国产一区二区三区免费| 综合色天天鬼久久鬼色| 欧美一区二区三区日韩视频| 成人黄页在线观看| 日韩在线播放一区二区| 国产精品欧美极品| 欧美成人aa大片| 91精彩视频在线观看| 国产一区二区不卡在线| 亚洲第四色夜色| 久久久亚洲精品石原莉奈| 在线免费不卡视频| 国产麻豆日韩欧美久久| 亚洲1区2区3区4区| 亚洲同性同志一二三专区| 精品免费99久久| 在线播放一区二区三区| 成人av片在线观看| 韩国v欧美v日本v亚洲v| 亚洲国产精品人人做人人爽| av中文字幕不卡| 激情欧美日韩一区二区| 亚洲国产精品久久久久秋霞影院| 久久久久久久久久电影| 91.com在线观看| 色综合亚洲欧洲| 高清不卡一区二区| 丁香激情综合国产| 欧美一区二区三区在线视频 | 91在线精品一区二区| 国产一区二区三区四区五区入口 | 日韩精品在线一区| 欧美日韩国产经典色站一区二区三区| 成人免费看片app下载| 国产一区三区三区| 激情小说亚洲一区| 捆绑调教美女网站视频一区| 亚洲va欧美va人人爽| 亚洲国产日韩精品| 亚洲国产裸拍裸体视频在线观看乱了| 伊人婷婷欧美激情| 一区二区三区四区在线播放 | 日韩黄色免费电影| 日韩在线a电影| 精品国内二区三区| 精品999在线播放| 精品国产伦一区二区三区免费| 欧美一区二区三区四区五区 | 在线视频你懂得一区| 色婷婷综合五月| 成人一级黄色片| 成人sese在线| 色婷婷综合五月| 欧美丰满嫩嫩电影| 日韩欧美亚洲另类制服综合在线| 678五月天丁香亚洲综合网| 欧美一级精品在线| 日韩欧美不卡在线观看视频| 久久成人免费电影| 国产麻豆精品在线| 91在线观看高清| 91麻豆成人久久精品二区三区| 在线观看免费亚洲| 91精品久久久久久蜜臀| 日韩一区二区在线看片| 久久久久一区二区三区四区| 中文字幕乱码久久午夜不卡| 最新热久久免费视频| 亚洲高清免费在线| 久久不见久久见免费视频7 | 久久精品免费在线观看| 久久夜色精品一区| 99久久精品费精品国产一区二区| 亚洲少妇中出一区| 亚洲欧美日韩精品久久久久| 天堂午夜影视日韩欧美一区二区| 美女国产一区二区三区| 成人动漫在线一区| 欧美视频一区二| 国产亚洲综合av| 亚洲图片欧美色图| 国产精品911| 欧美日韩亚洲综合| 国产亚洲综合色| 欧美一级国产精品| 国产午夜精品美女毛片视频| 欧美视频一区在线观看| wwww国产精品欧美| 亚洲一区二区三区中文字幕 | 国产精品久久久一本精品| 亚洲成人午夜影院| 国产大片一区二区| 欧美美女黄视频| 中文字幕在线观看一区二区| 午夜不卡av在线| 99re这里都是精品| 精品理论电影在线| 亚洲成a天堂v人片| 91啪九色porn原创视频在线观看| 国产黄色精品网站| 欧美性色欧美a在线播放| 成人免费三级在线| 欧美一区二区三区免费在线看 | 欧美一区二区三区成人| 国产精品久久久久一区二区三区共| 日本欧洲一区二区| 91搞黄在线观看| 国产精品久久久久影院老司| 久草在线在线精品观看| 一本大道av一区二区在线播放| 亚洲激情一二三区| 日本道免费精品一区二区三区| 日韩午夜激情视频| 婷婷开心激情综合| 色网综合在线观看| 91精彩视频在线观看| 亚洲天堂免费在线观看视频| 国产成人av一区二区三区在线| 欧美zozo另类异族| 天堂成人国产精品一区| 91官网在线免费观看| 亚洲主播在线观看| 色欧美日韩亚洲| 一级女性全黄久久生活片免费| 成人黄色在线视频| 久久女同性恋中文字幕| 国产精品综合网| 国产欧美日韩视频一区二区| 国产精品资源在线| 中文久久乱码一区二区|