nuclide/src/client/crosshair.qc

71 lines
2.5 KiB
Plaintext

/*
* Copyright (c) 2016-2022 Vera Visions LLC.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void
Cross_Draw(string strMat, vector vecSize)
{
Cross_DrawSubRGBA(strMat, vecSize, [0,0], [1,1], [1.0f, 1.0f, 1.0f], 1.0f);
}
void
Cross_DrawRGB(string strMat, vector vecSize, vector vecColor)
{
Cross_DrawSubRGBA(strMat, vecSize, [0,0], [1,1], vecColor, 1.0f);
}
void
Cross_DrawRGBA(string strMat, vector vecSize, vector vecColor, float flAlpha)
{
Cross_DrawSubRGBA(strMat, vecSize, [0,0], [1,1], vecColor, flAlpha);
}
void
Cross_DrawSub(string strMat, vector vecSize, vector vecSrcPos, vector vecSrcSize)
{
Cross_DrawSubRGBA(strMat, vecSize, vecSrcPos, vecSrcSize, [1.0f, 1.0f, 1.0f], 1.0f);
}
void
Cross_DrawSubRGB(string strMat, vector vecSize, vector vecSrcPos, vector vecSrcSize, vector vecColor)
{
Cross_DrawSubRGBA(strMat, vecSize, vecSrcPos, vecSrcSize, vecColor, 1.0f);
}
void
Cross_DrawSubRGBA(string strMat, vector vecSize, vector vecSrcPos, vector vecSrcSize, vector vecColor, float flAlpha)
{
static vector cross_pos;
if (cvar("cl_thirdperson") < 1) {
cross_pos = g_hudmins + (g_hudres / 2) + [-(vecSize[0]/2),-(vecSize[1]/2)];
cross_pos[0] = rint(cross_pos[0]);
cross_pos[1] = rint(cross_pos[1]);
drawsubpic(cross_pos, vecSize, strMat, vecSrcPos, vecSrcSize, vecColor, flAlpha, DRAWFLAG_NORMAL);
} else {
vector vecSrc;
vector vecDst;
player pl = pSeat->m_ePlayer;
vecSrc = pSeat->m_vecPredictedOrigin + pSeat->m_ePlayer.view_ofs;
makevectors(view_angles);
vecDst = (vecSrc + v_forward * 4096);
traceline(vecSrc, vecDst, MOVE_NORMAL, pSeat->m_ePlayer);
cross_pos = project(trace_endpos) + [-(vecSize[0]/2),-(vecSize[1]/2)];
cross_pos[0] = rint(cross_pos[0]);
cross_pos[1] = rint(cross_pos[1]);
drawsubpic(cross_pos, vecSize, strMat, vecSrcPos, vecSrcSize, vecColor, flAlpha, DRAWFLAG_NORMAL);
}
}