Source code for irsim.config.env_param
"""
Objects: A list of all objects in the environment
Logger: A logger object to log messages
Platform: The operating system platform
"""
import platform
from dataclasses import dataclass, field
from typing import Any, Optional
from irsim.world.object_base import ObjectBase
[docs]
@dataclass
class EnvParam:
objects: list[ObjectBase] = field(default_factory=list)
logger: Optional[Any] = None
GeometryTree: Optional[Any] = None
platform_name: str = field(default_factory=platform.system)
# Multi-env storage (default index 0)
_instances: list[EnvParam] = [EnvParam()]
_current = _instances[0]
[docs]
def bind(instance: EnvParam) -> None:
"""Bind instance to default index 0 and update current alias."""
global _current
if _instances:
_instances[0] = instance
else:
_instances.append(instance)
_current = instance
def __getattr__(name: str):
return getattr(_current, name)
def __setattr__(name: str, value):
setattr(_current, name, value)
def __getitem__(index: int) -> EnvParam:
return _instances[index]
def __setitem__(index: int, instance: EnvParam) -> None:
"""Assign an EnvParam at a specific index. Extends list if needed."""
global _current
if index < 0:
raise IndexError("env_param index must be non-negative")
if index >= len(_instances):
_instances.extend(EnvParam() for _ in range(index - len(_instances) + 1))
_instances[index] = instance
if index == 0:
_current = instance