Add interface for HMD with player death support

This commit is contained in:
kaetemi 2014-04-01 13:14:44 +02:00
parent 2eacddc47c
commit 5ed5cd5ea8
9 changed files with 138 additions and 1 deletions

View file

@ -60,6 +60,7 @@ public:
{ {
StereoDisplay, StereoDisplay,
StereoHMD, StereoHMD,
StereoNGHMD,
}; };
enum TStereoDeviceLibrary enum TStereoDeviceLibrary

View file

@ -0,0 +1,62 @@
/**
* \file stereo_ng_hmd.h
* \brief IStereoNGHMD
* \date 2014-04-01 10:53GMT
* \author Jan Boon (Kaetemi)
* IStereoNGHMD
*/
/*
* Copyright (C) 2014 by authors
*
* This file is part of NL3D.
* NL3D is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* NL3D is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
* Public License for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with NL3D. If not, see
* <http://www.gnu.org/licenses/>.
*/
#ifndef NL3D_STEREO_NG_HMD_H
#define NL3D_STEREO_NG_HMD_H
#include <nel/misc/types_nl.h>
// STL includes
// NeL includes
// Project includes
#include <nel/3d/stereo_hmd.h>
namespace NL3D {
/**
* \brief IStereoNGHMD
* \date 2014-04-01 10:53GMT
* \author Jan Boon (Kaetemi)
* IStereoNGHMD
*/
class IStereoNGHMD : public IStereoHMD
{
public:
IStereoNGHMD();
virtual ~IStereoNGHMD();
/// Kill the player
virtual void killUser() const = 0;
}; /* class IStereoNGHMD */
} /* namespace NL3D */
#endif /* #ifndef NL3D_STEREO_NG_HMD_H */
/* end of file */

View file

@ -697,6 +697,8 @@ SOURCE_GROUP(Stereo FILES
../../include/nel/3d/stereo_display.h ../../include/nel/3d/stereo_display.h
stereo_hmd.cpp stereo_hmd.cpp
../../include/nel/3d/stereo_hmd.h ../../include/nel/3d/stereo_hmd.h
stereo_ng_hmd.cpp
../../include/nel/3d/stereo_ng_hmd.h
stereo_ovr.cpp stereo_ovr.cpp
stereo_ovr_fp.cpp stereo_ovr_fp.cpp
../../include/nel/3d/stereo_ovr.h ../../include/nel/3d/stereo_ovr.h

View file

@ -0,0 +1,55 @@
/**
* \file stereo_hmd.cpp
* \brief IStereoNGHMD
* \date 2014-04-01 10:53GMT
* \author Jan Boon (Kaetemi)
* IStereoNGHMD
*/
/*
* Copyright (C) 2014 by authors
*
* This file is part of NL3D.
* NL3D is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* NL3D is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
* Public License for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with NL3D. If not, see
* <http://www.gnu.org/licenses/>.
*/
#include <nel/misc/types_nl.h>
#include <nel/3d/stereo_ng_hmd.h>
// STL includes
// NeL includes
// #include <nel/misc/debug.h>
// Project includes
using namespace std;
// using namespace NLMISC;
namespace NL3D {
IStereoNGHMD::IStereoNGHMD()
{
}
IStereoNGHMD::~IStereoNGHMD()
{
}
} /* namespace NL3D */
/* end of file */

View file

@ -28,6 +28,7 @@ using namespace NLMISC;
NL3D::UDriver *Driver = 0; // The main 3D Driver NL3D::UDriver *Driver = 0; // The main 3D Driver
NL3D::IStereoDisplay *StereoDisplay = NULL; // Stereo display NL3D::IStereoDisplay *StereoDisplay = NULL; // Stereo display
NL3D::IStereoHMD *StereoHMD = NULL; // Head mount display NL3D::IStereoHMD *StereoHMD = NULL; // Head mount display
NL3D::IStereoNGHMD *StereoNGHMD = NULL; // HMD with player death support
CSoundManager *SoundMngr = 0; // the sound manager CSoundManager *SoundMngr = 0; // the sound manager
NL3D::UMaterial GenericMat; // Generic Material NL3D::UMaterial GenericMat; // Generic Material
NL3D::UTextContext *TextContext = 0; // Context for all the text in the client. NL3D::UTextContext *TextContext = 0; // Context for all the text in the client.

View file

@ -42,6 +42,7 @@ namespace NL3D
class UWaterEnvMap; class UWaterEnvMap;
class IStereoDisplay; class IStereoDisplay;
class IStereoHMD; class IStereoHMD;
class IStereoNGHMD;
} }
class CEntityAnimationManager; class CEntityAnimationManager;
@ -81,6 +82,7 @@ const float ExtraZoneLoadingVision = 100.f;
extern NL3D::UDriver *Driver; // The main 3D Driver extern NL3D::UDriver *Driver; // The main 3D Driver
extern NL3D::IStereoDisplay *StereoDisplay; // Stereo display extern NL3D::IStereoDisplay *StereoDisplay; // Stereo display
extern NL3D::IStereoHMD *StereoHMD; // Head mount display extern NL3D::IStereoHMD *StereoHMD; // Head mount display
extern NL3D::IStereoNGHMD *StereoNGHMD; // HMD with player death support
extern CSoundManager *SoundMngr; // the sound manager extern CSoundManager *SoundMngr; // the sound manager
extern NL3D::UMaterial GenericMat; // Generic Material extern NL3D::UMaterial GenericMat; // Generic Material
extern NL3D::UTextContext *TextContext; // Context for all the text in the client. extern NL3D::UTextContext *TextContext; // Context for all the text in the client.

