Hi everybody!

I have a question about traceline, i've managed to get bullets "penetrating"
surfaces (walls, ceiling, floor). It works like a charm, the bullet comes
out on the other side as intended. But the problem is when I try shooting at
chairs, barrels, crates. The traceline just wont do the trick.

What im doing with surfaces that I make the traceline start solid and tell
him to look forward 16 units. Then I check if the traceline has a valid
value n the variable fractionleftsolid. It gives me the perfect exit on the
otherside.

But for props, he just won't do the same. Is there a another way to find out
where the bullet would exit in entities? I could use a for-loop to find out
when the bullet really leaves the entity. But I'm trying to avoid loops,
since they might get cpu intense (or just become a time-stealing-loop).

Some code to relax your eyes on:

// tr is from FireBullet in CBaseEntity (baseentity_shared.cpp)
// Force the traceline into the surface.
Vector vecNewPos = tr.endpos + vecDir * 0.5;

// Perform the traceline. MAX_PENETRATION is 16.0f currently.
UTIL_TraceLine( vecNewPos, tr.endpos + vecDir * MAX_PENETRATION , MASK_SHOT,
pTraceFilter, &penetrationTrace );

// Check if the traceline was a success. Fractionleftsolid is always false
on props, but it does start solid.
// MAT_TOUGHNESS is my custom material toughness variable. If it's 0, then
it's a unhandled surface.
if ((penetrationTrace.fractionleftsolid == 0 && tr.DidHitWorld()) ||
penetrationTrace.fractionleftsolid >= 1.0 || tr.fraction == 0.0f ||
MAT_TOUGHNESS == 0.0f)
        return;

// Some refire bullet code.
...
...
...

Im open for any idea that you might have :)
Oh, the mod is based on HL2MP (OB SDK?)

// Tommi 'MindBlaster' Bordi


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to