# Auto-generated by nodebpy.assets.generate_asset_api — do not edit manually.
from typing import TYPE_CHECKING
from ...builder import (
    AssetShaderGroup,
    BundledLibrary,
    FloatSocket,
    SocketAccessor,
    VectorSocket,
)
from ...types import (
    InputFloat,
    InputVector,
)


class CombineCylindrical(AssetShaderGroup):
    """
    Combine Cylindrical

    Parameters
    ----------
    r : InputFloat
        Radius - Length of the vector
    phi : InputFloat
        Azimuth - Angle around the up axis
    z : InputFloat
        Distance from the ground plane

    Inputs
    ------
    i.r : FloatSocket
        Radius - Length of the vector
    i.phi : FloatSocket
        Azimuth - Angle around the up axis
    i.z : FloatSocket
        Distance from the ground plane

    Outputs
    -------
    o.vector : VectorSocket
        Vector
    """

    _name = "Combine Cylindrical"
    _asset_name = "Combine Cylindrical"
    _library = BundledLibrary("shading_nodes_essentials.blend")

    class _Inputs(SocketAccessor):
        r: FloatSocket
        """Radius - Length of the vector"""
        phi: FloatSocket
        """Azimuth - Angle around the up axis"""
        z: FloatSocket
        """Distance from the ground plane"""

    class _Outputs(SocketAccessor):
        vector: VectorSocket
        """Vector"""

    if TYPE_CHECKING:

        @property
        def i(self) -> _Inputs: ...
        @property
        def o(self) -> _Outputs: ...

    def __init__(
        self,
        r: InputFloat = 0.0,
        phi: InputFloat = 0.0,
        z: InputFloat = 0.0,
    ):
        super().__init__(**{"Socket_1": r, "Socket_2": phi, "Socket_3": z})


class CombineSpherical(AssetShaderGroup):
    """
    Combine Spherical

    Parameters
    ----------
    r : InputFloat
        Radius - Length of the vector
    phi : InputFloat
        Azimuth - Angle around the up axis
    theta : InputFloat
        Zenith - Angle from the ground plane

    Inputs
    ------
    i.r : FloatSocket
        Radius - Length of the vector
    i.phi : FloatSocket
        Azimuth - Angle around the up axis
    i.theta : FloatSocket
        Zenith - Angle from the ground plane

    Outputs
    -------
    o.vector : VectorSocket
        Vector
    """

    _name = "Combine Spherical"
    _asset_name = "Combine Spherical"
    _library = BundledLibrary("shading_nodes_essentials.blend")

    class _Inputs(SocketAccessor):
        r: FloatSocket
        """Radius - Length of the vector"""
        phi: FloatSocket
        """Azimuth - Angle around the up axis"""
        theta: FloatSocket
        """Zenith - Angle from the ground plane"""

    class _Outputs(SocketAccessor):
        vector: VectorSocket
        """Vector"""

    if TYPE_CHECKING:

        @property
        def i(self) -> _Inputs: ...
        @property
        def o(self) -> _Outputs: ...

    def __init__(
        self,
        r: InputFloat = 0.0,
        phi: InputFloat = 0.0,
        theta: InputFloat = 0.0,
    ):
        super().__init__(**{"Socket_1": r, "Socket_2": phi, "Socket_3": theta})


class SeparateCylindrical(AssetShaderGroup):
    """
    Separate Cylindrical

    Parameters
    ----------
    vector : InputVector
        Vector

    Inputs
    ------
    i.vector : VectorSocket
        Vector

    Outputs
    -------
    o.r : FloatSocket
        Radius - Length of the vector
    o.phi : FloatSocket
        Azimuth - Angle around the up axis
    o.z : FloatSocket
        Distance from the ground plane
    """

    _name = "Separate Cylindrical"
    _asset_name = "Separate Cylindrical"
    _library = BundledLibrary("shading_nodes_essentials.blend")

    class _Inputs(SocketAccessor):
        vector: VectorSocket
        """Vector"""

    class _Outputs(SocketAccessor):
        r: FloatSocket
        """Radius - Length of the vector"""
        phi: FloatSocket
        """Azimuth - Angle around the up axis"""
        z: FloatSocket
        """Distance from the ground plane"""

    if TYPE_CHECKING:

        @property
        def i(self) -> _Inputs: ...
        @property
        def o(self) -> _Outputs: ...

    def __init__(
        self,
        vector: InputVector = None,
    ):
        super().__init__(**{"Socket_0": vector})


class SeparateSpherical(AssetShaderGroup):
    """
    Separate Spherical

    Parameters
    ----------
    vector : InputVector
        Vector

    Inputs
    ------
    i.vector : VectorSocket
        Vector

    Outputs
    -------
    o.r : FloatSocket
        Radius - Length of the vector
    o.phi : FloatSocket
        Azimuth - Angle around the up axis
    o.theta : FloatSocket
        Zenith - Angle from the ground plane
    """

    _name = "Separate Spherical"
    _asset_name = "Separate Spherical"
    _library = BundledLibrary("shading_nodes_essentials.blend")

    class _Inputs(SocketAccessor):
        vector: VectorSocket
        """Vector"""

    class _Outputs(SocketAccessor):
        r: FloatSocket
        """Radius - Length of the vector"""
        phi: FloatSocket
        """Azimuth - Angle around the up axis"""
        theta: FloatSocket
        """Zenith - Angle from the ground plane"""

    if TYPE_CHECKING:

        @property
        def i(self) -> _Inputs: ...
        @property
        def o(self) -> _Outputs: ...

    def __init__(
        self,
        vector: InputVector = None,
    ):
        super().__init__(**{"Socket_0": vector})


__all__ = (
    "CombineCylindrical",
    "CombineSpherical",
    "SeparateCylindrical",
    "SeparateSpherical",
)
