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

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

?? brush.cpp

?? 3D游戲場景編輯器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	{
		// version 1.24 and later we quoted the texture names...
		if (!Parse3dt_GetLiteral (Parser, (*Expected = "Brush"), szTemp)) return NULL;
	}
	else
	{
		if (!Parse3dt_GetIdentifier (Parser, (*Expected = "Brush"), szTemp)) return NULL;
	}

	if (!Parse3dt_GetInt (Parser, (*Expected = "Flags"), &tmpFlags)) return NULL;

	if ((VersionMajor == 1) && (VersionMinor <= 10))
	{
		// Clear unused flags from older file versions
		// All brushes are solid by default.
		tmpFlags &= (BRUSH_DETAIL | BRUSH_HOLLOW | BRUSH_SUBTRACT | BRUSH_HOLLOWCUT | BRUSH_HIDDEN | BRUSH_LOCKED);
		tmpFlags |= BRUSH_SOLID;
		tmpFlags &= (~(BRUSH_HINT | BRUSH_CLIP | BRUSH_AREA | BRUSH_TRANSLUCENT | BRUSH_EMPTY));
	}
	if ((VersionMajor == 1) && (VersionMinor < 25))
	{
		// clear flocking flag on old file versions.
		tmpFlags &= ~BRUSH_FLOCKING;
	}
	if ((VersionMajor == 1) && (VersionMinor < 29))
	{
		// clear sheet flag on older file versions
		tmpFlags &= ~BRUSH_SHEET;
	}

	if((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor >= 3)))
	{
		if (!Parse3dt_GetInt (Parser, (*Expected = "ModelId"), &tmpModelId)) return NULL;
		if (!Parse3dt_GetInt (Parser, (*Expected = "GroupId"), &tmpGroupId)) return NULL;
	}
	else
	{
		if (!Parse3dt_GetInt (Parser, (*Expected = "EntityId"), &tmpModelId)) return NULL;
		tmpGroupId	=0;
	}
	
	if (!Parse3dt_GetFloat (Parser, (*Expected = "HullSize"), &tmpHullSize)) return NULL;
	if (tmpHullSize < 1.0f)
	{
		tmpHullSize = 1.0f;
	}

	if ((VersionMajor == 1) && (VersionMinor <= 16))
	{
		tmpTranslucency = 0;
	}
	else if ((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor < 27)))
	{
		if (!Parse3dt_GetInt (Parser, (*Expected = "Translucency"), &tmpTranslucency)) return NULL;
		if (tmpTranslucency > 255) tmpTranslucency = 255;
		if (tmpTranslucency < 0) tmpTranslucency = 0;
	}
	else
	{
		tmpTranslucency = 0;
	}

	tmpType = BRUSH_LEAF;	// default is leaf brush
	if ((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor >= 15)))
	{
		if (!Parse3dt_GetInt (Parser, (*Expected = "Type"), &tmpType)) return NULL;
	}

	fl = NULL;
	blist = NULL;
	switch (tmpType)
	{
		case BRUSH_LEAF :
		{
			fl = FaceList_CreateFromFile (Parser, VersionMajor, VersionMinor, Expected);
			if (fl == NULL)
			{
				goto DoneLoad;
			}
			break;
		}
		case BRUSH_MULTI :
			blist = BrushList_CreateFromFile (Parser, VersionMajor, VersionMinor, Expected);
			if (blist == NULL)
			{
				goto DoneLoad;
			}
			break;
		default :
			assert (0);		//bad stuff here
			return NULL;
	}

	//drop trans into faces from old maps
	if ((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor < 27)))
	{
		if(fl)
		{
			FaceList_SetTranslucency(fl, (float)tmpTranslucency);
		}
	}

	if (tmpFlags & BRUSH_TRANSLUCENT)
	{
		// set faces as translucent
		if (fl != NULL)
		{
			FaceList_SetTransparent (fl, GE_TRUE);
		}
		tmpFlags &= ~BRUSH_TRANSLUCENT;
	}

	b = Brush_Create (tmpType, fl, blist);
	if (b == NULL)
	{
		if (fl != NULL)
		{
			FaceList_Destroy (&fl);
		}
		if (blist != NULL)
		{
			BrushList_Destroy (&blist);
		}
	}
	else
	{
		b->Flags	=tmpFlags;
		b->HullSize	=tmpHullSize;
		b->ModelId	=tmpModelId;
		b->GroupId	=tmpGroupId;
		Brush_SetName (b, szTemp);
	}

