using RobocraftX.Blocks.Ghost; using RobocraftX.Character.Camera; using RobocraftX.Character.Factories; using Svelto.ECS; namespace GamecraftModdingAPI.Blocks { public class BlockUtility { /// /// Returns the block the player is currently looking at. /// /// The player's ID /// The entities DB /// The maximum distance from the player (default is the player's building reach) /// The block's EGID or null if not found public static EGID? GetBlockLookedAt(uint playerId, EntitiesDB entitiesDB, float maxDistance = -1f) { if (!entitiesDB.TryQueryMappedEntities( CameraExclusiveGroups.CameraGroup, out var mapper)) return null; mapper.TryGetEntity(playerId, out CharacterCameraRayCastEntityStruct rayCast); float distance = maxDistance < 0 ? GhostBlockUtils.GetBuildInteractionDistance(entitiesDB, rayCast) : maxDistance; if (rayCast.hit && rayCast.distance <= distance) return rayCast.hitEgid; return null; } } }