Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.skysoldier.blockworld;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Toolkit;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import java.awt.event.MouseMotionListener;
- import javax.swing.JPanel;
- import de.skysoldier.graphics3D.Camera;
- import de.skysoldier.graphics3D.Graphics3D;
- import de.skysoldier.graphics3D.Line3D;
- import de.skysoldier.graphics3D.LinedMesh;
- import de.skysoldier.graphics3D.Values3D;
- public class BlockWorld extends JPanel implements Runnable {
- private Gui gui;
- private LinedMesh cube = new LinedMesh(Values3D.MESH_PRESET_CUBE);
- private Thread thread;
- private Graphics3D g3d;
- private Camera camera;
- public BlockWorld(){
- init();
- }
- public void run(){
- while(true){
- repaint();
- try{Thread.sleep(10);}catch(Exception e){}
- }
- }
- public void paintComponent(Graphics g){
- super.paintComponent(g);
- // g.setColor(Color.RED);
- // g.drawLine(300, 0, 300, 300);
- // g.drawLine(0, 300, 300, 300);
- g.setColor(Color.WHITE);
- g3d.updateRotationDataX(angleX);
- g3d.updateRotationDataY(angleY);
- //the third param (z) doesn't affect anything:
- g3d.updateTranslationData(100, 100, 500);
- for(int i = 0; i < cube.getLineCount(); i++){
- Line3D copy = g3d.renderLine(cube.getLine(i), camera, g3d.getRotationDataX(), g3d.getRotationDataY(), g3d.getTranslationData());
- g3d.drawLine(copy, g);
- }
- }
- private void init(){
- addMouseMotionListener(ml);
- gui = new Gui(this);
- thread = new Thread(this);
- g3d = new Graphics3D();
- g3d.updateTranslationData(300, 300, 0);
- camera = g3d.createCamera(Values3D.CAMERA_PERSPECTIVE);
- camera.active = true;
- start();
- }
- private void start(){
- gui.init();
- thread.start();
- }
- private double angleX = 0;
- private double angleY = 0;
- private Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
- private double xperpixel = 360 / screensize.getWidth();
- private double yperpixel = 360 / screensize.getHeight();
- public MouseMotionListener ml = new MouseMotionAdapter() {
- public void mouseDragged(MouseEvent e) {
- angleY = (double) e.getX() * xperpixel;
- angleX = (double) e.getY() * yperpixel;
- }
- };
- public static void main(String[] args) {
- new BlockWorld();
- }
- }
Add Comment
Please, Sign In to add comment