public void Execute() { Camera camera = _camera.GetSingleEntity().camera.camera; foreach (Entity e in _group.GetEntities()) { PositionComponent positionComponent = e.position; Vector2 position = e.position.pos; SnapPositionComponent snapPosition = e.snapPosition; if (snapPosition.shouldSnapToCameraY) { snapPosition.y = camera.transform.position.y - camera.orthographicSize; snapPosition.x = camera.transform.position.x - camera.orthographicSize * camera.aspect; } if (position.x < snapPosition.x) { positionComponent.pos.x = snapPosition.x; } else if (position.x > (snapPosition.x + snapPosition.width)) { positionComponent.pos.x = snapPosition.x + snapPosition.width; } if (position.y > (snapPosition.height + snapPosition.y)) { positionComponent.pos.y = snapPosition.height + snapPosition.y; } else if (position.y < snapPosition.y) { positionComponent.pos.y = snapPosition.y; } } }
void snapCamera(Entity e, Vector2 position) { SnapPositionComponent snapPosition = e.snapPosition; if (temp.x < snapPosition.x) { temp.x = snapPosition.x; } else if (temp.x > (snapPosition.x + snapPosition.width)) { temp.x = snapPosition.x + snapPosition.width; } if (position.y > (snapPosition.height + snapPosition.y)) { position.y = snapPosition.height + snapPosition.y; } else if (position.y < snapPosition.y) { position.y = snapPosition.y; } }