--- /dev/null
+""" Actor that takes a surface. """
+
+from pygame.transform import rotate
+from pgzero.actor import POS_TOPLEFT, ANCHOR_CENTER
+
+from .surf import SurfActor
+
+class OrientatedSurfActor(SurfActor):
+ def __init__(self, surf, pos=POS_TOPLEFT, anchor=ANCHOR_CENTER, angle=0, **kwargs):
+ self._handle_unexpected_kwargs(kwargs)
+
+ self._angle = angle
+ self._base_surf = surf
+ super().__init__(surf, pos, anchor)
+ self._init_position(pos, anchor, **kwargs)
+
+ @property
+ def angle(self):
+ return self._angle
+
+ @angle.setter
+ def angle(self, angle):
+ self._angle = angle
+ self._surf = self._orig_surf = rotate(self._base_surf, angle)
+
+ @property
+ def surf(self):
+ """ The original surface displaying the actor. """
+ return self._orig_surf
+
+ @surf.setter
+ def surf(self, surf):
+ self._base_surf = surf
+ self._orig_surf = self._surf = rotate(surf, self._angle)
+ self._update_pos()