-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDesktopExample.java
101 lines (81 loc) · 3.16 KB
/
DesktopExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;
import com.badlogic.gdx.graphics.glutils.FrameBuffer;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.math.collision.Ray;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.harium.gdx.scenes.scene3d.Stage3d;
public class DesktopExample extends Game {
public Stage3d stage3d;
public PerspectiveCamera cam;
public ModelBatch modelBatch;
public CameraInputController camController;
public static void main(String[] args) {
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
config.setWindowedMode(940, 640);
config.setTitle("Desktop Example");
config.useVsync(false);
new Lwjgl3Application(new DesktopExample(), config);
}
@Override
public void create() {
modelBatch = new ModelBatch();
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(1f, 1f, 1f);
cam.lookAt(0,0,0);
cam.near = 0.01f;
cam.far = 300f;
cam.update();
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
FrameBuffer fbo = new FrameBuffer(Pixmap.Format.RGB888, 512, 512, false);
stage3d = new Stage3d(fbo, new Vector3(), 1, 1);
stage3d.background.set(Color.WHITE);
Skin skin = new Skin(Gdx.files.internal("flat/skin.json"));
Stage stage = stage3d.stage;
float buttonWidth = 200;
float buttonHeight = 80;
TextButton button = new TextButton("Button", skin);
button.setPosition(256 - buttonWidth / 2, 256 - buttonHeight / 2);
button.setSize(buttonWidth, buttonHeight);
stage.addActor(button);
stage3d.act();
}
@Override
public void render() {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(cam);
modelBatch.render(stage3d.instance);
modelBatch.end();
handleInputs();
}
private void handleInputs() {
int x = Gdx.input.getX();
int y = Gdx.input.getY();
Ray ray = cam.getPickRay(x, y);
stage3d.onMove(0, ray);
if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)) {
stage3d.onPressed(Input.Buttons.LEFT);
} else {
stage3d.onRelease(Input.Buttons.LEFT);
}
camController.update();
}
@Override
public void dispose() {
stage3d.dispose();
}
}