View file

@ -40,6 +40,7 @@
#include "nel/3d/u_text_context.h" #include "nel/3d/u_text_context.h"
#include "nel/3d/u_shape_bank.h" #include "nel/3d/u_shape_bank.h"
#include "nel/3d/stereo_hmd.h" #include "nel/3d/stereo_hmd.h"
#include "nel/3d/stereo_ng_hmd.h"
// Net. // Net.
#include "nel/net/email.h" #include "nel/net/email.h"
// Ligo. // Ligo.
@ -639,10 +640,15 @@ void initStereoDisplayDevice()
StereoDisplay = IStereoDisplay::createDevice(*deviceInfo); StereoDisplay = IStereoDisplay::createDevice(*deviceInfo);
if (StereoDisplay) if (StereoDisplay)
{ {
if (deviceInfo->Class == CStereoDeviceInfo::StereoHMD) if (deviceInfo->Class == CStereoDeviceInfo::StereoHMD
|| deviceInfo->Class == CStereoDeviceInfo::StereoNGHMD)
{ {
nlinfo("VR [C]: Stereo display device is a HMD"); nlinfo("VR [C]: Stereo display device is a HMD");
StereoHMD = static_cast<IStereoHMD *>(StereoDisplay); StereoHMD = static_cast<IStereoHMD *>(StereoDisplay);
if (deviceInfo->Class == CStereoDeviceInfo::StereoNGHMD)
{
StereoNGHMD = static_cast<IStereoNGHMD *>(StereoDisplay);
}
} }
if (Driver) // VR_DRIVER if (Driver) // VR_DRIVER
{ {

View file

@ -21,6 +21,9 @@
// INCLUDES // // INCLUDES //
////////////// //////////////
#include "stdpch.h" #include "stdpch.h"
#include "nel/3d/stereo_ng_hmd.h"
// Client. // Client.
#include "../../input.h" #include "../../input.h"
#include "../user_controls.h" #include "../user_controls.h"
@ -28,6 +31,7 @@
#include "../../view.h" #include "../../view.h"
#include "../../interface_v3/interface_manager.h" #include "../../interface_v3/interface_manager.h"
#include "../../entities.h" #include "../../entities.h"
#include "global.h"
/////////// ///////////
@ -61,6 +65,9 @@ void CUserControls::deathModeStart()
_InternalView = false; _InternalView = false;
// Show/hide all or parts of the user body (after _InternaView is set). // Show/hide all or parts of the user body (after _InternaView is set).
UserEntity->updateVisualDisplay(); UserEntity->updateVisualDisplay();
// Kill the player
if (StereoNGHMD)
StereoNGHMD->killUser();
}// deathModeStart // }// deathModeStart //
//----------------------------------------------- //-----------------------------------------------

View file

@ -519,6 +519,7 @@ void releaseStereoDisplayDevice()
delete StereoDisplay; delete StereoDisplay;
StereoDisplay = NULL; StereoDisplay = NULL;
StereoHMD = NULL; StereoHMD = NULL;
StereoNGHMD = NULL;
} }
IStereoDisplay::releaseAllLibraries(); IStereoDisplay::releaseAllLibraries();
} }