using System; using System.Collections.Generic; using System.Linq; using System.Text; using VRageMath; namespace Sandbox.ModAPI.Ingame { public interface IMyCameraBlock:IMyFunctionalBlock { /// /// Does a raycast in the direction the camera is facing. Pitch and Yaw are in degrees. /// Will return an empty struct if distance or angle are out of bounds. /// /// /// /// /// MyDetectedEntityInfo Raycast(double distance, float pitch = 0, float yaw = 0); /// /// Does a raycast to the given point. /// Will return an empty struct if distance or angle are out of bounds. /// /// /// MyDetectedEntityInfo Raycast(Vector3D targetPos); /// /// Does a raycast in the given direction. /// Will return an empty struct if distance or angle are out of bounds. /// /// /// /// MyDetectedEntityInfo Raycast(double distance, Vector3D targetDirection); /// /// The maximum distance that this camera can scan, based on the time since the last scan. /// double AvailableScanRange { get; } /// /// When this is true, the available raycast distance will count up, and power usage is increased. /// bool EnableRaycast { get; set; } /// /// Checks if the camera can scan the given distance. /// /// /// bool CanScan(double distance); /// /// Returns the number of milliseconds until the camera can do a raycast of the given distance. /// /// /// int TimeUntilScan(double distance); /// /// Returns the maximum positive angle you can apply for pitch and yaw. /// float RaycastConeLimit { get; } /// /// Returns the maximum distance you can request a raycast. -1 means infinite. /// double RaycastDistanceLimit { get; } } }