Skip to content

Commit 74c99ae

Browse files
committed
Crash fixes and new func
Signed-off-by: Karol Szuster <[email protected]>
1 parent 14edee5 commit 74c99ae

File tree

6 files changed

+93
-77
lines changed

6 files changed

+93
-77
lines changed

anubis/engine/Edict.cpp

+81-74
Original file line numberDiff line numberDiff line change
@@ -418,83 +418,85 @@ namespace Anubis::Engine
418418
return static_cast<SpawnFlag>(m_edict->v.spawnflags);
419419
}
420420

421+
IEdict::RenderFx Edict::getRenderEffects() const
422+
{
423+
return static_cast<RenderFx>(m_edict->v.renderfx);
424+
}
425+
421426
void Edict::setVecProperty(VecProperty property, std::array<float, 3> value)
422427
{
423-
auto getVec = [this, property, value]()
428+
switch (property)
424429
{
425-
switch (property)
426-
{
427-
case VecProperty::Origin:
428-
m_edict->v.origin = {value[0], value[1], value[2]};
429-
break;
430-
case VecProperty::OldOrigin:
431-
m_edict->v.oldorigin = {value[0], value[1], value[2]};
432-
break;
433-
case VecProperty::Velocity:
434-
m_edict->v.velocity = {value[0], value[1], value[2]};
435-
break;
436-
case VecProperty::BaseVelocity:
437-
m_edict->v.basevelocity = {value[0], value[1], value[2]};
438-
break;
439-
case VecProperty::ClBaseVelocity:
440-
m_edict->v.clbasevelocity = {value[0], value[1], value[2]};
441-
break;
442-
case VecProperty::MoveDir:
443-
m_edict->v.movedir = {value[0], value[1], value[2]};
444-
break;
445-
case VecProperty::Angles:
446-
m_edict->v.angles = {value[0], value[1], value[2]};
447-
break;
448-
case VecProperty::AVelocity:
449-
m_edict->v.avelocity = {value[0], value[1], value[2]};
450-
break;
451-
case VecProperty::PunchAngle:
452-
m_edict->v.punchangle = {value[0], value[1], value[2]};
453-
break;
454-
case VecProperty::ViewingAngle:
455-
m_edict->v.v_angle = {value[0], value[1], value[2]};
456-
break;
457-
case VecProperty::EndPos:
458-
m_edict->v.endpos = {value[0], value[1], value[2]};
459-
break;
460-
case VecProperty::StartPos:
461-
m_edict->v.startpos = {value[0], value[1], value[2]};
462-
break;
463-
case VecProperty::AbsMin:
464-
m_edict->v.absmin = {value[0], value[1], value[2]};
465-
break;
466-
case VecProperty::AbsMax:
467-
m_edict->v.absmax = {value[0], value[1], value[2]};
468-
break;
469-
case VecProperty::Mins:
470-
m_edict->v.mins = {value[0], value[1], value[2]};
471-
break;
472-
case VecProperty::Maxs:
473-
m_edict->v.maxs = {value[0], value[1], value[2]};
474-
break;
475-
case VecProperty::Size:
476-
m_edict->v.size = {value[0], value[1], value[2]};
477-
break;
478-
case VecProperty::RenderColor:
479-
m_edict->v.rendercolor = {value[0], value[1], value[2]};
480-
break;
481-
case VecProperty::ViewingOffset:
482-
m_edict->v.view_ofs = {value[0], value[1], value[2]};
483-
break;
484-
case VecProperty::User1:
485-
m_edict->v.vuser1 = {value[0], value[1], value[2]};
486-
break;
487-
case VecProperty::User2:
488-
m_edict->v.vuser2 = {value[0], value[1], value[2]};
489-
break;
490-
case VecProperty::User3:
491-
m_edict->v.vuser3 = {value[0], value[1], value[2]};
492-
break;
493-
case VecProperty::User4:
494-
m_edict->v.vuser4 = {value[0], value[1], value[2]};
495-
break;
496-
}
497-
};
430+
case VecProperty::Origin:
431+
m_edict->v.origin = {value[0], value[1], value[2]};
432+
break;
433+
case VecProperty::OldOrigin:
434+
m_edict->v.oldorigin = {value[0], value[1], value[2]};
435+
break;
436+
case VecProperty::Velocity:
437+
m_edict->v.velocity = {value[0], value[1], value[2]};
438+
break;
439+
case VecProperty::BaseVelocity:
440+
m_edict->v.basevelocity = {value[0], value[1], value[2]};
441+
break;
442+
case VecProperty::ClBaseVelocity:
443+
m_edict->v.clbasevelocity = {value[0], value[1], value[2]};
444+
break;
445+
case VecProperty::MoveDir:
446+
m_edict->v.movedir = {value[0], value[1], value[2]};
447+
break;
448+
case VecProperty::Angles:
449+
m_edict->v.angles = {value[0], value[1], value[2]};
450+
break;
451+
case VecProperty::AVelocity:
452+
m_edict->v.avelocity = {value[0], value[1], value[2]};
453+
break;
454+
case VecProperty::PunchAngle:
455+
m_edict->v.punchangle = {value[0], value[1], value[2]};
456+
break;
457+
case VecProperty::ViewingAngle:
458+
m_edict->v.v_angle = {value[0], value[1], value[2]};
459+
break;
460+
case VecProperty::EndPos:
461+
m_edict->v.endpos = {value[0], value[1], value[2]};
462+
break;
463+
case VecProperty::StartPos:
464+
m_edict->v.startpos = {value[0], value[1], value[2]};
465+
break;
466+
case VecProperty::AbsMin:
467+
m_edict->v.absmin = {value[0], value[1], value[2]};
468+
break;
469+
case VecProperty::AbsMax:
470+
m_edict->v.absmax = {value[0], value[1], value[2]};
471+
break;
472+
case VecProperty::Mins:
473+
m_edict->v.mins = {value[0], value[1], value[2]};
474+
break;
475+
case VecProperty::Maxs:
476+
m_edict->v.maxs = {value[0], value[1], value[2]};
477+
break;
478+
case VecProperty::Size:
479+
m_edict->v.size = {value[0], value[1], value[2]};
480+
break;
481+
case VecProperty::RenderColor:
482+
m_edict->v.rendercolor = {value[0], value[1], value[2]};
483+
break;
484+
case VecProperty::ViewingOffset:
485+
m_edict->v.view_ofs = {value[0], value[1], value[2]};
486+
break;
487+
case VecProperty::User1:
488+
m_edict->v.vuser1 = {value[0], value[1], value[2]};
489+
break;
490+
case VecProperty::User2:
491+
m_edict->v.vuser2 = {value[0], value[1], value[2]};
492+
break;
493+
case VecProperty::User3:
494+
m_edict->v.vuser3 = {value[0], value[1], value[2]};
495+
break;
496+
case VecProperty::User4:
497+
m_edict->v.vuser4 = {value[0], value[1], value[2]};
498+
break;
499+
}
498500
}
499501

