use super::{Actor, ActorAttributeValueList, World};
#[cfg(carla_0100)]
use crate::rpc::{MaterialParameter, TextureColor, TextureFloatColor};
use crate::{
error::ffi::with_ffi_error,
geom::{BoundingBox, Location, Transform, Vector3D},
rpc::{ActorId, ActorState},
};
use carla_sys::carla_rust::{client::FfiActor, geom::FfiVector3D};
use cxx::SharedPtr;
pub trait ActorBase: Clone {
fn cxx_actor(&self) -> SharedPtr<FfiActor>;
fn into_actor(self) -> Actor {
unsafe { Actor::from_cxx(self.cxx_actor()).unwrap_unchecked() }
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.id](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.id)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.id](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.id)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.id](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.id)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn id(&self) -> ActorId {
self.cxx_actor().GetId().into()
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.type_id](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.type_id)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.type_id](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.type_id)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.type_id](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.type_id)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn type_id(&self) -> String {
self.cxx_actor().GetTypeId().to_string()
}
fn display_id(&self) -> String {
self.cxx_actor().GetDisplayId().to_string()
}
fn parent_id(&self) -> ActorId {
self.cxx_actor().GetParentId().into()
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.semantic_tags](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.semantic_tags)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.semantic_tags](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.semantic_tags)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.semantic_tags](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.semantic_tags)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn semantic_tags(&self) -> Vec<u8> {
self.cxx_actor().GetSemanticTags().iter().cloned().collect()
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_parent](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_parent)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_parent](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_parent)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_parent](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_parent)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn parent(&self) -> crate::Result<Option<Actor>> {
with_ffi_error("parent", |e| Actor::from_cxx(self.cxx_actor().GetParent(e)))
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.attributes](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.attributes)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.attributes](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.attributes)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.attributes](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.attributes)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn attributes(&self) -> crate::Result<ActorAttributeValueList<'_>> {
let ptr = with_ffi_error("attributes", |e| self.cxx_actor().GetAttributes(e))?;
Ok(unsafe { ActorAttributeValueList::from_cxx(ptr).unwrap_unchecked() })
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_world](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_world)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_world](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_world)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_world](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_world)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn world(&self) -> crate::Result<World> {
let world = with_ffi_error("world", |e| self.cxx_actor().GetWorld(e))?;
Ok(unsafe { World::from_cxx(world).unwrap_unchecked() })
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_location](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_location)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_location](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_location)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_location](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_location)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn location(&self) -> crate::Result<Location> {
with_ffi_error("location", |e| {
Location::from_ffi(self.cxx_actor().GetLocation(e))
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_transform](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_transform)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_transform](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_transform)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_transform](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_transform)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn transform(&self) -> crate::Result<Transform> {
with_ffi_error("transform", |e| {
Transform::from_ffi(self.cxx_actor().GetTransform(e))
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn velocity(&self) -> crate::Result<Vector3D> {
with_ffi_error("velocity", |e| unsafe {
let cpp_vec = self.cxx_actor().GetVelocity(e);
Vector3D::from_ffi(std::mem::transmute::<
carla_sys::carla::geom::Vector3D,
FfiVector3D,
>(cpp_vec))
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_acceleration](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_acceleration)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_acceleration](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_acceleration)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_acceleration](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_acceleration)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn acceleration(&self) -> crate::Result<Vector3D> {
with_ffi_error("acceleration", |e| unsafe {
let cpp_vec = self.cxx_actor().GetAcceleration(e);
Vector3D::from_ffi(std::mem::transmute::<
carla_sys::carla::geom::Vector3D,
FfiVector3D,
>(cpp_vec))
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.get_angular_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.get_angular_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.get_angular_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.get_angular_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.get_angular_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.get_angular_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn angular_velocity(&self) -> crate::Result<Vector3D> {
with_ffi_error("angular_velocity", |e| unsafe {
let cpp_vec = self.cxx_actor().GetAngularVelocity(e);
Vector3D::from_ffi(std::mem::transmute::<
carla_sys::carla::geom::Vector3D,
FfiVector3D,
>(cpp_vec))
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_location](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_location)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_location](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_location)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_location](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_location)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_location(&self, location: &Location) -> crate::Result<()> {
with_ffi_error("set_location", |e| {
self.cxx_actor().SetLocation(location.as_ffi(), e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_transform](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_transform)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_transform](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_transform)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_transform](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_transform)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_transform(&self, transform: &Transform) -> crate::Result<()> {
with_ffi_error("set_transform", |e| {
self.cxx_actor().SetTransform(transform.as_ffi(), e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_target_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_target_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_target_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_target_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_target_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_target_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_target_velocity(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("set_target_velocity", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().SetTargetVelocity(cpp_vec, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_target_angular_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_target_angular_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_target_angular_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_target_angular_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_target_angular_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_target_angular_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_target_angular_velocity(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("set_target_angular_velocity", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().SetTargetAngularVelocity(cpp_vec, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.enable_constant_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.enable_constant_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.enable_constant_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.enable_constant_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.enable_constant_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.enable_constant_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn enable_constant_velocity(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("enable_constant_velocity", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().EnableConstantVelocity(cpp_vec, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.disable_constant_velocity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.disable_constant_velocity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.disable_constant_velocity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.disable_constant_velocity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.disable_constant_velocity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.disable_constant_velocity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn disable_constant_velocity(&self) -> crate::Result<()> {
with_ffi_error("disable_constant_velocity", |e| {
self.cxx_actor().DisableConstantVelocity(e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.add_impulse](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.add_impulse)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.add_impulse](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.add_impulse)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.add_impulse](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.add_impulse)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn add_impulse(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_impulse", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddImpulse1(cpp_vec, e)
})
}
fn add_impulse_at(&self, vector: &Vector3D, location: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_impulse_at", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
let cpp_loc = &*(location.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddImpulse2(cpp_vec, cpp_loc, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.add_force](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.add_force)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.add_force](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.add_force)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.add_force](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.add_force)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn add_force(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_force", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddForce1(cpp_vec, e)
})
}
fn add_force_at(&self, vector: &Vector3D, location: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_force_at", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
let cpp_loc = &*(location.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddForce2(cpp_vec, cpp_loc, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.add_angular_impulse](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.add_angular_impulse)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.add_angular_impulse](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.add_angular_impulse)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.add_angular_impulse](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.add_angular_impulse)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn add_angular_impulse(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_angular_impulse", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddAngularImpulse(cpp_vec, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.add_torque](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.add_torque)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.add_torque](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.add_torque)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.add_torque](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.add_torque)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn add_torque(&self, vector: &Vector3D) -> crate::Result<()> {
with_ffi_error("add_torque", |e| unsafe {
let cpp_vec = &*(vector.as_ffi() as *const FfiVector3D
as *const carla_sys::carla::geom::Vector3D);
self.cxx_actor().AddTorque(cpp_vec, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_simulate_physics](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_simulate_physics)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_simulate_physics](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_simulate_physics)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_simulate_physics](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_simulate_physics)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_simulate_physics(&self, enabled: bool) -> crate::Result<()> {
with_ffi_error("set_simulate_physics", |e| {
self.cxx_actor().SetSimulatePhysics(enabled, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.set_enable_gravity](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.set_enable_gravity)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.set_enable_gravity](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.set_enable_gravity)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.set_enable_gravity](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.set_enable_gravity)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn set_enable_gravity(&self, enabled: bool) -> crate::Result<()> {
with_ffi_error("set_enable_gravity", |e| {
self.cxx_actor().SetEnableGravity(enabled, e)
})
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.is_alive](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.is_alive)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.is_alive](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.is_alive)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.is_alive](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.is_alive)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn is_alive(&self) -> crate::Result<bool> {
with_ffi_error("is_alive", |e| self.cxx_actor().IsAlive(e))
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.is_dormant](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.is_dormant)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.is_dormant](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.is_dormant)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.is_dormant](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.is_dormant)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn is_dormant(&self) -> crate::Result<bool> {
with_ffi_error("is_dormant", |e| self.cxx_actor().IsDormant(e))
}
#[cfg_attr(
carla_version_0916,
doc = " See [carla.Actor.is_active](https://carla.readthedocs.io/en/0.9.16/python_api/#carla.Actor.is_active)"
)]
#[cfg_attr(
carla_version_0915,
doc = " See [carla.Actor.is_active](https://carla.readthedocs.io/en/0.9.15/python_api/#carla.Actor.is_active)"
)]
#[cfg_attr(
carla_version_0914,
doc = " See [carla.Actor.is_active](https://carla.readthedocs.io/en/0.9.14/python_api/#carla.Actor.is_active)"
)]
#[cfg_attr(
any(carla_version_0916, carla_version_0915, carla_version_0914),
doc = " in the Python API."
)]
fn is_active(&self) -> crate::Result<bool> {
with_ffi_error("is_active", |e| self.cxx_actor().IsActive(e))
}
fn actor_state(&self) -> crate::Result<ActorState> {
with_ffi_error("actor_state", |e| {
let raw = self.cxx_actor().GetActorState(e);
ActorState::from_u8(raw).unwrap_or(ActorState::Invalid)
})
}
#[cfg(carla_0100)]
fn actor_name(&self) -> crate::Result<String> {
with_ffi_error("actor_name", |e| {
self.cxx_actor().GetActorName(e).to_string()
})
}
#[cfg(carla_0100)]
fn actor_class_name(&self) -> crate::Result<String> {
with_ffi_error("actor_class_name", |e| {
self.cxx_actor().GetActorClassName(e).to_string()
})
}
#[cfg(carla_0100)]
fn apply_color_texture(
&self,
parameter: MaterialParameter,
texture: &TextureColor,
) -> crate::Result<()> {
with_ffi_error("apply_color_texture", |e| {
self.cxx_actor()
.ApplyColorTexture(parameter.as_u8(), &texture.inner, e)
})
}
#[cfg(carla_0100)]
fn apply_float_color_texture(
&self,
parameter: MaterialParameter,
texture: &TextureFloatColor,
) -> crate::Result<()> {
with_ffi_error("apply_float_color_texture", |e| {
self.cxx_actor()
.ApplyFloatColorTexture(parameter.as_u8(), &texture.inner, e)
})
}
fn bounding_box(&self) -> BoundingBox {
use autocxx::prelude::*;
unsafe {
let bbox_box = self.cxx_actor().GetBoundingBox().within_box();
let cpp_bbox: &carla_sys::carla::geom::BoundingBox = bbox_box.as_ref().get_ref();
let ffi_bbox: &carla_sys::carla_rust::geom::FfiBoundingBox =
std::mem::transmute(cpp_bbox);
BoundingBox::from_native(ffi_bbox)
}
}
fn destroy(&self) -> crate::Result<bool> {
with_ffi_error("destroy", |e| self.cxx_actor().Destroy(e))
}
#[cfg(carla_0915)]
fn set_collisions(&self, enabled: bool) -> crate::Result<()> {
with_ffi_error("set_collisions", |e| {
self.cxx_actor().SetCollisions(enabled, e)
})
}
#[cfg(carla_0915)]
fn set_actor_dead(&self) -> crate::Result<()> {
with_ffi_error("set_actor_dead", |e| self.cxx_actor().SetActorDead(e))
}
}