DoneLoad:
	return	b;
}

void	Brush_Resize(Brush *b, float dx, float dy, int sides, int inidx, geVec3d *fnscale, int *ScaleNum)
{
	int		i;
	geVec3d	FixOrg, BrushOrg, ScaleVec;

	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_Resize", MB_OK);	//	post 0.55

	assert(b);
	assert(fnscale);
	assert(ScaleNum);

	geVec3d_Add(&b->BoundingBox.Min, &b->BoundingBox.Max, &BrushOrg);
	geVec3d_Scale(&BrushOrg, 0.5f, &BrushOrg);

	//find the corner of the bounds to keep fixed
	VectorToSUB(FixOrg, inidx)			=0.0f;
	if((sides&3)==0)	//center x
	{
		dx=-dx;
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(BrushOrg, axidx[inidx][0]);
	}
	else if((sides&3)==2)	//less x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==1)	//greater x
	{
		dx=-dx;
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

	if((sides&0x0c)==0)	//center y
	{
		VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(BrushOrg, axidx[inidx][1]);
	}
	else if((sides&0x0c)==4)	//less y
	{
		dy=-dy;
		if(inidx!=1)
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		else
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
	}
	else if((sides&0x0c)==8)	//greater y
	{
		if(inidx!=1)
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		else
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
	}

	if((sides&3)==0)	//center x
		dx	=0;
	if((sides&0x0c)==0)	//center x
		dy	=0;

	//translate to fixed origin
	geVec3d_Inverse(&FixOrg);
	Brush_Move(b, &FixOrg);

	dx	*=0.005f;
	dy	*=0.005f;

	dx	=1-dx;
	dy	=1-dy;

	VectorToSUB(ScaleVec, inidx)			=1.0f;
	VectorToSUB(ScaleVec, axidx[inidx][0])	=dx;
	VectorToSUB(ScaleVec, axidx[inidx][1])	=dy;

	for(i=0;i<3;i++)
		VectorToSUB(*fnscale, i)	*=VectorToSUB(ScaleVec, i);

	(*ScaleNum)++;

	Brush_Scale3d(b, &ScaleVec);

	//translate back
	geVec3d_Inverse(&FixOrg);
	Brush_Move(b, &FixOrg);

	Brush_Bound(b);
}

void Brush_Bound(Brush *b)
{
	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_Bound", MB_OK);	//	post 0.55
	
	assert(b);
	
	Box3d_SetBogusBounds(&b->BoundingBox);
	if(b->Type==BRUSH_MULTI)
	{
		BrushList_GetBounds(b->BList, &b->BoundingBox);
	}
	else
	{
		FaceList_GetBounds(b->Faces, &b->BoundingBox);
	}
}

geBoolean	Brush_TestBoundsIntersect(const Brush *b, const Box3d *pBox)
{
	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_TestBoundsIntersect", MB_OK);	//	post 0.55

	if (pBox == NULL)
		MessageBox(NULL, "Box3d == NULL", "Brush_TestBoundsIntersect", MB_OK);	//	post 0.55

	assert(b);
	assert(pBox);

	return Box3d_Intersection (&b->BoundingBox, pBox, NULL);
}

/*
void Brush_SnapNearest(Brush *b, geFloat gsize, int sides, int inidx)
{
	int				i;
	geVec3d			dmin, vsnap, sbound;
	geFloat const	gsizeinv	=1.0f/(geFloat)gsize;

	//find the corner of the bounds to snap
	VectorToSUB(dmin, inidx)	=0.0f;
	if((sides&3)==0)	//center x
	{
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==1)	//less x
	{
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==2)	//greater x
	{
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

	if((sides&0x0c)==0)	//center y
	{
		VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
	}
	else if((sides&0x0c)==4)	//less y
	{
		if(inidx != 1)	//check for top view (which has backwards y axis relation)
		{
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
	}
	else if((sides&0x0c)==8)	//greater y
	{
		if(inidx != 1)
		{
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
	}

	geVec3d_Scale(&dmin, gsizeinv, &sbound);	//get ratio to grid
	for(i=0;i<3;i++)
	{
		//get amount off in grid space
		VectorToSUB(vsnap, i)	=(geFloat)Units_Trunc(VectorToSUB(sbound, i));
	}
	geVec3d_Subtract(&sbound, &vsnap, &sbound);	//delta gridspace error
	geVec3d_Scale(&vsnap, gsize, &vsnap);		//return to worldspace
	geVec3d_Subtract(&dmin, &vsnap, &dmin);		//get worldspace delta

	//move to the nearest corner
	for(i=0;i<3;i++)
	{
		if(VectorToSUB(sbound, i) > 0.5f)
		{
			VectorToSUB(dmin, i)	-=gsize;
		}
		else if(VectorToSUB(sbound, i) < -0.5f)
		{
			VectorToSUB(dmin, i)	+=gsize;
		}
	}

	geVec3d_Inverse(&dmin);
	Brush_Move(b, &dmin);

	Brush_Bound(b);
}
*/

void Brush_SnapScaleNearest(Brush *b, geFloat gsize, int sides, int inidx, geVec3d *fnscale, int *ScaleNum)
{
	int		i;
	geVec3d	FixOrg, BrushOrg;
	geVec3d	dmin, vsnap, sbound;
	geFloat	const	gsizeinv	=1.0f/(geFloat)gsize;

	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_SnapScaleNearest", MB_OK);	//	post 0.55

	geVec3d_Add(&b->BoundingBox.Min, &b->BoundingBox.Max, &BrushOrg);
	geVec3d_Scale(&BrushOrg, 0.5f, &BrushOrg);

	//find the corner of the bounds to keep fixed
	VectorToSUB(FixOrg, inidx)			=0.0f;
	VectorToSUB(dmin, inidx)			=0.0f;
	if((sides&3)==0)
	{
		VectorToSUB(FixOrg, axidx[inidx][0])=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}
	else if((sides&3)==2)
	{
		VectorToSUB(FixOrg, axidx[inidx][0])=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==1)
	{
		VectorToSUB(FixOrg, axidx[inidx][0])=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
		VectorToSUB(dmin, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

	if((sides&0x0c)==0)
	{
		VectorToSUB(FixOrg, axidx[inidx][1])=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
	}
	else if((sides&0x0c)==8)
	{
		if(inidx!=1)	//check for top view (which has backwards y axis relation)
		{
			VectorToSUB(FixOrg, axidx[inidx][1])=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(FixOrg, axidx[inidx][1])=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
	}
	else if((sides&0x0c)==4)
	{
		if(inidx!=1)
		{
			VectorToSUB(FixOrg, axidx[inidx][1])=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(FixOrg, axidx[inidx][1])=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
			VectorToSUB(dmin, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
	}

	geVec3d_Scale(&FixOrg, gsizeinv, &sbound);

	for(i=0;i<3;i++)
	{
		VectorToSUB(vsnap, i)	=(geFloat)Units_Trunc(VectorToSUB(sbound, i));
	}

	geVec3d_Subtract(&sbound, &vsnap, &sbound);
	geVec3d_Scale(&vsnap, gsize, &vsnap);
	geVec3d_Subtract(&FixOrg, &dmin, &FixOrg);
	geVec3d_Subtract(&vsnap, &dmin, &vsnap);

	for(i=0;i<3;i++)
	{
		if(VectorToSUB(sbound, i) > 0.5f)
		{
			VectorToSUB(vsnap, i)	+=gsize;
		}
		else if(VectorToSUB(sbound, i) < -0.5f)
		{
			VectorToSUB(vsnap, i)	-=gsize;
		}
	}

	//find the magnitude to expand onto the boundary
	for(i=0;i<3;i++)
	{
		if(VectorToSUB(FixOrg, i))
		{
			VectorToSUB(sbound, i)	=(1.0f - (VectorToSUB(vsnap, i) / VectorToSUB(FixOrg, i)))* 200.0f;
		}
	}
	if((sides&3)==1)
	{
		VectorToSUB(sbound, axidx[inidx][0])=-VectorToSUB(sbound, axidx[inidx][0]);
	}
	if((sides&0x0c)==4)
	{
		VectorToSUB(sbound, axidx[inidx][1])=-VectorToSUB(sbound, axidx[inidx][1]);
	}

	Brush_Resize(b, VectorToSUB(sbound, axidx[inidx][0]), VectorToSUB(sbound, axidx[inidx][1]), sides, inidx, fnscale, ScaleNum);

	Brush_Bound(b);
}

void Brush_ResizeFinal(Brush *b, int sides, int inidx, geVec3d *fnscale)
{
	geVec3d	FixOrg, BrushOrg;

	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_ResizeFiinal", MB_OK);	//	post 0.55

	geVec3d_Add(&b->BoundingBox.Min, &b->BoundingBox.Max, &BrushOrg);
	geVec3d_Scale(&BrushOrg, 0.5f, &BrushOrg);

	//find the corner of the bounds to keep fixed
	VectorToSUB(FixOrg, inidx)			=0.0f;
	if((sides&3)==0)	//center x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(BrushOrg, axidx[inidx][0]);
	}
	else if((sides&3)==2)	//less x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==1)	//greater x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

	if((sides&0x0c)==0)	//center y
	{
		VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(BrushOrg, axidx[inidx][1]);
	}
	else if((sides&0x0c)==4)	//less y
	{
		if(inidx!=1)
		{
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
	}
	else if((sides&0x0c)==8)	//greater y
	{
		if(inidx!=1)
		{
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		}
		else
		{
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		}
	}

	if((sides&3)==0)	//center x
	{
		VectorToSUB(*fnscale, axidx[inidx][0])	=1.0f;
	}

	if((sides&0x0c)==0)	//center y
	{
		VectorToSUB(*fnscale, axidx[inidx][1])	=1.0f;
	}

	//translate to fixed origin
	geVec3d_Inverse(&FixOrg);
	Brush_Move(b, &FixOrg);

	VectorToSUB(*fnscale, inidx)	=1.0f;

	Brush_Scale3d(b, fnscale);

	//translate back
	geVec3d_Inverse(&FixOrg);
	Brush_Move(b, &FixOrg);

	Brush_Bound(b);
}

void	Brush_ShearFinal(Brush *b, int sides, int inidx, geVec3d *fnscale)
{
	geVec3d	FixOrg, BrushOrg, ShearAxis;

	if (b == NULL)
		MessageBox(NULL, "Brush == NULL", "Brush_ShearFinal", MB_OK);	//	post 0.55

	assert(b);
	assert(fnscale);

	if(!(((sides&3)==0) ^ ((sides&0x0c)==0)))
	{
		return;
	}

	geVec3d_Add(&b->BoundingBox.Min, &b->BoundingBox.Max, &BrushOrg);
	geVec3d_Scale(&BrushOrg, 0.5f, &BrushOrg);

	//find the corner of the bounds to keep fixed
	VectorToSUB(FixOrg, inidx)			=0.0f;
	if((sides&3)==0)	//center x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(BrushOrg, axidx[inidx][0]);
	}
	else if((sides&3)==2)	//less x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][0]);
	}
	else if((sides&3)==1)	//greater x
	{
		VectorToSUB(FixOrg, axidx[inidx][0])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

	if((sides&0x0c)==0)	//center y
	{
		VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(BrushOrg, axidx[inidx][1]);
	}
	else if((sides&0x0c)==4)	//less y
	{
		if(inidx!=1)
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
		else
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
	}
	else if((sides&0x0c)==8)	//greater y
	{
		if(inidx!=1)
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Max, axidx[inidx][1]);
		else
			VectorToSUB(FixOrg, axidx[inidx][1])	=VectorToSUB(b->BoundingBox.Min, axidx[inidx][1]);
	}

	geVec3d_Clear(&ShearAxis);

	//translate to fixed origin
	geVec3d_Inverse(&FixOrg);
	Brush_Move(b, &FixOrg);

	if((sides&3)==0)	//center x
	{
		VectorToSUB(ShearAxis, axidx[inidx][0])	=
			1.0f / VectorToSUB(b->BoundingBox.Max, axidx[inidx][0]);
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情综合婷婷| 91久久精品国产91性色tv| 国内精品国产三级国产a久久| 黄色精品一二区| 一本一道久久a久久精品综合蜜臀| 欧美久久久久久蜜桃| 国产亚洲一二三区| 亚洲成人精品在线观看| 成人精品国产免费网站| 日韩精品一区二区三区swag| 亚洲在线成人精品| 99久久精品国产观看| 欧美精品一区二区三区蜜桃视频| 一区二区三区在线视频观看| 国产精品一区专区| 欧美精品三级在线观看| 亚洲色图欧洲色图婷婷| 国产黄色成人av| 日韩三级高清在线| 午夜在线电影亚洲一区| 91国模大尺度私拍在线视频| 中文字幕一区在线| 国产99久久久久久免费看农村| 日韩欧美一级二级| 午夜精品国产更新| 欧美在线影院一区二区| 综合网在线视频| 丁香五精品蜜臀久久久久99网站 | 欧美天堂亚洲电影院在线播放| 国产欧美一区二区三区在线看蜜臀 | 91豆麻精品91久久久久久| 国产精品国产自产拍在线| 国产成人午夜视频| 欧美精品一区二区三区在线 | 久久99在线观看| 欧美精品v日韩精品v韩国精品v| 亚洲六月丁香色婷婷综合久久| 成人18视频日本| 亚洲欧美激情视频在线观看一区二区三区| 国产成+人+日韩+欧美+亚洲| 国产日韩精品一区二区三区| 成人免费视频一区| 亚洲桃色在线一区| 91精彩视频在线| 亚洲国产一区二区视频| 欧美日韩国产天堂| 蜜臀av一区二区在线免费观看 | 国产精品欧美精品| 成人免费观看av| 亚洲色欲色欲www在线观看| 91视频国产观看| 亚洲成va人在线观看| 日韩欧美成人激情| 国产成人精品亚洲日本在线桃色| 国产精品久久午夜| 欧美色视频在线| 久草精品在线观看| 国产精品久久久久久久蜜臀| 欧美三区免费完整视频在线观看| 亚洲成人先锋电影| 久久综合99re88久久爱| 99精品视频在线免费观看| 亚洲影院理伦片| 精品成人免费观看| 99久久国产综合精品女不卡| 日韩综合一区二区| 久久久久久久久久久久电影| 色系网站成人免费| 久久国产精品99精品国产| 国产精品亲子乱子伦xxxx裸| 欧美理论电影在线| 成人av免费观看| 欧美aaa在线| 精品一区二区av| 亚洲色图19p| 精品国产一区二区三区四区四 | 国产成人综合亚洲网站| 亚洲欧洲一区二区三区| 欧美xxx久久| 日本久久一区二区| 寂寞少妇一区二区三区| 亚洲免费伊人电影| 国产亚洲欧美一级| 欧美日韩国产电影| 成人h动漫精品| 久久福利视频一区二区| 亚洲成av人片一区二区| 国产精品福利影院| 日韩一区二区三区视频| 欧美亚一区二区| 国产成人免费9x9x人网站视频| 日本成人在线不卡视频| 亚洲在线视频网站| 国产精品蜜臀av| 久久综合久久鬼色| 日韩一区二区三区三四区视频在线观看 | 欧美国产激情一区二区三区蜜月| 69久久99精品久久久久婷婷| 欧美在线观看视频在线| 91在线高清观看| 成人晚上爱看视频| 国产风韵犹存在线视精品| 日本午夜精品一区二区三区电影| 亚洲尤物在线视频观看| 亚洲精品国久久99热| 综合网在线视频| 综合婷婷亚洲小说| 国产精品色在线| 国产精品网站一区| 久久久精品2019中文字幕之3| 91麻豆精品国产91久久久资源速度| 99riav一区二区三区| voyeur盗摄精品| 91免费在线视频观看| 91亚洲国产成人精品一区二区三| 成人免费三级在线| 成人午夜精品在线| fc2成人免费人成在线观看播放| 成人性生交大片| 99精品偷自拍| 色激情天天射综合网| 在线免费不卡电影| 欧美日高清视频| 欧美一区二区三区成人| 日韩精品一区二区在线| 久久亚洲免费视频| 国产精品久久777777| 怡红院av一区二区三区| 午夜av一区二区| 久久国产综合精品| 成人手机电影网| 欧亚洲嫩模精品一区三区| 91精品午夜视频| 久久精品人人爽人人爽| 日韩高清在线观看| 国产一区二区精品久久| 成人午夜av电影| 91福利精品视频| 日韩欧美在线网站| 国产精品色呦呦| 亚洲va欧美va人人爽午夜| 精品影院一区二区久久久| voyeur盗摄精品| 91精品国产高清一区二区三区蜜臀 | 狠狠色狠狠色综合| 99久久精品情趣| 欧美久久久久久久久中文字幕| 欧美一区二区免费| 国产精品国产馆在线真实露脸| 午夜视频一区在线观看| 国产黄人亚洲片| 欧美日韩高清一区二区不卡| 久久精品一区二区三区四区| 一级女性全黄久久生活片免费| 久久超碰97中文字幕| 色系网站成人免费| 久久久九九九九| 亚洲小说春色综合另类电影| 国产精品99久久久久久似苏梦涵 | 日韩黄色片在线观看| 国产高清精品久久久久| 在线视频亚洲一区| 国产欧美日韩精品一区| 三级亚洲高清视频| 色综合久久久久久久久| 久久精品一区蜜桃臀影院| 五月婷婷综合激情| 99精品黄色片免费大全| 久久夜色精品国产噜噜av| 婷婷成人综合网| 在线视频一区二区免费| 国产精品欧美综合在线| 看电视剧不卡顿的网站| 欧美巨大另类极品videosbest| 亚洲欧美在线另类| 国产精品99久久久久久久vr | 欧美天堂亚洲电影院在线播放| 日本一区二区三区在线不卡 | 精品久久久久久久人人人人传媒| 伊人一区二区三区| 99久久99久久久精品齐齐| 久久精品在线观看| 黄网站免费久久| 日韩三级高清在线| 美腿丝袜一区二区三区| 欧美日韩亚州综合| 夜夜精品视频一区二区| 91亚洲精品久久久蜜桃网站| 国产精品美女久久久久高潮| 国产福利91精品| 国产欧美综合在线| 国产iv一区二区三区| 国产欧美一区二区精品久导航| 九九视频精品免费| 日韩美女一区二区三区四区| 天天操天天色综合| 制服丝袜亚洲播放| 图片区小说区国产精品视频| 538在线一区二区精品国产| 天堂成人免费av电影一区|