RSBDOCS
API reference

BulletPoint

The payload passed to hit listeners and recorded for bullet time.

Source: src/System/BulletPoint.cs.

FieldTypeMeaning
m_propertiesBulletPropertiesAsset used for the shot, populated on hits and bullet-time path points.
m_shotIdlongPositive ID shared by every impact and path record from one accepted firing call.
m_shooterGameObjectOwner supplied to the per-shot API; null for legacy calls or a destroyed owner.
m_shotOriginVector3Original firing position, distinct from the current ray origin.
m_shotDirectionVector3Original normalized aiming direction, before zeroing and simulation.
m_hitColliderColliderActual collider hit, including child hitboxes; null for non-hit points.
m_hitRigidbodyRigidbodyRigidbody attached to the collider, or null for static/non-hit points.
m_hitTypePointHitTypeNone, Normal, PenetrationIn, PenetrationOut or Ricochet.
m_originVector3Origin of this ray segment.
m_endPointVector3End of the segment; impact point for a hit.
m_hitNormalVector3Surface normal for a hit.
m_directionVector3Direction of the ray segment.
m_velocityVector3Simulation velocity.
m_hitTransformTransformUnity RaycastHit.transform; may be a rigidbody parent. Use m_hitCollider for the exact hitbox.
m_kineticEnergyfloatKinetic energy in joules.
m_travelTimefloatSimulated time since firing, in seconds.
m_isPointAfterTargetHitboolInternal bullet-time path marker.

Only use hit-transform and normal data for hit points; a recorded path also contains points with hit type None. For a world-space path direction, use m_endPoint - m_origin: m_velocity is stored in the simulation's velocity representation, not a guaranteed world-space rigidbody velocity.

Optional damage configuration is available through m_properties.DamageProfile; check it for null before reading BaseDamage. The payload does not contain a final damage result. Your game applies modifiers and health changes; see Ammunition damage.

Shot IDs remain the same through penetration, ricochet, bullet-time replay and fallback to normal simulation. They are local runtime identifiers, not persistent or network IDs. Events are global; filter by shooter, target or shot ID. The ID can help implement your own damage deduplication, but RSB does not perform it automatically.

Treat the payload and referenced assets as read-only configuration in listeners. Changing a shared record can affect other listeners or cinematic replay.