/// <summary> /// Add a new camera to the robot using the default position (0, 0.5, 0) and rotation /// </summary> /// <returns></returns> public GameObject AddCamera(SimulatorRobot robot, Transform anchor) { GameObject newCamera = new GameObject("RobotCamera_" + robotCameraList.Count); newCamera.AddComponent <UnityEngine.Camera>(); newCamera.transform.parent = anchor; newCamera.transform.localPosition = new Vector3(0f, 0f, 0f); newCamera.transform.localRotation = Quaternion.identity; RobotCamera configuration = newCamera.AddComponent <RobotCamera>(); configuration.UpdateConfiguration(); //Set the camera parent robot, which is necessary when changing robot and restoring the configuration configuration.SetParentRobot(robot); newCamera.SetActive(false); //Make sure current camera is the first one on the list if (robotCameraList.Count == 0) { CurrentCamera = newCamera; } robotCameraList.Add(newCamera); return(newCamera); }
/// <summary> /// Add a new camera to the robot /// </summary> /// <param name="anchor"></param> The robot node to which the camera attaches /// <param name="positionOffset"></param> /// <param name="rotationOffset"></param> /// <returns></returns> public GameObject AddCamera(SimulatorRobot robot, Transform anchor, Vector3 positionOffset, Vector3 rotationOffset) { GameObject newCamera = new GameObject("RobotCamera_" + robotCameraList.Count); newCamera.AddComponent <UnityEngine.Camera>(); newCamera.transform.parent = anchor; newCamera.transform.localPosition = positionOffset; newCamera.transform.localRotation = Quaternion.Euler(rotationOffset); newCamera.GetComponent <UnityEngine.Camera>().fieldOfView = 60; RobotCamera configuration = newCamera.AddComponent <RobotCamera>(); configuration.UpdateConfiguration(); //Set the camera parent robot, which is necessary when changing robot and restoring the configuration configuration.SetParentRobot(robot); newCamera.SetActive(false); if (robotCameraList.Count == 0) { CurrentCamera = newCamera; } robotCameraList.Add(newCamera); return(newCamera); }
/// <summary> /// Return a list of robot cameras attached to a given robot /// </summary> /// <param name="parent"></param> A robot on which cameras are attached to /// <returns></returns> A list of camera attach to that robot public List <GameObject> GetRobotCamerasFromRobot(SimulatorRobot parent) { List <GameObject> camerasOnRobot = new List <GameObject>(); foreach (GameObject camera in robotCameraList) { RobotCamera config = camera.GetComponent <RobotCamera>(); if (config.robot.Equals(parent)) { camerasOnRobot.Add(camera); } } return(camerasOnRobot); }