Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ogurecapps.actors;
- import com.badlogic.gdx.graphics.Color;
- import com.badlogic.gdx.graphics.g2d.Batch;
- import com.badlogic.gdx.graphics.g2d.TextureRegion;
- import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
- import com.badlogic.gdx.math.Polygon;
- import com.badlogic.gdx.math.Rectangle;
- import com.badlogic.gdx.scenes.scene2d.Actor;
- import com.badlogic.gdx.scenes.scene2d.utils.ScissorStack;
- import com.badlogic.gdx.utils.viewport.Viewport;
- /**
- * Created by coder1cv8 on 07.02.2017.
- */
- public class SimpleActor extends Actor {
- public final TextureRegion region;
- private Rectangle clipBounds;
- private boolean drawHitbox;
- private final ShapeRenderer renderer;
- public SimpleActor(TextureRegion region) {
- this.region = region;
- setSize(region.getRegionWidth(), region.getRegionHeight());
- setBounds(0, 0, getWidth(), getHeight());
- renderer = new ShapeRenderer();
- }
- public void setDrawHitbox(boolean drawHitbox) {
- this.drawHitbox = drawHitbox;
- }
- public void enableClipping(Rectangle clipBounds) {
- this.clipBounds = clipBounds;
- }
- @Override
- public void draw(Batch batch, float parentAlpha) {
- Color color = getColor();
- batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
- if (clipBounds != null) {
- Rectangle scissors = new Rectangle();
- final Viewport viewport = getStage().getViewport();
- ScissorStack.calculateScissors(getStage().getCamera(), viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight(), batch.getTransformMatrix(), clipBounds, scissors);
- ScissorStack.pushScissors(scissors);
- }
- batch.draw(region, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
- if (clipBounds != null) {
- batch.flush();
- ScissorStack.popScissors();
- }
- if (drawHitbox) {
- batch.end();
- renderer.setProjectionMatrix(batch.getProjectionMatrix());
- renderer.setTransformMatrix(batch.getTransformMatrix());
- renderer.begin(ShapeRenderer.ShapeType.Line);
- renderer.setColor(1f, 1f, 1f, 1f);
- renderer.polygon(getHitbox().getTransformedVertices());
- renderer.end();
- batch.begin();
- }
- }
- public Polygon getHitbox() {
- Polygon polygon = new Polygon(new float[]{0, 0, getWidth(), 0, getWidth(), getHeight(), 0, getHeight()});
- polygon.setPosition(getX(), getY());
- polygon.setOrigin(getOriginX(), getOriginY());
- polygon.setScale(getScaleX(), getScaleY());
- polygon.setRotation(getRotation());
- return polygon;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement