Ru/Rear View Mirror: Difference between revisions
< Ru
Jump to navigation
Jump to search
mNo edit summary |
m (Nesciuse moved page Rear View Mirror/ru to Ru/Rear View Mirror over redirect: Language prefixes) |
(No difference)
|
Revision as of 12:51, 10 July 2024

This article or section needs to be cleaned up to conform to a higher standard of quality.
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.
Rearview mirror for Source Engine 2013
Зеркало заднего вида (rearview mirror) для Source 2013
ШАГ - 1
Для начала откройте два файла в вашем проекте - viewrender.h и viewrender.cpp
В файле - viewrender.h ищем:
void DrawMonitors( const CViewSetup &cameraView );
После вставляем:
void DrawMirror(const CViewSetup &cameraView);
Далее в файле - viewrender.cpp ищем:
void CViewRender::DrawMonitors( const CViewSetup &cameraView )
{
}
После вставляем:
void CViewRender::DrawMirror(const CViewSetup &viewSet)
{
C_BasePlayer *localPlayer = C_BasePlayer::GetLocalPlayer();
if (!localPlayer)
return;
//Copy our current View.
CViewSetup mirrorView = viewSet;
//Get our camera render target.
ITexture *pRenderTarget = GetCameraTexture();
//Our view information, Origin, View Direction, window size
// location on material, and visual ratios.
mirrorView.width = 256;
mirrorView.height = 128;
mirrorView.x = 0;
mirrorView.y = 0;
mirrorView.origin = localPlayer->GetAbsOrigin() + Vector(0, 0, 50 /*50*/);
mirrorView.angles = localPlayer->GetRenderAngles();
mirrorView.angles.x += 30;
mirrorView.angles.y = AngleNormalize(mirrorView.angles.y + 180);
mirrorView.fov = localPlayer->GetFOV();
mirrorView.m_bOrtho = false;
mirrorView.m_flAspectRatio = 1.0f;
Frustum frustum;
//Set the view up and output the scene to our RenderTarget (Camera Material).
render->Push3DView(mirrorView, VIEW_CLEAR_DEPTH | VIEW_CLEAR_COLOR, pRenderTarget, m_Frustum);
ViewDrawScene(false, SKYBOX_2DSKYBOX_VISIBLE, mirrorView, 0, VIEW_MONITOR);
render->PopView(m_Frustum);
}
ШАГ - 2
Создадим новый .cpp файл с названием : hud_mirror.cpp и разместим его в папку Client/Source Files/
В файл вставляем:
#include "cbase.h"
#include "hudelement.h"
#include "iclientmode.h"
#include <vgui_controls/ImagePanel.h>
using namespace vgui;
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
//.vmt location + filename
#define IMAGE_MIRROR "mirror.vmt"
//-----------------------------------------------------------------------------
// Purpose: HUD Mirror panel
//-----------------------------------------------------------------------------
class CHudMirror : public CHudElement, public vgui::Panel
{
DECLARE_CLASS_SIMPLE(CHudMirror, vgui::Panel);
public:
CHudMirror(const char *pElementName);
protected:
virtual void Paint();
private:
vgui::ImagePanel *m_Mirror;
};
extern CHud gHUD;
DECLARE_HUDELEMENT(CHudMirror);
//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
CHudMirror::CHudMirror(const char *pElementName) : CHudElement(pElementName), vgui::Panel(NULL, "HudMirror")
{
vgui::Panel *pParent = g_pClientMode->GetViewport();
SetParent(pParent); //Our parent is the screen itself.
m_Mirror = new ImagePanel(this, "RearViewMirror");
m_Mirror->SetImage(IMAGE_MIRROR);
SetPaintBackgroundEnabled(false);
}
//-----------------------------------------------------------------------------
// Purpose: Paint
//-----------------------------------------------------------------------------
void CHudMirror::Paint()
{
//Set position Top Right corner
// SetPos(ScreenWidth() - 270, 25);
SetPos(ScreenWidth()/2 - 128, 25); // center
//Set Mirror to 256x128 pixels
m_Mirror->SetSize(256, 96);
m_Mirror->SetVisible(true);
}
ШАГ - 3
Далее открываем : scripts/HudLayout.res И в самом верху добавим:
HudMirror
{
"wide" "256"
"tall" "128"
"PaintBackgroundType" "1"
}
ШАГ - 4
Нам нужно создать mirror.vmt файл и разместить его в : materials/VGUI/ В файл вставим следующий код:
"UnlitGeneric"
{
"$basetexture" "_rt_Camera"
}
Всё закончили!!!