Пользователь
-
Автор темы
- #1
Сделал булет трейсер,насколько я понял вызывать нужно его в firegamevent
Но увидев в визуалке что он нигде не вызываеться
Я понял почему мой булет трейсер не рабоатет.
Навсякий случай приложу код
C++:
void CEventListener::FireGameEvent(IGameEvent* pEvent)
{
if (pEvent == nullptr)
return;
// get hash of event name
const FNV1A_t uNameHash = FNV1A::Hash(pEvent->GetName());
#pragma region eventlistener_handlers
CVisuals::Get().Event(pEvent, uNameHash);
CVisuals::Get().BulletBeams(pEvent);
#pragma endregion
}
Я понял почему мой булет трейсер не рабоатет.
Навсякий случай приложу код
C++:
void CVisuals::BulletBeams(IGameEvent* event)
{
IViewRenderBeams* beams;
if (!C::Get<bool>(Vars.bBTracers) || !I::Engine->IsInGame() || !I::Engine->IsConnected())
return;
CBaseEntity* pLocal = pLocal->GetLocalPlayer();
if (!pLocal)
return;
Vector position;
position.x = event->GetFloat("x");
position.y = event->GetFloat("y");
position.z = event->GetFloat("z");
BeamInfo_t beam_info;
beam_info.nType = TE_BEAMPOINTS;
beam_info.pszModelName = "sprites/physbeam.vmt";//"sprites/glow01.vmt";
beam_info.nModelIndex = -1;
beam_info.flHaloScale = 0.f;
beam_info.flLife = 2.f;
beam_info.flWidth = 1.f;
beam_info.flBlue = 50;
beam_info.flGreen = 50;
beam_info.flRed = 50;
beam_info.flEndWidth = 1.f;
beam_info.flFadeLength = 0.1f;
beam_info.flAmplitude = 2.f;
beam_info.flBrightness = 255.f;
beam_info.flSpeed = 0.2f;
beam_info.iStartFrame = 0;
beam_info.flFrameRate = 0.f;
beam_info.nSegments = 2;
beam_info.bRenderable = true;
beam_info.nFlags = FBEAM_ONLYNOISEONCE | FBEAM_NOTILE | FBEAM_HALOBEAM; // create beam backwards because it looks nicer.
beam_info.vecStart = position;
beam_info.vecEnd = pLocal->GetEyePosition();
auto beam = beams->CreateBeamPoints(beam_info);//memory->renderBeams->CreateBeamPoints(beam_info);
if (beam)
{
beams->DrawBeam(beam);
activeBeams.push_back({ beam_info, beam });
}
}