Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
d44b8c7
work in progress
AdamTadeusz Jun 4, 2025
216b12a
just some unresolved externals now
AdamTadeusz Jun 5, 2025
fcf7113
working kinda bad though
AdamTadeusz Jun 5, 2025
32a9966
peepoo
AdamTadeusz Jun 6, 2025
0b07a7e
randomise weapon on spawn
AdamTadeusz Jun 6, 2025
a4ef12c
bot related menu issue here
AdamTadeusz Jun 6, 2025
9bb32da
better reloading, don't navigate when frozen
AdamTadeusz Jun 8, 2025
d9048a1
formatting, ifdef neo in nextbotbehavior
AdamTadeusz Jun 8, 2025
fe4d613
forgot the if ( bottomAction )
AdamTadeusz Jun 8, 2025
7aafea2
try that again
AdamTadeusz Jun 8, 2025
a5d1b80
this could be an else
AdamTadeusz Jun 8, 2025
60ff8c0
missing newline
AdamTadeusz Jun 8, 2025
6e2f817
the if is run after the for loop, just revert all changes to this
AdamTadeusz Jun 8, 2025
cc3f88e
that unresolved external they talk about in the bible. scriptfunc fixed
AdamTadeusz Jun 8, 2025
88ea2ca
fix crash due to Actions on game over, null pointer when no weapon in…
AdamTadeusz Jun 8, 2025
81db8ef
comment
AdamTadeusz Jun 8, 2025
92dad6a
fewer messages in chat on bot join, append integer to duplicate bot n…
AdamTadeusz Jun 8, 2025
db18228
Merge branch 'master' into 240_nextbots
AdamTadeusz Jun 8, 2025
f5b4f99
bot_mimic working
AdamTadeusz Jun 28, 2025
9dd8cc3
unused import now
AdamTadeusz Jun 28, 2025
af47563
forgot bot_mimic_yaw_offset
AdamTadeusz Jun 28, 2025
9023aad
whoa mama
AdamTadeusz Jun 30, 2025
80e3e67
nav generate uses player clips instead of npc clips, give option to s…
AdamTadeusz Jul 1, 2025
510832b
can't repro anymore, undo these
AdamTadeusz Jul 3, 2025
31f3430
go to ghost
AdamTadeusz Jul 3, 2025
fc7b2ec
fix pistols, remove cast
AdamTadeusz Jul 4, 2025
282df24
forgot zr68l
AdamTadeusz Jul 4, 2025
baf90b1
check pointer
AdamTadeusz Jul 5, 2025
93c04cf
conflict
AdamTadeusz Jul 6, 2025
76fd0ce
Fix int to ptr extension for 64bit
Rainyan Jul 7, 2025
dfba460
oops
Rainyan Jul 7, 2025
17cf066
remove extra tokens
AdamTadeusz Jul 8, 2025
dbebf6c
Fix int to ptr conversion for x64
AdamTadeusz Jul 8, 2025
0667936
Revert "Fix int to ptr conversion for x64"
AdamTadeusz Jul 8, 2025
e1aa551
Merge pull request #2 from AdamTadeusz/revert-1-bug/sign-extension
AdamTadeusz Jul 8, 2025
78f494c
Reapply "Fix int to ptr conversion for x64"
Rainyan Jul 8, 2025
8a3ddf5
Merge branch 'master' into 240_nextbots
Rainyan Jul 8, 2025
ed5bae9
merge master
AdamTadeusz Jul 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/game/client/c_baseanimating.h
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ class C_ClientRagdoll : public C_BaseAnimating, public IPVSNotify
virtual IPVSNotify* GetPVSNotifyInterface() { return this; }
#ifdef NEO
virtual int DrawModel(int flags) override;
#endif neo
#endif // NEO

void HandleAnimatedFriction( void );
virtual void SUB_Remove( void );
Expand Down
8 changes: 7 additions & 1 deletion src/game/client/neo/c_neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,13 @@ class NeoClassMenu_Cb : public ICommandCallback
}
}

auto playerNeoClass = C_NEO_Player::GetLocalNEOPlayer()->m_iNeoClass;
C_NEO_Player* localPlayer = C_NEO_Player::GetLocalNEOPlayer();
if (!localPlayer)
{
return;
}

