mirror of
https://github.com/DrBeef/Doom3Quest.git
synced 2024-11-23 20:32:44 +00:00
Draw PDA to HUD
Looks cool
This commit is contained in:
parent
aaa37bbe69
commit
52b6370103
7 changed files with 59 additions and 42 deletions
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.drbeef.doom3quest"
|
||||
android:versionCode="11"
|
||||
android:versionName="0.0.17" android:installLocation="auto" >
|
||||
android:versionCode="12"
|
||||
android:versionName="0.0.18" android:installLocation="auto" >
|
||||
|
||||
<!-- Tell the system this app requires OpenGL ES 3.1. -->
|
||||
<uses-feature android:glEsVersion="0x00030001" android:required="true"/>
|
||||
|
|
|
@ -152,7 +152,7 @@ void Doom3Quest_setUseScreenLayer(int screen)
|
|||
|
||||
bool Doom3Quest_useScreenLayer()
|
||||
{
|
||||
return inMenu || objectiveSystemActive || inCinematic || forceVirtualScreen;
|
||||
return inMenu || inCinematic || forceVirtualScreen;
|
||||
}
|
||||
|
||||
static void UnEscapeQuotes( char *arg )
|
||||
|
@ -999,7 +999,10 @@ static void ovrApp_HandleVrModeChanges( ovrApp * app )
|
|||
vrapi_SetPerfThread( app->Ovr, VRAPI_PERF_THREAD_TYPE_RENDERER, app->RenderThreadTid );
|
||||
|
||||
ALOGV( " vrapi_SetPerfThread( RENDERER, %d )", app->RenderThreadTid );
|
||||
|
||||
vrapi_SetExtraLatencyMode(app->Ovr, VRAPI_EXTRA_LATENCY_MODE_ON);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1263,8 +1266,12 @@ void VR_Init()
|
|||
shutdown = false;
|
||||
}
|
||||
|
||||
long renderThreadCPUTime[2] = {0, 0};
|
||||
|
||||
void Doom3Quest_prepareEyeBuffer(int eye )
|
||||
{
|
||||
renderThreadCPUTime[eye] = GetTimeInMilliSeconds();
|
||||
|
||||
ovrRenderer *renderer = Doom3Quest_useScreenLayer() ? &gAppState.Scene.CylinderRenderer : &gAppState.Renderer;
|
||||
|
||||
ovrFramebuffer *frameBuffer = &(renderer->FrameBuffer[eye]);
|
||||
|
@ -1286,6 +1293,16 @@ void Doom3Quest_prepareEyeBuffer(int eye )
|
|||
|
||||
void Doom3Quest_finishEyeBuffer(int eye )
|
||||
{
|
||||
renderThreadCPUTime[eye] = GetTimeInMilliSeconds() - renderThreadCPUTime[eye];
|
||||
|
||||
if (eye == 1)
|
||||
{
|
||||
int totalTime = renderThreadCPUTime[0] + renderThreadCPUTime[1];
|
||||
//__android_log_print(ANDROID_LOG_INFO, "Doom3Quest", "RENDER THREAD LEFT EYE CPU TIME: %i", renderThreadCPUTime[0]);
|
||||
//__android_log_print(ANDROID_LOG_INFO, "Doom3Quest", "RENDER THREAD RIGHT EYE CPU TIME: %i", renderThreadCPUTime[1]);
|
||||
__android_log_print(ANDROID_LOG_INFO, "Doom3Quest", "RENDER THREAD TOTAL CPU TIME: %i", totalTime);
|
||||
}
|
||||
|
||||
GLCheckErrors( __LINE__ );
|
||||
|
||||
ovrRenderer *renderer = Doom3Quest_useScreenLayer() ? &gAppState.Scene.CylinderRenderer : &gAppState.Renderer;
|
||||
|
|
|
@ -2703,8 +2703,6 @@ void idPlayer::DrawHUD( idUserInterface *_hud ) {
|
|||
//cursor->Redraw( gameLocal.realClientTime );
|
||||
}
|
||||
}
|
||||
|
||||
renderSystem->CaptureRenderToImage( "_hudImage" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -2718,7 +2716,6 @@ void idPlayer::UpdateVrHud()
|
|||
{
|
||||
static idVec3 hudOrigin;
|
||||
static idMat3 hudAxis;
|
||||
float hudPitch;
|
||||
|
||||
if (pVRClientInfo != nullptr)
|
||||
|
||||
|
@ -2733,9 +2730,8 @@ void idPlayer::UpdateVrHud()
|
|||
hudEntity.allowSurfaceInViewID = entityNumber + 1;
|
||||
|
||||
{
|
||||
hudPitch = 10.0f;
|
||||
|
||||
float yaw;
|
||||
if (vr_hudmode.GetInteger() == 0)
|
||||
{
|
||||
// CalculateRenderView must have been called first
|
||||
const idVec3 &viewOrigin = firstPersonViewOrigin;
|
||||
|
@ -2743,8 +2739,9 @@ void idPlayer::UpdateVrHud()
|
|||
|
||||
if (pVRClientInfo)
|
||||
{
|
||||
float yaw;
|
||||
idAngles angles;
|
||||
float *pAngles = pVRClientInfo->offhandangles;
|
||||
|
||||
angles.pitch = pVRClientInfo->offhandangles[PITCH];
|
||||
angles.yaw = viewAngles.yaw +
|
||||
(pVRClientInfo->offhandangles[YAW] - pVRClientInfo->hmdorientation[YAW]);
|
||||
|
@ -2758,25 +2755,31 @@ void idPlayer::UpdateVrHud()
|
|||
|
||||
idAngles a(0, viewAngles.yaw - pVRClientInfo->hmdorientation[YAW], 0);
|
||||
offpos *= a.ToMat3();
|
||||
offpos *= cvarSystem->GetCVarFloat( "vr_worldscale" );
|
||||
offpos *= vr_worldscale.GetFloat();
|
||||
|
||||
{
|
||||
hudOrigin = viewOrigin + offpos;
|
||||
}
|
||||
}
|
||||
|
||||
// GetViewPos( hudOrigin, hudAxis );
|
||||
// yaw = viewAngles.yaw;
|
||||
hudOrigin += hudAxis[2] * 16.0f;
|
||||
hudOrigin += hudAxis[1] * -8.5f;
|
||||
hudAxis *= 0.7; // scale
|
||||
}
|
||||
//hudAxis = idAngles( hudPitch, yaw, 0.0f ).ToMat3();
|
||||
else {
|
||||
//Fixed HUD, but make it take a short time to catch up with the player's yaw
|
||||
static float yaw_x = 0.0f;
|
||||
static float yaw_y = 1.0f;
|
||||
yaw_x = 0.97f * yaw_x + 0.03f * cosf(DEG2RAD(viewAngles.yaw));
|
||||
yaw_y = 0.97f * yaw_y + 0.03f * sinf(DEG2RAD(viewAngles.yaw));
|
||||
|
||||
//hudOrigin += hudAxis[0] * 24.0f;//vr_hudPosDis.GetFloat();
|
||||
hudOrigin += hudAxis[1] * -8.0f;
|
||||
hudOrigin += hudAxis[2] * 16.0f;
|
||||
GetViewPos( hudOrigin, hudAxis );
|
||||
hudAxis = idAngles( 10.0f, RAD2DEG(atan2(yaw_y, yaw_x)), 0.0f ).ToMat3();
|
||||
hudOrigin += hudAxis[0] * 24.0f;
|
||||
hudOrigin.z += 4.0f;
|
||||
hudOrigin += hudAxis[1] * -8.5f;
|
||||
}
|
||||
}
|
||||
|
||||
hudAxis *= 0.7;
|
||||
|
||||
hudEntity.axis = hudAxis;
|
||||
hudEntity.origin = hudOrigin;
|
||||
hudEntity.weaponDepthHack = true;
|
||||
|
@ -5046,7 +5049,7 @@ void idPlayer::UpdateViewAngles( void ) {
|
|||
int i;
|
||||
idAngles delta;
|
||||
|
||||
if ( !noclip && ( gameLocal.inCinematic || privateCameraView || gameLocal.GetCamera() || influenceActive == INFLUENCE_LEVEL2 || objectiveSystemOpen ) ) {
|
||||
if ( !noclip && ( gameLocal.inCinematic || privateCameraView || gameLocal.GetCamera() || influenceActive == INFLUENCE_LEVEL2 /*|| objectiveSystemOpen*/ ) ) {
|
||||
// no view changes at all, but we still want to update the deltas or else when
|
||||
// we get out of this mode, our view will snap to a kind of random angle
|
||||
UpdateDeltaViewAngles( viewAngles );
|
||||
|
@ -7515,7 +7518,10 @@ void idPlayer::CalculateViewWeaponPos( bool pointer, idVec3 &origin, idMat3 &axi
|
|||
///HACK
|
||||
if (currentWeapon == weapon_pda)
|
||||
{
|
||||
idVec3 pdaOffs( 30, -7, -14 );
|
||||
//idVec3 pdaOffs( 30, -7, -14 );
|
||||
|
||||
//Put it behind us
|
||||
idVec3 pdaOffs( -30, -7, -14 );
|
||||
origin += pdaOffs * viewAxis;
|
||||
}
|
||||
|
||||
|
@ -7648,7 +7654,7 @@ idVec3 idPlayer::GetEyePosition( void ) const {
|
|||
if (pVRClientInfo)
|
||||
{
|
||||
float eyeHeight = 0;
|
||||
float vrEyeHeight = (-(pVRClientInfo->hmdposition[1] + cvarSystem->GetCVarFloat( "vr_heightoffset" )) * cvarSystem->GetCVarFloat( "vr_worldscale" ));
|
||||
float vrEyeHeight = (-(pVRClientInfo->hmdposition[1] + vr_heightoffset.GetFloat()) * vr_worldscale.GetFloat());
|
||||
|
||||
//Add special handling for physical crouching at some point
|
||||
/* if (physicsObj.IsCrouching() && PHYSICAL_CROUCH) {
|
||||
|
|
|
@ -462,16 +462,16 @@ void idPlayerView::SingleView( idUserInterface *hud, const renderView_t *view )
|
|||
return;
|
||||
}
|
||||
|
||||
player->DrawHUD(hud);
|
||||
if ( player->objectiveSystemOpen ) {
|
||||
player->objectiveSystem->Redraw( gameLocal.time );
|
||||
} else {
|
||||
player->DrawHUD(hud);
|
||||
}
|
||||
|
||||
// place the sound origin for the player
|
||||
gameSoundWorld->PlaceListener( view->vieworg, view->viewaxis, player->entityNumber + 1, gameLocal.time, hud ? hud->State().GetString( "location" ) : "Undefined" );
|
||||
renderSystem->CaptureRenderToImage( "_hudImage" );
|
||||
|
||||
// if the objective system is up, don't do normal drawing
|
||||
if ( player->objectiveSystemOpen ) {
|
||||
player->objectiveSystem->Redraw( gameLocal.time );
|
||||
return;
|
||||
}
|
||||
// place the sound origin for the player
|
||||
gameSoundWorld->PlaceListener( view->vieworg, view->viewaxis, player->entityNumber + 1, gameLocal.time, hud ? hud->State().GetString( "location" ) : "Undefined" );
|
||||
|
||||
// hack the shake in at the very last moment, so it can't cause any consistency problems
|
||||
renderView_t hackedView = *view;
|
||||
|
@ -733,16 +733,8 @@ void idPlayerView::RenderPlayerView( idUserInterface *hud ) {
|
|||
if (eyeView &&
|
||||
!game->InCinematic())
|
||||
{
|
||||
int eye = cvarSystem->GetCVarInteger("vr_eye");
|
||||
if (eye == 0) // left eye
|
||||
{
|
||||
eyeView->vieworg += eyeView->viewaxis[1] *
|
||||
(cvarSystem->GetCVarFloat( "vr_ipd" ) / 2.0f) * cvarSystem->GetCVarFloat( "vr_worldscale" );
|
||||
} else if (eye == 1) // right eye
|
||||
{
|
||||
eyeView->vieworg -= eyeView->viewaxis[1] *
|
||||
(cvarSystem->GetCVarFloat( "vr_ipd" ) / 2.0f) * cvarSystem->GetCVarFloat( "vr_worldscale" );
|
||||
}
|
||||
eyeView->vieworg += (vr_eye.GetInteger() == 0 ? 1.0f : -1.0f) * eyeView->viewaxis[1] *
|
||||
(vr_ipd.GetFloat() / 2.0f) * vr_worldscale.GetFloat();
|
||||
}
|
||||
|
||||
if (g_skipViewEffects.GetBool()) {
|
||||
|
|
|
@ -2950,7 +2950,7 @@ void idWeapon::Event_LaunchProjectiles( int num_projectiles, float spread, float
|
|||
vrClientInfo *pVRClientInfo = owner->GetVRClientInfo();
|
||||
if (owner->GetCurrentWeapon() == WEAPON_GREANDE &&
|
||||
pVRClientInfo != nullptr &&
|
||||
cvarSystem->GetCVarBool("vr_throwables"))
|
||||
vr_throwables.GetBool())
|
||||
{
|
||||
idVec3 releaseOffset( -pVRClientInfo->throw_origin[2],
|
||||
-pVRClientInfo->throw_origin[0],
|
||||
|
@ -3000,7 +3000,7 @@ void idWeapon::Event_LaunchProjectiles( int num_projectiles, float spread, float
|
|||
projBounds = proj->GetPhysics()->GetBounds().Rotate( proj->GetPhysics()->GetAxis() );
|
||||
|
||||
if (owner->GetCurrentWeapon() != WEAPON_GREANDE ||
|
||||
!cvarSystem->GetCVarBool("vr_throwables")) {
|
||||
!vr_throwables.GetBool()) {
|
||||
// make sure the projectile starts inside the bounding box of the owner
|
||||
if (i == 0) {
|
||||
//muzzle_pos = muzzleOrigin + playerViewAxis[ 0 ] * 2.0f;
|
||||
|
|
|
@ -349,4 +349,5 @@ idCVar vr_weaponsight( "vr_weaponsight", "0", CVAR_BOOL | CVAR_ARCHIVE, "We
|
|||
idCVar vr_throwables( "vr_throwables", "1", CVAR_BOOL | CVAR_ARCHIVE, "Throwable Grenades.\n 0 = Disable\n 1 = Throw and release with trigger" );
|
||||
idCVar vr_turnmode( "vr_turnmode", "0", CVAR_BOOL | CVAR_ARCHIVE, "Turn Mode.\n 0 = Snap Turn\n 1 = Smooth Turn" );
|
||||
idCVar vr_turnangle( "vr_turnangle", "45", CVAR_INTEGER | CVAR_ARCHIVE, "Turn Angle. angle for snap, or velocity for smooth" );
|
||||
idCVar vr_hudmode( "vr_hudmode", "0", CVAR_BOOL | CVAR_ARCHIVE, "HUD Mode.\n 1 = Attached to off-hand controller\n 0 = Fixed" );
|
||||
|
||||
|
|
|
@ -263,6 +263,7 @@ extern idCVar vr_weaponsight;
|
|||
extern idCVar vr_throwables;
|
||||
extern idCVar vr_turnmode;
|
||||
extern idCVar vr_turnangle;
|
||||
extern idCVar vr_hudmode;
|
||||
|
||||
|
||||
extern const char *si_gameTypeArgs[];
|
||||
|
|
Loading…
Reference in a new issue