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; }
}
}