auto playerNeoClass = localPlayer->m_iNeoClass;
if (playerNeoClass == NEO_CLASS_VIP)
{
return;
Expand Down
2 changes: 2 additions & 0 deletions src/game/client/neo/ui/neo_root.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -970,6 +970,7 @@ void CNeoRoot::MainLoopNewGame(const MainLoopParam param)
}
NeoUI::TextEdit(L"Hostname", m_newGame.wszHostname, SZWSZ_LEN(m_newGame.wszHostname));
NeoUI::SliderInt(L"Max players", &m_newGame.iMaxPlayers, 1, MAX_PLAYERS-1); // -1 to accommodate SourceTV
NeoUI::SliderInt(L"Bot Quota", &m_newGame.iBotQuota, 0, MAX_PLAYERS-1);
NeoUI::TextEdit(L"Password", m_newGame.wszPassword, SZWSZ_LEN(m_newGame.wszPassword));
NeoUI::RingBoxBool(L"Friendly fire", &m_newGame.bFriendlyFire);
NeoUI::RingBoxBool(L"Use Steam networking", &m_newGame.bUseSteamNetworking);
Expand Down Expand Up @@ -1009,6 +1010,7 @@ void CNeoRoot::MainLoopNewGame(const MainLoopParam param)
ConVarRef("sv_password").SetValue(szPassword);
ConVarRef("mp_friendlyfire").SetValue(m_newGame.bFriendlyFire);
ConVarRef("sv_use_steam_networking").SetValue(m_newGame.bUseSteamNetworking);
ConVarRef("neo_bot_quota").SetValue(m_newGame.iBotQuota);

char cmdStr[256];
V_sprintf_safe(cmdStr, "maxplayers %d; progress_enable; map \"%s\"", m_newGame.iMaxPlayers, szMap);
Expand Down
1 change: 1 addition & 0 deletions src/game/client/neo/ui/neo_root.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ struct NeoNewGame
wchar_t wszMap[64] = L"ntre_oilstain_ctg";
wchar_t wszHostname[64] = L"NEOTOKYO;REBUILD Listen Server";
int iMaxPlayers = 24;
int iBotQuota = 10;
wchar_t wszPassword[64] = L"neo";
bool bFriendlyFire = true;
bool bUseSteamNetworking = false;
Expand Down
50 changes: 48 additions & 2 deletions src/game/server/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1389,6 +1389,54 @@ target_sources_grouped(
neo/neo_dm_spawn.h
)

target_sources_grouped(
TARGET server
NAME "NEO\\Bot"
FILES
neo/bot/neo_bot.cpp
neo/bot/neo_bot.h
neo/bot/neo_bot_body.cpp
neo/bot/neo_bot_body.h
neo/bot/neo_bot_locomotion.cpp
neo/bot/neo_bot_locomotion.h
neo/bot/neo_bot_manager.cpp
neo/bot/neo_bot_manager.h
neo/bot/neo_bot_squad.cpp
neo/bot/neo_bot_squad.h
neo/bot/neo_bot_vision.cpp
neo/bot/neo_bot_vision.h
neo/bot/behavior/neo_bot_approach_object.cpp
neo/bot/behavior/neo_bot_approach_object.h
neo/bot/behavior/neo_bot_attack.cpp
neo/bot/behavior/neo_bot_attack.h
neo/bot/behavior/neo_bot_behavior.cpp
neo/bot/behavior/neo_bot_behavior.h
neo/bot/behavior/neo_bot_dead.cpp
neo/bot/behavior/neo_bot_dead.h
neo/bot/behavior/neo_bot_melee_attack.cpp
neo/bot/behavior/neo_bot_melee_attack.h
neo/bot/behavior/neo_bot_move_to_vantage_point.cpp
neo/bot/behavior/neo_bot_move_to_vantage_point.h
neo/bot/behavior/neo_bot_retreat_to_cover.cpp
neo/bot/behavior/neo_bot_retreat_to_cover.h
neo/bot/behavior/neo_bot_scenario_monitor.cpp
neo/bot/behavior/neo_bot_scenario_monitor.h
neo/bot/behavior/neo_bot_seek_and_destroy.cpp
neo/bot/behavior/neo_bot_seek_and_destroy.h
neo/bot/behavior/neo_bot_tactical_monitor.cpp
neo/bot/behavior/neo_bot_tactical_monitor.h
neo/bot/behavior/nav_entities/neo_bot_nav_ent_destroy_entity.cpp
neo/bot/behavior/nav_entities/neo_bot_nav_ent_destroy_entity.h
neo/bot/behavior/nav_entities/neo_bot_nav_ent_move_to.cpp
neo/bot/behavior/nav_entities/neo_bot_nav_ent_move_to.h
neo/bot/behavior/nav_entities/neo_bot_nav_ent_wait.cpp
neo/bot/behavior/nav_entities/neo_bot_nav_ent_wait.h
neo/bot/map_entities/neo_bot_generator.cpp
neo/bot/map_entities/neo_bot_generator.h
neo/bot/map_entities/neo_bot_proxy.cpp
neo/bot/map_entities/neo_bot_proxy.h
)

