Перейти к контенту

Редактирование движка X-Ray


Rolan

Рекомендуемые сообщения

@Ghilli ,

начать с этого: \xrGame\ai\stalker\ai_stalker_fire.cpp (void CAI_Stalker::Hit).

 

 

Мне же интересно, что делает это кусок кода:

Скрытый текст
	if(eacFirstEye == cam_active)
	{
		xrXRC xrc;
		xrc.box_options(0);
		xrc.box_query(Level().ObjectSpace.GetStaticModel(), point, Fvector().set(VIEWPORT_NEAR,VIEWPORT_NEAR,VIEWPORT_NEAR) );
		u32 tri_count = xrc.r_count();
		if (tri_count)
		{
			_viewport_near = 0.01f;
		}
		else
		{
			xr_vector<ISpatial*> ISpatialResult;
			g_SpatialSpacePhysic->q_box(ISpatialResult, 0, STYPE_PHYSIC, point, Fvector().set(VIEWPORT_NEAR,VIEWPORT_NEAR,VIEWPORT_NEAR));
			for (u32 o_it=0; o_it<ISpatialResult.size(); o_it++)
			{
				CPHShell* pCPHS = smart_cast<CPHShell*>(ISpatialResult[o_it]);
				if (pCPHS)
				{
					_viewport_near = 0.01f;
					break;
				}
			}
		}
	}

 

из оригинального ТЧ 1.0007rc1 под vs2019: https://github.com/mortany/xray/blob/master/trunk/xr_3da/xrGame/ActorCameras.cpp#L227

 

Долго искал причину этого бага (всё из-за: _viewport_near = 0.01f;): https://www.youtube.com/playlist?list=PLNqMq1ELaaezZ_tM-nDFEjBmvaDUrhrtc

 

Заменил значение в 2-х строчках на 0.2f, как в дефайне VIEWPORT_NEAR, и глюки пропали, но всегда есть сомнения, починил одно - сломал другое.

 

В слитых исходниках за 2002 / 2007, в истории правок этого файла: 

9 Oct 2006 (этого блока ещё нет): https://github.com/ixray-team/xray-vss-archive/blob/267da766e8d90ed97268f32fc5a6704a667ff0a7/xr_3da/xrGame/ActorCameras.cpp#L229

14 Oct 2006 (уже частично есть): https://github.com/ixray-team/xray-vss-archive/blob/89ff124d62a040316956f63212ed9c7d418c10d2/xr_3da/xrGame/ActorCameras.cpp#L225

 

Чуть выше, в этом же файле:

Скрытый текст
	// Smooth out stair step ups
	if ((character_physics_support()->movement()->Environment()==peOnGround) && (flCurrentPlayerY-fPrevCamPos>0)){

Возможно ошибка, т.к. только здесь ==peOnGround, а в остальном коде ==CPHMovementControl::peOnGround, да и в ЗП также.

 

Поделиться этим сообщением


Ссылка на сообщение
08.07.2022 в 15:24, dsh сказал:

Судя по всему - это такая реализация псевдо коллизии камеры.

Так и есть, после правок - частичное проникновение за геометрию, но только при наклонах. Вспомнил, в ЗП бывает крутанёшь камеру (чуток или на 180) и можно увидеть мерцающий nosun.

Поделиться этим сообщением


Ссылка на сообщение

@macron ,

случайно нашёл (пока искал причину бага выше):

Скрытый текст
\xr_3da\xrGame\CarCameras.cpp

bool CCar::HUDView() const		
{
	// не считать режимом худа, если в тачке от 1-го лица
	return FALSE; //active_camera->tag==ectFirst;
}
...

void	CCar::OnCameraChange		(int type)
{
	if(Owner())
	{
		if	(type==ectFirst)
		{
			// Не скрывать игрока от 1-го лица
			Owner()->setVisible(TRUE); // FALSE
		}
		else if(active_camera->tag==ectFirst)
		{
			Owner()->setVisible(TRUE);
		}
	}
	...
}

 

И нужно менять анимации, а то одна рука на руле, другая, типа, с волыной. В stalker_animation.omf есть нормальные.

 

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...