Source code for synergine_xyz.SynergyObject
from synergine.synergy.object.SynergyObject import SynergyObject as BaseSynergyObject
from synergine_xyz.cst import POSITION, POSITIONS, PREVIOUS_DIRECTION, BLOCKED_SINCE
[docs]class SynergyObject(BaseSynergyObject):
"""
This SynergyObject is designed to support a tri-dimensional environment.
"""
def __init__(self, collection, context):
super().__init__(collection, context)
self._position = None
self._start_position = None
self._previous_direction = None
[docs] def set_position(self, point):
"""
Update the position. Metas are updated to.
:param point: position of the object, with (z, x, y) signature
:type point: tuple
:return:
"""
# If a position already exist, we can remove it from metas
if self._position:
self._context.metas.list.remove(POSITIONS, self._position, self.get_id())
else:
self._start_position = point
# If position is different from previous, object has moved.
if point != self._position:
self._context.metas.value.set(BLOCKED_SINCE, self.get_id(), 0)
self._position = point
self._context.metas.value.set(POSITION, self.get_id(), point)
self._context.metas.list.add(POSITIONS, point, self.get_id())
[docs] def get_position(self):
"""
Return the actual position.
:return: position with (z, x, y) signature
:rtype: tuple
"""
return self._position
[docs] def set_previous_direction(self, previous_direction):
"""
Update the previous position of object.
TODO: Directions pythons files must be move in xyz module.
:param previous_direction: The previous direction
:return:
"""
self._previous_direction = previous_direction
self._context.metas.value.set(PREVIOUS_DIRECTION, self.get_id(), previous_direction)
[docs] def get_previous_direction(self):
"""
Return the previous direction of object
:return: The previous direction
:rtype: int
"""
return self._previous_direction