target_sources_grouped(
TARGET server
NAME "NEO\\Weapons"
Expand Down Expand Up @@ -1483,8 +1531,6 @@ target_sources_grouped(
${CMAKE_SOURCE_DIR}/game/shared/hl2mp/hl2mp_playeranimstate.h
${CMAKE_SOURCE_DIR}/game/shared/hl2mp/hl2mp_weapon_parse.cpp
${CMAKE_SOURCE_DIR}/game/shared/hl2mp/hl2mp_weapon_parse.h
${CMAKE_SOURCE_DIR}/game/server/hl2mp/hl2mp_bot_temp.cpp
${CMAKE_SOURCE_DIR}/game/server/hl2mp/hl2mp_bot_temp.h
hl2mp/hl2mp_client.cpp
hl2mp/hl2mp_cvars.cpp
hl2mp/hl2mp_gameinterface.cpp
Expand Down
5 changes: 4 additions & 1 deletion src/game/server/NextBot/NextBotContextualQueryInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,11 @@ enum QueryResultType
};

// Can pass this into IContextualQuery::IsHindrance to see if any hindrance is ever possible
#ifdef NEO
#define IS_ANY_HINDRANCE_POSSIBLE ( (CBaseEntity*)(INT_TO_POINTER(UINTPTR_MAX)) )
#else
#define IS_ANY_HINDRANCE_POSSIBLE ( (CBaseEntity*)0xFFFFFFFF )

#endif

//----------------------------------------------------------------------------------------------------------------
/**
Expand Down
3 changes: 3 additions & 0 deletions src/game/server/NextBot/Path/NextBotPathFollow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,9 @@ CBaseEntity *PathFollower::FindBlocker( INextBot *bot )
IIntention *think = bot->GetIntentionInterface();

// if we don't care about hindrances, don't do the expensive tests
#ifdef NEO
AssertOnce(uintp(IS_ANY_HINDRANCE_POSSIBLE) == uintp(-1));
#endif
if ( think->IsHindrance( bot, IS_ANY_HINDRANCE_POSSIBLE ) != ANSWER_YES )
return NULL;

Expand Down
35 changes: 35 additions & 0 deletions src/game/server/NextBot/Player/NextBotPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,10 @@ inline void _NextBot_BuildUserCommand( CUserCmd *cmd, const QAngle &viewangles,


//-----------------------------------------------------------------------------------------------------
#ifdef NEO
extern ConVar bot_mimic;
extern ConVar bot_mimic_yaw_offset;
#endif // NEO
template < typename PlayerType >
inline void NextBotPlayer< PlayerType >::PhysicsSimulate( void )
{
Expand All @@ -598,6 +602,37 @@ inline void NextBotPlayer< PlayerType >::PhysicsSimulate( void )
return;
}

#ifdef NEO
if (bot_mimic.GetBool())
{
auto pPlayerMimicked = UTIL_PlayerByIndex(bot_mimic.GetInt());
auto pThisBot = static_cast<CBasePlayer*>(GetEntity());
{
if (pPlayerMimicked && pThisBot)
{
CUserCmd cmd;

if (!pPlayerMimicked->GetLastUserCommand())
{
return;
}

cmd = *pPlayerMimicked->GetLastUserCommand();
cmd.viewangles[YAW] += bot_mimic_yaw_offset.GetFloat();

// allocate a new command and add it to the player's list of command to process
this->ProcessUsercmds(&cmd, 1, 1, 0, false);

// Clear out any fixangle that has been set
pThisBot->pl.fixangle = FIXANGLE_NONE;

// actually execute player commands and do player physics
PlayerType::PhysicsSimulate();
return;
}
}
}
#endif // NEO
int inputButtons;
//
// Update bot behavior
Expand Down
3 changes: 3 additions & 0 deletions src/game/server/NextBot/Player/NextBotPlayerBody.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@ void PlayerBody::Reset( void )
}

ConVar bot_mimic( "bot_mimic", "0", 0, "Bot uses usercmd of player by index." );
#ifdef NEO
ConVar bot_mimic_yaw_offset("bot_mimic_yaw_offset", "0", 0, "Offsets the bot yaw.");
#endif // NEO

//-----------------------------------------------------------------------------------------------
/**
Expand Down
4 changes: 4 additions & 0 deletions src/game/server/hl2mp/hl2mp_bot_temp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ ConVar bot_flipout( "bot_flipout", "0", 0, "When on, all bots fire their guns."
ConVar bot_defend( "bot_defend", "0", 0, "Set to a team number, and that team will all keep their combat shields raised." );
ConVar bot_changeclass( "bot_changeclass", "0", 0, "Force all bots to change to the specified class." );
ConVar bot_zombie( "bot_zombie", "0", 0, "Brraaaaaiiiins." );
#if defined NEO && defined NEXT_BOT
extern ConVar bot_mimic_yaw_offset;
#else
static ConVar bot_mimic_yaw_offset( "bot_mimic_yaw_offset", "0", 0, "Offsets the bot yaw." );
#endif // NEO && NEXTBOT
ConVar bot_attack( "bot_attack", "1", 0, "Shoot!" );

ConVar bot_sendcmd( "bot_sendcmd", "", 0, "Forces bots to send the specified command." );
Expand Down
2 changes: 1 addition & 1 deletion src/game/server/hl2mp/hl2mp_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ IMPLEMENT_SERVERCLASS_ST(CHL2MP_Player, DT_HL2MP_Player)
// on the player.
// So, just never send it, and don't predict it on the client either.
SendPropExclude( "DT_BasePlayer", "m_flMaxspeed" ),
#endif NEO
#endif // NEO


// Data that only gets sent to the local player
Expand Down
20 changes: 20 additions & 0 deletions src/game/server/nav_area.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3638,7 +3638,11 @@ bool IsHidingSpotInCover( const Vector &spot )

// if we are crouched underneath something, that counts as good cover
to = from + Vector( 0, 0, 20.0f );
#ifdef NEO
UTIL_TraceLine( from, to, MASK_PLAYERSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
UTIL_TraceLine( from, to, MASK_NPCSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#endif // NEO
if (result.fraction != 1.0f)
return true;

Expand All @@ -3649,7 +3653,11 @@ bool IsHidingSpotInCover( const Vector &spot )
{
to = from + Vector( coverRange * (float)cos(angle), coverRange * (float)sin(angle), HalfHumanHeight );

#ifdef NEO
UTIL_TraceLine( from, to, MASK_PLAYERSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
UTIL_TraceLine( from, to, MASK_NPCSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#endif // NEO

// if traceline hit something, it hit "cover"
if (result.fraction != 1.0f)
Expand Down Expand Up @@ -4063,7 +4071,11 @@ void CNavArea::AddSpotEncounters( const CNavArea *from, NavDirType fromDir, cons

// check if we have LOS
// BOTPORT: ignore glass here
#ifdef NEO
UTIL_TraceLine( eye, Vector( spotPos.x, spotPos.y, spotPos.z + HalfHumanHeight ), MASK_PLAYERSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
UTIL_TraceLine( eye, Vector( spotPos.x, spotPos.y, spotPos.z + HalfHumanHeight ), MASK_NPCSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#endif // NEO
if (result.fraction != 1.0f)
continue;

Expand Down Expand Up @@ -4864,7 +4876,11 @@ void CNavArea::UpdateBlocked( bool force, int teamID )
origin,
bounds.lo,
bounds.hi,
#ifdef NEO
MASK_PLAYERSOLID_BRUSHONLY,
#else
MASK_NPCSOLID_BRUSHONLY,
#endif // NEO
&filter,
&tr );

Expand Down Expand Up @@ -4967,7 +4983,11 @@ void CNavArea::CheckFloor( CBaseEntity *ignore )
origin,
mins,
maxs,
#ifdef NEO
MASK_PLAYERSOLID_BRUSHONLY,
#else
MASK_NPCSOLID_BRUSHONLY,
#endif // NEO
ignore,
COLLISION_GROUP_PLAYER_MOVEMENT,
&tr );
Expand Down
8 changes: 8 additions & 0 deletions src/game/server/nav_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,11 @@ bool CNavMesh::FindActiveNavArea( void )

trace_t result;
CTraceFilterWalkableEntities filter( NULL, COLLISION_GROUP_NONE, WALK_THRU_EVERYTHING );
#ifdef NEO
UTIL_TraceLine( from, to, (nav_solid_props.GetBool()) ? MASK_PLAYERSOLID : MASK_PLAYERSOLID_BRUSHONLY, &filter, &result );
#else
UTIL_TraceLine( from, to, (nav_solid_props.GetBool()) ? MASK_NPCSOLID : MASK_NPCSOLID_BRUSHONLY, &filter, &result );
#endif // NEO

if (result.fraction != 1.0f)
{
Expand Down Expand Up @@ -518,7 +522,11 @@ bool CNavMesh::FindLadderCorners( Vector *corner1, Vector *corner2, Vector *corn
bool CheckForClimbableSurface( const Vector &start, const Vector &end )
{
trace_t result;
#ifdef NEO
UTIL_TraceLine( start, end, MASK_PLAYERSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
UTIL_TraceLine( start, end, MASK_NPCSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#endif // NEO

bool climbableSurface = false;
if (result.fraction != 1.0f)
Expand Down
4 changes: 4 additions & 0 deletions src/game/server/nav_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,11 @@ PlaceDirectory placeDirectory;
#define FORMAT_NAVFILE "maps\\%s.360.nav"
#else
#define FORMAT_BSPFILE "maps\\%s.bsp"
#ifdef NEO
#define FORMAT_NAVFILE "maps\\nav\\%s.nav"
#else
#define FORMAT_NAVFILE "maps\\%s.nav"
#endif // NEO
#define PATH_NAVFILE_EMBEDDED "maps\\embed.nav"
#endif

Expand Down
24 changes: 24 additions & 0 deletions src/game/server/nav_generate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1308,7 +1308,11 @@ StairTestType IsStairs( const Vector &start, const Vector &end, StairTestType re
if ( abs( start.z - end.z ) > StepHeight )
{
// initialize the height delta
#ifdef NEO
UTIL_TraceHull( start + traceOffset, start - traceOffset, hullMins, hullMaxs, MASK_PLAYERSOLID, &filter, &trace );
#else
UTIL_TraceHull( start + traceOffset, start - traceOffset, hullMins, hullMaxs, MASK_NPCSOLID, &filter, &trace );
#endif // NEO
if ( trace.startsolid || trace.IsDispSurface() )
{
return STAIRS_NO;
Expand All @@ -1324,7 +1328,11 @@ StairTestType IsStairs( const Vector &start, const Vector &end, StairTestType re
{
pos = start + t * ( end - start );

#ifdef NEO
UTIL_TraceHull( pos + traceOffset, pos - traceOffset, hullMins, hullMaxs, MASK_PLAYERSOLID, &filter, &trace );
#else
UTIL_TraceHull( pos + traceOffset, pos - traceOffset, hullMins, hullMaxs, MASK_NPCSOLID, &filter, &trace );
#endif // NEO
if ( trace.startsolid || trace.IsDispSurface() )
{
return STAIRS_NO;
Expand Down Expand Up @@ -3632,6 +3640,9 @@ static void HideAnalysisProgress( void )
/**
* Process the auto-generation for 'maxTime' seconds. return false if generation is complete.
*/
#ifdef NEO
ConVar nav_neo_skip_visibility_calculation("nav_neo_skip_visibility_calculation", "0", 0, "Skip visibility calculation", true, 0, true, 1);
#endif // NEO
bool CNavMesh::UpdateGeneration( float maxTime )
{
double startTime = Plat_FloatTime();
Expand Down Expand Up @@ -3793,6 +3804,15 @@ bool CNavMesh::UpdateGeneration( float maxTime )
//---------------------------------------------------------------------------
case COMPUTE_MESH_VISIBILITY:
{
#ifdef NEO
if (nav_neo_skip_visibility_calculation.GetBool())
{
Msg("Skipping mesh visibility\n");
m_generationState = FIND_EARLIEST_OCCUPY_TIMES;
m_generationIndex = 0;
return true;
}
#endif // NEO
while( m_generationIndex < TheNavAreas.Count() )
{
CNavArea *area = TheNavAreas[ m_generationIndex ];
Expand Down Expand Up @@ -4691,7 +4711,11 @@ bool IsWalkableTraceLineClear( const Vector &from, const Vector &to, unsigned in
const int maxTries = 50;
for( int t=0; t<maxTries; ++t )
{
#ifdef NEO
UTIL_TraceLine( useFrom, to, MASK_PLAYERSOLID, &traceFilter, &result );
#else
UTIL_TraceLine( useFrom, to, MASK_NPCSOLID, &traceFilter, &result );
#endif // NEO

// if we hit a walkable entity, try again
if (result.fraction != 1.0f && IsEntityWalkable( result.m_pEnt, flags ))
Expand Down
4 changes: 4 additions & 0 deletions src/game/server/nav_ladder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,8 +258,12 @@ void CNavLadder::SetDir( NavDirType dir )
#ifdef TERROR
// TERROR: use the MASK_ZOMBIESOLID_BRUSHONLY contents, since that's what zombies use
UTIL_TraceLine( from, to, MASK_ZOMBIESOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
#ifdef NEO
UTIL_TraceLine( from, to, MASK_PLAYERSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#else
UTIL_TraceLine( from, to, MASK_NPCSOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &result );
#endif // NEO
#endif

if (result.fraction != 1.0f)
Expand Down
Loading