500502
void Edict::setStrProperty(StrProperty property, StringOffset value)
@@ -849,4 +851,9 @@ namespace Anubis::Engine
849851
m_edict->v.spawnflags = static_cast<int>(spawnFlag);
850852
}
851853

854+
void Edict::setRenderEffects(RenderFx renderFx)
855+
{
856+
m_edict->v.renderfx = static_cast<decltype(m_edict->v.renderfx)>(renderFx);
857+
}
858+
852859
} // namespace Anubis::Engine

anubis/engine/Edict.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ namespace Anubis::Engine
6565
[[nodiscard]] RenderMode getRenderMode() const final;
6666
[[nodiscard]] DeadFlag getDeadFlag() const final;
6767
[[nodiscard]] SpawnFlag getSpawnFlag() const final;
68+
[[nodiscard]] RenderFx getRenderEffects() const final;
6869

6970
void setFlags(Flag flags) final;
7071

@@ -89,6 +90,7 @@ namespace Anubis::Engine
8990
void setRenderMode(RenderMode renderMode) final;
9091
void setDeadFlag(DeadFlag deadFlag) final;
9192
void setSpawnFlag(SpawnFlag spawnFlag) final;
93+
void setRenderEffects(RenderFx renderFx) final;
9294

9395
[[nodiscard]] void *getPrivateData() const final;
9496

anubis/game/Library.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,11 @@ namespace Anubis::Game
584584
}
585585

586586
entityLib->installVFHooks();
587-
m_hooks->initCSHooks(entityLib->getCSHooks());
587+
588+
if (m_modType == Mod::CStrike || m_modType == Mod::CZero)
589+
{
590+
m_hooks->initCSHooks(entityLib->getCSHooks());
591+
}
588592

589593
m_entityLibrary = std::move(entityLib);
590594

anubis/game/Library.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,9 @@ namespace Anubis::Game
106106
void _initGameEntityDLL(std::filesystem::path &&path);
107107

108108
private:
109-
constexpr static inline std::size_t knownGamesNum = 5;
109+
constexpr static inline std::size_t knownGamesNum = 6;
110110
constexpr static inline std::array<ModInfo, knownGamesNum> knownGames = {
111+
ModInfo { "", "", "", "", ""},
111112
ModInfo { "valve", "hl.so", "hl.dll", "libvalve_api.so", "valve_api.dll"},
112113
ModInfo {"cstrike", "cs.so", "mp.dll", "libcstrike_api.so", "cstrike_api.dll"},
113114
ModInfo { "czero", "cs.so", "mp.dll", "libcstrike_api.so", "cstrike_api.dll"},

anubis/game/cstrike/BaseEntity.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace Anubis::Game::CStrike
2929
{
3030
}
3131

32-
BaseEntity::BaseEntity(CBaseEntity *entity) : m_edict(gEngineLib->getEdict(m_entity->pev)), m_entity(entity) {}
32+
BaseEntity::BaseEntity(CBaseEntity *entity) : m_edict(gEngineLib->getEdict(entity->pev)), m_entity(entity) {}
3333

3434
nstd::observer_ptr<Engine::IEdict> BaseEntity::edict() const
3535
{

public/engine/IEdict.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ namespace Anubis::Engine
361361
[[nodiscard]] virtual RenderMode getRenderMode() const = 0;
362362
[[nodiscard]] virtual DeadFlag getDeadFlag() const = 0;
363363
[[nodiscard]] virtual SpawnFlag getSpawnFlag() const = 0;
364+
[[nodiscard]] virtual RenderFx getRenderEffects() const = 0;
364365

365366
virtual void setFlags(Flag flags) = 0;
366367

@@ -385,6 +386,7 @@ namespace Anubis::Engine
385386
virtual void setRenderMode(RenderMode renderMode) = 0;
386387
virtual void setDeadFlag(DeadFlag deadFlag) = 0;
387388
virtual void setSpawnFlag(SpawnFlag spawnFlag) = 0;
389+
virtual void setRenderEffects(RenderFx renderFx) = 0;
388390

389391
[[nodiscard]] virtual void *getPrivateData() const = 0;
390392
virtual explicit operator edict_t *() const = 0;

0 commit comments

Comments
 (0)