def update(self, render=None): if not render: render = Updatable.getRender(self) if render and render is not self: if self._changeWindow: self.relativeSizeOnView = self.relativeSizeOnView self.relativeSizeOnView = self.relativeSizeOnView if self._isStaticToView: self.setPosStatic(self._posStatic, False) if self.isDrawing and render.isInView(self.getRect(True)): if type(self.clipRect) is sf.Rectangle: if self.clipChild: render.clipping(self.draw, self.clipRect, self.getPos(False), super().update) else: render.clipping(self.draw, self.clipRect, self.getPos(False)) super().update(render) else: self.draw(render) super().update(render) else: super().update(render) else: super().update(render)
def setAbsolutePosOnView(self, pos, withOrigin=True): render = Updatable.getRender(self) origin = sf.Vector2(0, 0) render = self.getRender() if render: self.setPos(pos + render.getViewPosition(), withOrigin) else: self.setPos(pos, withOrigin)
def getSizeOnScreen(self, withClipping=False): scale = sf.Vector2(1,1) render = Updatable.getRender(self) if render is not self: if render.view.size.x != 0 and render.view.size.y != 0: scale = render.sizeOnScreen / render.view.size * render.viewport.size return self.getSize(withClipping) * scale
def howFocus(self): return isinstance(self._event, EventManager) and Updatable.getRender(self).isInView(self.rect) and \ self._event.isMouseInRect(self.getRectOnScreen(True))
def _setRelativeSizeOnView(self, scale, resetOrigin = True): render = Updatable.getRender(self) if render and scale: self._relativePositionOnView = None self.setSize(render.getViewSizeWithViewportWithZoom() * scale, resetOrigin) self._relativePositionOnView = scale
def _setRelativePositionOnView(self, scale): render = Updatable.getRender(self) if render and scale: self._relativePositionOnView = None self.pos = render.getViewSizeWithViewportWithZoom() * scale self._relativePositionOnView = scale
def getSizeOnView(self, withClipping=False): render = Updatable.getRender(self) if render: return self.getSize(withClipping) * render.size / render.view.size * render.viewport.size else: return self.getSize(withClipping)
def getPosOnScreen(self, withOrigin=True, withClipping=False): render = Updatable.getRender(self) if render is not None: return render.convertTargetPointToScreenCoord(self.getPos(withOrigin, withClipping)) else: return self.getPos(withOrigin, withClipping)
def setPosOnScreen(self, position, withOrigin=True): render = Updatable.getRender(self) if not self._isStaticToView and render: self.setPos(render.convertScreenCoordToTargetPoint(position), withOrigin) elif not render and not self._isStaticToView: self.setPos(position, withOrigin)