mirror of
https://github.com/hypervortex/VH-Bombsquad-Modded-Server-Files
synced 2025-10-16 12:02:51 +00:00
72 lines
2 KiB
Python
72 lines
2 KiB
Python
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""Collision related functionality."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import _ba
|
|
from ba._error import NodeNotFoundError
|
|
|
|
if TYPE_CHECKING:
|
|
import ba
|
|
|
|
|
|
class Collision:
|
|
"""A class providing info about occurring collisions.
|
|
|
|
Category: **Gameplay Classes**
|
|
"""
|
|
|
|
@property
|
|
def position(self) -> ba.Vec3:
|
|
"""The position of the current collision."""
|
|
return _ba.Vec3(_ba.get_collision_info('position'))
|
|
|
|
@property
|
|
def sourcenode(self) -> ba.Node:
|
|
"""The node containing the material triggering the current callback.
|
|
|
|
Throws a ba.NodeNotFoundError if the node does not exist, though
|
|
the node should always exist (at least at the start of the collision
|
|
callback).
|
|
"""
|
|
node = _ba.get_collision_info('sourcenode')
|
|
assert isinstance(node, (_ba.Node, type(None)))
|
|
if not node:
|
|
raise NodeNotFoundError()
|
|
return node
|
|
|
|
@property
|
|
def opposingnode(self) -> ba.Node:
|
|
"""The node the current callback material node is hitting.
|
|
|
|
Throws a ba.NodeNotFoundError if the node does not exist.
|
|
This can be expected in some cases such as in 'disconnect'
|
|
callbacks triggered by deleting a currently-colliding node.
|
|
"""
|
|
node = _ba.get_collision_info('opposingnode')
|
|
assert isinstance(node, (_ba.Node, type(None)))
|
|
if not node:
|
|
raise NodeNotFoundError()
|
|
return node
|
|
|
|
@property
|
|
def opposingbody(self) -> int:
|
|
"""The body index on the opposing node in the current collision."""
|
|
body = _ba.get_collision_info('opposingbody')
|
|
assert isinstance(body, int)
|
|
return body
|
|
|
|
|
|
# Simply recycle one instance...
|
|
_collision = Collision()
|
|
|
|
|
|
def getcollision() -> Collision:
|
|
"""Return the in-progress collision.
|
|
|
|
Category: **Gameplay Functions**
|
|
"""
|
|
return _collision
|