def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): if self.draggingInput is not None and self.draggingInput.gameObject is not None: worldCoords = self.draggingInputCamera.windowToWorldCoords(Vector2(x, y)) scaledDelta = Vector2(dx, dy) / self.draggingInputCamera.zoom for script in self.draggingInput.gameObject.scripts: script.onMouseDrag(*worldCoords, *scaledDelta, buttons, modifiers)
def __init__(self, gameObject): super().__init__() self.enabled = True self.managers = [] self.gameObject = gameObject self._localPosition = Vector2(0, 0) self._position = Vector2(0, 0) # self._size = Vector2(0, 0) def recalcPosition(sender, oldLocalPosition, newLocalPosition): self.position = self.gameObject.transform.position + newLocalPosition def recalcLocalPosition(sender, oldPosition, newPosition): self.localPosition = newPosition - self.gameObject.transform.position self.localPosition.hasChanged += recalcPosition self.position.hasChanged += recalcLocalPosition # TODO: HACKY SOLUTION def recalcPositionFromTransform(sender, oldTransformPos, newTransformPos): self.position = newTransformPos + self.localPosition from gameengine.components.Transform import Transform if not isinstance(self, Transform): self._position = Vector2(self.gameObject.transform.position) self.gameObject.transform.position.hasChanged += recalcPositionFromTransform if not isinstance(self, Transform): self._size = Vector2(self.gameObject.transform.size) self.gameObject.transform.size.hasChanged += self.getSizeFromTransform
def onUpdate(self): self.gameObject.aggressive = True if self.movingUp: if self.active: self.gameObject.getComponent(Physics).velocity = Vector2( 0, 50) else: self.gameObject.aggressive = False if self.gameObject.transform.position.y >= self.startPositionY + 24: self.gameObject.getComponent(Physics).velocity = Vector2( 0, 0) elif not self.movingUp: self.gameObject.getComponent(Physics).velocity = Vector2( 0, -50) if self.gameObject.transform.position.y <= self.startPositionY: self.gameObject.getComponent(Physics).velocity = Vector2( 0, 0) self.gameObject.aggressive = False if not self.active: Timer.remove(self.hideTimer)
def onUpdate(self): if self.dead: collider = self.getComponent(Collider) if collider is not None: collider.destroy() self.physics.velocity = Vector2(0, 0) self.physics.addForce(Vector2(0, 0.4))
def onMouseDrag(self, pos, rel, buttons): def moveCamera(abs, rel): self.gameObject.transform.position -= rel # from gameengine.core.Interpolation import Interpolation Interpolation(Vector2(), Vector2(rel), 100, moveCamera, EaseOut).start()
def __init__(self, player): self.player = player self.player.spriteSet = Resources.playerSprites["fire"] collider = self.player.getComponent(Collider) collider.size = Resources.playerBigSize - Vector2(6, 3) collider.offset = Vector2(3, -8)
def __init__(self, player): self.player = player self.player.spriteSet = Resources.playerSprites[ self.player.character]["small"] collider = self.player.getComponent(Collider) collider.size = Resources.playerSmallSize - Vector2(6, 3) collider.offset = Vector2(3, 0)
def __init__(self): super().__init__() self.transform.size = Vector2(100, 100) # self.transform.pivot.set(0.5, 1) self.transform.depth = 1 self.addComponent(CustomDraw).size = Vector2(50, 50) # self.addComponent(CustomDraw).localPosition = Vector2(25, 50) self.addScript(self)
def __init__(self): super().__init__() self.addComponent(CustomDraw).size = Vector2(50, 50) self.addScript(self) self.addScript(Controls) s = self.addScript(Green) self.addScript(Extraction).order = -1 self.addScript(OneSideCollision) self.transform.size = Vector2(50, 50)
def __init__(self, gameObject): super().__init__(gameObject) self.velocity = Vector2() self.acceleration = Vector2() self.drag = 1.0 self.mass = 1.0 self.customGravity = None PhysicsManager().addObject(self)
def dispatchEvent(self, event): if event.type == pygame.MOUSEMOTION: self.mouseMotion(Vector2(event.pos), Vector2(event.rel), event.buttons) elif event.type == pygame.MOUSEBUTTONDOWN: self.mouseDown(Vector2(event.pos), event.button) elif event.type == pygame.MOUSEBUTTONUP: self.mouseUp(Vector2(event.pos), event.button) elif event.type == pygame.KEYDOWN: self.keyDown(event.key) elif event.type == pygame.KEYUP: self.keyUp(event.key)
def onMouseDrag(self, pos, rel, buttons): def move(abs, rel): self.gameObject.transform.position += rel def f(x): return math.sin(x * math.pi / 2) * -1 + 1 Interpolation(Vector2(), Vector2(rel), 300, callback=move, method=EaseInOut).start()
def on_mouse_motion(self, x, y, dx, dy): camera = self._getCameraAt(x, y) if camera is not None: worldCoords = camera.windowToWorldCoords(Vector2(x, y)) scaledDelta = Vector2(dx, dy) / camera.zoom for input in self.collection: if input.rect.collidePoint(*worldCoords): for script in input.gameObject.scripts: script.onMouseMotion(*worldCoords, *scaledDelta) break
def __init__(self): super().__init__() from gameengine.managers.PhysicsManager import PhysicsManager PhysicsManager().add(self) self.velocity = Vector2() self.acceleration = Vector2() self.drag = Vector2(1, 1) self.mass = 1.0 self.customGravity: Vector2 = None
def __init__(self, left=.0, top=.0, width=.0, height=.0): self._topLeft = Vector2(left, top) self._size = Vector2(width, height) self.hasChanged = EventHandler(self) def topLeftChanged(sender, old, new): self.hasChanged(Rect(*new, *self._size), self) def sizeChanged(sender, old, new): self.hasChanged(Rect(*self._topLeft, *new), self) self._topLeft.hasChanged += topLeftChanged self._size.hasChanged += sizeChanged
def __init__(self, gameObject): super().__init__(gameObject) self._size = Vector2(0, 0) self._depth = 0 self._parent: Transform = None self.children = [] self.pivot = Pivot(self.gameObject) self.anchor = Anchor(self.gameObject) self.sizeChanged = EventHandler(self) self._localPosition = Vector2(0, 0) self._position = Vector2(0, 0) def recalcPosition(sender, oldLocalPosition, newLocalPosition): if self.parent is None: self.position = Vector2(newLocalPosition) else: # self.position = self.parent.position self.position = self.parent.position + newLocalPosition \ # -Vector2(1, 1) # - self.parent.size * self.anchor.ratio \ # + self.size * self.pivot.ratio def recalcLocalPosition(sender, oldPosition, newPosition): if self.parent is None: self.localPosition = Vector2(newPosition) else: self.localPosition = newPosition - self.parent.position \ # +Vector2(1, 1) # + self.parent.size * self.anchor.ratio \ # - self.size * self.pivot.ratio def recalcChildrenPosition(sender, oldPosition, newPosition): if self.children: for child in self.children: child.position = newPosition + child.localPosition # print(child.position) self.localPosition.hasChanged += recalcPosition self.position.hasChanged += recalcLocalPosition self.position.hasChanged += recalcChildrenPosition
def __init__(self): super().__init__() self.transform.size = Vector2(50, 50) self.addComponent(CustomDraw) self.addComponent(Input) self.addScript(self)
def __init__(self): super().__init__() self.transform.size = Vector2(100, 10) self.addComponent(CustomDraw) self.addComponent(Collider) self.addScript(self)
def recalcPosition(sender, oldLocalPosition, newLocalPosition): if self.parent is None: self.position = Vector2(newLocalPosition) else: # self.position = self.parent.position self.position = self.parent.position + newLocalPosition \
def onCollisionEnter(self, other, side): if ("Block" in other.tags or "Enemy" in other.tags) and side == BOTTOM_SIDE: self.gameObject.physics.velocity.y = 0 self.gameObject.physics.addForce(Vector2(0, -12)) return True return False
def __init__(self, slider): super().__init__() self.transform.size = Vector2(20, 20) self.addComponent(CustomDraw) self.addComponent(Input) self.addScript(self) self.slider = slider
def move(self, rel): self.transform.position += Vector2(rel, 0) from gameengine.util.util import clamp self.transform.localPosition.x = clamp( self.transform.localPosition.x, 0, self.slider.transform.size.x) self.slider.value = self.slider.distanceToValue( self.transform.localPosition.x)
def onCollisionEnter(self, other, side): if "Block" in other.tags and side == BOTTOM_SIDE: self.gameObject.physics.velocity.y = 0 self.gameObject.physics.addForce(Vector2(0, -12)) return True return super().onCollisionEnter(other, side)
def init(self, script, *args, **kwargs): self.tags.extend(["Platform"]) sr = self.addComponent(SpriteRenderer) sr.setImage(Resources.platform) sr.order = 1 from gameengine.components.Physics import Physics physics = self.addComponent(Physics) physics.customGravity = Vector2() physics.mass = 999 col = self.addComponent(Collider) col.size = sr.size col.offset = Vector2(8, 8) self.addScript(script, *args, **kwargs)
def onLoad(self): self.mainCamera.addScript(MoveCamera) s2 = Square2() s2.transform.position = Vector2(0, 0) self.p = Square((200, 150), (255, 0, 0)) self.p.transform.pivot.set(0.5, 0.5)
def onUpdate(self): self.gameObject.transform.position += Vector2(0.1, 0.2) self.i += 1 if self.i % 60 == 0: self.gameObject.label.text = "Alex {}".format(self.i) self.gameObject.label.italic = not self.gameObject.label.italic
def __init__(self): super().__init__() self.transform.size = Vector2(50, 50) self.addComponent(CustomDraw).size = Vector2(50, 50) self.addScript(self) def printPositionChange(sender, old, new): print("{}'s transform moved from {} to {}".format(self, old, new)) def printSizeChange(sender, old, new): print("{}'s transform sized from {} to {}".format(self, old, new)) self.transform.position.hasChanged += printPositionChange self.transform.size.hasChanged += printSizeChange
def __init__(self, size, color): super().__init__() self.transform.size = Vector2(size) self.color = color self.addComponent(CustomDraw) self.addScript(Resize) self.addScript(self)
def __init__(self, width, min, max, startValue=None, wholeNumbers=False, decimals=1): super().__init__() self.addComponent(CustomDraw) self.addComponent(Input) self.addScript(self) self.transform.pivot.set(0, 0.5) self.transform.size = Vector2(width, 8) self.min = min self.max = max self._value = 0 self.wholeNumbers = wholeNumbers self.decimals = decimals self.handle = self.Handle(self) self.handle.transform.parent = self.transform self.handle.transform.pivot.set(0.5, 0.5) self.handle.transform.anchor.set(0, 0.5, overridePivot=False, overridePosition=True) self.label = LabelListener(str(self._value)) self.label.transform.parent = self.transform self.label.transform.anchor.set(1, 0.5, False, False) self.label.transform.pivot.set(0, 0.5) self.label.transform.localPosition = Vector2(20, 0) self.label.fontSize = 24 self.valueChanged = EventHandler(self) self.valueChanged += self.handle.notify self.valueChanged += self.label.notify self.value = startValue if (startValue is not None) else min
def __init__(self, enemy): super().__init__() self.enemy = enemy self.enemy.spriteRenderer.interval = -1 destroy(self.enemy.collider) self.enemy.physics.velocity.y = 0 self.enemy.physics.addAcceleration(Vector2(0, -7))