⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicstab.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					newAlt = MAX_ALT;
				
				
				SetupViewer->SetCamera(SetupViewer->GetCameraX(),SetupViewer->GetCameraY(),
					newAlt,newYaw,newPitch,0.0f);
				
				//win->RefreshClient(2);
				F4LeaveCriticalSection(SetupCritSection);
				//UI_Leave(Leave);
				win->RefreshWindow();
			}
			
		}
		count++;
	}
}//ChangeViewpointCB

void ScalingCB(long,short hittype,C_Base *)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
}

void GouraudCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
	
	if(SetupViewer == NULL)
		return;
	
	RenderOTW	*renderer;
	
	renderer = SetupViewer->GetRendOTW();
	
	if(((C_Button *)control)->GetState())
		renderer->SetSmoothShadingMode( 1 );
	else
		renderer->SetSmoothShadingMode( 0 );
	
	control->Parent_->RefreshClient(2);
	
	
	control->Parent_->RefreshClient(2);
	//have the rendered view update with new settings
	
}//GouraudCB

void HazingCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
	
	if(SetupViewer == NULL)
		return;
	
	RenderOTW	*renderer;
	
	renderer = SetupViewer->GetRendOTW();
	
	if(((C_Button *)control)->GetState())
		renderer->SetHazeMode( 1 );
	else
		renderer->SetHazeMode( 0 );
	
	control->Parent_->RefreshClient(2);
	
	//have the rendered view update with new settings
	
}//HazingCB

void AlphaBlendCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
	
	if(SetupViewer == NULL)
		return;
	
	RenderOTW	*renderer;
	
	renderer = SetupViewer->GetRendOTW();
	
	if(((C_Button *)control)->GetState())
		renderer->SetAlphaMode( TRUE );
	else
		renderer->SetAlphaMode( FALSE );
	
	control->Parent_->RefreshClient(2);
	
	//have the rendered view update with new settings
	
}//AlphaBlendCB

void BilinearFilterCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
	
	if(SetupViewer == NULL)
		return;
	
	RenderOTW	*renderer;
	
	renderer = SetupViewer->GetRendOTW();
	
	if(((C_Button *)control)->GetState())
		renderer->SetFilteringMode( TRUE );
	else
		renderer->SetFilteringMode( FALSE );
	
	control->Parent_->RefreshClient(2);
	
	//have the rendered view update with new settings
	
}//BilinearFilterCB


void ObjectTextureCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;
	
	if(SetupViewer == NULL)
		return;
	
	RenderOTW	*renderer;
	
	renderer = SetupViewer->GetRendOTW();
	
	if(((C_Button *)control)->GetState())
		renderer->SetObjectTextureState( TRUE );
	else
		renderer->SetObjectTextureState( FALSE );
	
	control->Parent_->RefreshClient(2);
	
	//have the rendered view update with new settings
	
}//ObjectTextureCB

void RemoveObjFromView(int objID)
{
	C_BSPList *bsplist;
	BSPLIST	  *list;

	F4EnterCriticalSection(SetupCritSection);

	bsplist = SetupViewer->GetBSPList();
	// I don't think this will happen, but time is short so lets be safe...
	if (!bsplist)	return;

	list = bsplist->Root_;
	
	while (list)
	{
		if(list->ID == objID)
			break;
		list = list->Next;
	}

	if (list)
	{
		RViewPoint *tVP;

		tVP = SetupViewer->GetVP();

		tVP->RemoveObject(list->object);
	}

	F4LeaveCriticalSection(SetupCritSection);
	
}
void BuildingDetailCB(long,short hittype,C_Base *control)
{
	C_Slider *slider;
	int		objdetail;
	static int prevdetail = -1;
	
	if(hittype != C_TYPE_MOUSEMOVE)
		return;

	slider = (C_Slider *)control;
	objdetail = FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()) * 5 + 0.5F);
		
	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(objdetail + 1);
		ebox->Refresh();
	}

	F4EnterCriticalSection(SetupCritSection);

	if(SetupViewer == NULL)
	{
		F4LeaveCriticalSection(SetupCritSection);
		return;
	}
	
	if(NumFeatures)
	{
		
		if(prevdetail < objdetail)
		{
			if(NumFeatures)
			{
				for(int i=0;i<NumFeatures;i++)
				{
					if((Features[i].Priority <= objdetail) && (Features[i].Priority > prevdetail))
						SetupViewer->AddToView(i + 100);
				}
			}
		}
		else if(prevdetail > objdetail)
		{
			for(int i=0;i<NumFeatures;i++)
			{
				if((Features[i].Priority > objdetail) && (Features[i].Priority <= prevdetail))
					RemoveObjFromView(i+100);	
			}
		}
		prevdetail = objdetail;
	}
	
	control->Parent_->RefreshWindow();
	F4LeaveCriticalSection(SetupCritSection);
	
}//BuildingDetailCB

void PlayerBubbleCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_MOUSEMOVE)
		return;

	C_Slider    *slider;
	slider=(C_Slider *)control;

	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin())*6*GraphicSettingMult + 1.5f));
		ebox->Refresh();
	}
}


void ObjectDetailCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_MOUSEMOVE)
		return;

	float detail;
	C_Slider    *slider;
	slider=(C_Slider *)control;

	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin())*6*GraphicSettingMult + 1.5f));
		ebox->Refresh();
	}

	if(SetupViewer == NULL)
		return;

	RenderOTW	*renderer;	
	renderer = SetupViewer->GetRendOTW();
	detail = ((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin())*1.5f*GraphicSettingMult);
	renderer->SetObjectDetail(detail);
	
	//have the rendered view update with new settings
	control->Parent_->RefreshWindow();
	
}//VehicleDetailCB

void VehicleSizeCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_MOUSEMOVE)
		return;

	C_Slider	*slider;
	BSPLIST		*list;
	int			scale;

	slider=(C_Slider *)control;
	scale = FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()) * 4 + 1);

	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(scale);
		ebox->Refresh();
	}

	if(SetupViewer == NULL)
		return;

	
	static int	prevscale;

	
	if(prevscale != scale)
	{
		list = ((C_BSPList	*)SetupViewer->GetBSPList())->Root_;
		
		while(list)
		{
			if(list->ID < 100)
				list->object->SetScale((float)scale);

			list = list->Next;
		}
		
		prevscale = scale;
	}
	
	//have the rendered view update with new settings
	control->Parent_->RefreshWindow();
	
	
	
}//VehicleSizeCB

void TerrainDetailCB(long,short hittype,C_Base *control)
{
	C_Slider *slider;
	static int prevpos = -1;

	if(hittype != C_TYPE_MOUSEMOVE)
		return;

	slider=(C_Slider *)control;

	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin())*6.0F*GraphicSettingMult  + 1.5F));
		ebox->Refresh();
	}

	if(SetupViewer == NULL)
		return;
	
	int step;
	step = (slider->GetSliderMax()-slider->GetSliderMin())/(6*GraphicSettingMult);

	if(abs(slider->GetSliderPos() - prevpos) > step - 1)
	{
		SetCursor(gCursors[CRSR_WAIT]);

		int disagglvl;
		short terrlvl;
		float terrdist;
		RenderOTW	*renderer;
		RViewPoint	*viewpt;
		C_BSPList	*bsplist;
		BSPLIST		*cur;
		Tpoint		pos;
		
		prevpos = slider->GetSliderPos();

		if(slider->GetSliderPos() > 2*step)
		{
			terrdist = 40.0f + ( (float)slider->GetSliderPos()/step - 2) * 10.0f;
			terrlvl = 0;
		}
		else 
		{
			terrdist = 40.0f;
			terrlvl = static_cast<short>(FloatToInt32(2.0F - ((float)slider->GetSliderPos()/step)));
		}
					
		F4EnterCriticalSection(SetupCritSection);
		if(SetupViewer)
		{
			C_Slider *tslider;
			C_Button *button;

			renderer = SetupViewer->GetRendOTW();
			viewpt = SetupViewer->GetVP();
			
			viewpt->GetPos(&pos);
			
			//SetupViewer->Cleanup();
			bsplist = SetupViewer->GetBSPList();
			cur=bsplist->GetFirst();
			while(cur)
			{
				if(((DrawableBSP*)cur->object)->InDisplayList())
					viewpt->RemoveObject(cur->object);
				cur=cur->Next;
			}

			viewpt->RemoveObject(Smoke);
			delete Smoke;
			Smoke = NULL;
			viewpt->Cleanup();
			//viewpt = new RViewPoint;
			viewpt->Setup(terrdist * FEET_PER_KM, terrlvl, 4, terrdist * FEET_PER_KM *PlayerOptions.WeatherOn());
			viewpt->Update(&pos);
			
			renderer->Cleanup();

			renderer->Setup(gMainHandler->GetFront(),viewpt);

			//reset all values for new renderer
			tslider = (C_Slider *)control->Parent_->FindControl(OBJECT_DETAIL);
			if(tslider)
			{
				renderer->SetObjectDetail((float)tslider->GetSliderPos()/(tslider->GetSliderMax()-tslider->GetSliderMin())*1.5f + 0.5f);
			}

			tslider = (C_Slider *)control->Parent_->FindControl(TEXTURE_DISTANCE);
			if(tslider)
			{
				renderer->SetTerrainTextureLevel(FloatToInt32((float)tslider->GetSliderPos()/(tslider->GetSliderMax()-tslider->GetSliderMin())* 4.0f));
			}

			button = (C_Button *)control->Parent_->FindControl(OBJECT_TEXTURES);
			if(button)
			{
				if(button->GetState())
					renderer->SetObjectTextureState( TRUE );
				else
					renderer->SetObjectTextureState( FALSE );
			}
			
			button = (C_Button *)control->Parent_->FindControl(BILINEAR_FILTERING);
			if(button)
			{
				if(button->GetState())
					renderer->SetFilteringMode( TRUE );
				else
					renderer->SetFilteringMode( FALSE );
			}

			button = (C_Button *)control->Parent_->FindControl(ALPHA_BLENDING);
			if(button)
			{
				if(button->GetState())
					renderer->SetAlphaMode( TRUE );
				else
					renderer->SetAlphaMode( FALSE );
			}

			button = (C_Button *)control->Parent_->FindControl(HAZING);
			if(button)
			{
				if(button->GetState())
					renderer->SetHazeMode( TRUE );
				else
					renderer->SetHazeMode( FALSE );
			}

			button = (C_Button *)control->Parent_->FindControl(GOUROUD);
			if(button)
			{
				if(button->GetState())
					renderer->SetSmoothShadingMode( TRUE );
				else
					renderer->SetSmoothShadingMode( FALSE );
			}


			InitializeViewer((C_Window *)control->Parent_, renderer);

			SetupViewer->Viewport((C_Window *)control->Parent_,2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -