Clear old framework for a new raycasting system.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2, Sig, Sigo 3 years ago
parent 29c44d4207
commit c17b05c786
  1. 6
      src/sig/Panel.java
  2. 47
      src/sig/SigRenderer.java
  3. 43
      src/sig/old/Panel.java
  4. 2
      src/sig/old/Pixel.java
  5. 159
      src/sig/old/SigRenderer.java
  6. 2
      src/sig/old/Triangle.java

@ -31,12 +31,6 @@ public class Panel extends JPanel{
}
}
}*/
for (Pixel p:SigRenderer.pixels) {
if (!g.getColor().equals(p.col)) {
g.setColor(p.col);
}
g.fillRect(p.x,p.y,(int)SigRenderer.RESOLUTION,(int)SigRenderer.RESOLUTION);
}
endTime=System.nanoTime();
SigRenderer.DRAWLOOPTIME = (endTime-startTime)/1000000f;
}

@ -14,50 +14,17 @@ import java.awt.Toolkit;
import java.awt.Color;
public class SigRenderer implements KeyListener,MouseListener,MouseMotionListener{
public static Triangle tri,tri2,tri3,tri4,tri5,tri6;
public final static int SCREEN_WIDTH=1280;
public final static int SCREEN_HEIGHT=720;
public final static long TIMEPERTICK = 16666667l;
public static float DRAWTIME=0;
public static float DRAWLOOPTIME=0;
public static final float RESOLUTION=4;
Vector3f origin = new Vector3f(0,0,10);
public static float rot = (float)Math.PI/4; //In radians.
public static List<Pixel> pixels;
public void runGameLoop() {
rot+=Math.PI/480d;
pixels = new ArrayList<>();
for (int x=0;x<SigRenderer.SCREEN_WIDTH/RESOLUTION;x++) {
for (int y=0;y<SigRenderer.SCREEN_HEIGHT/RESOLUTION;y++) {
Vector3f dir = new Vector3f((-SigRenderer.SCREEN_WIDTH/2f+x*RESOLUTION),(-SigRenderer.SCREEN_HEIGHT/2f+y*RESOLUTION),SigRenderer.SCREEN_WIDTH).dot;
if (SigRenderer.tri.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.BLACK));
}
if (SigRenderer.tri2.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.BLUE));
}
if (SigRenderer.tri3.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.RED));
}
if (SigRenderer.tri4.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.GREEN));
}
}
}
}
SigRenderer(JFrame f) {
tri = new Triangle(new Vector3f(-1,-1,0),new Vector3f(0,-1,0),new Vector3f(-1,0,0));
tri2 = new Triangle(new Vector3f(-1,0,0),new Vector3f(0,-1,0),new Vector3f(0,0,0));
tri3 = new Triangle(new Vector3f(0,0,0),new Vector3f(0,-1,0),new Vector3f(0,-1,-1));
tri4 = new Triangle(new Vector3f(0,-1,-1),new Vector3f(0,0,-1),new Vector3f(0,-1,0));
/*tri5 = new Triangle(new Vector3f(0,-1,0),new Vector3f(0,-1,-1),new Vector3f(0,0,0));
tri6 = new Triangle(new Vector3f(0,0,0),new Vector3f(0,-1,-1),new Vector3f(0,0,-1));*/
Panel p = new Panel();
new Thread() {
@ -135,20 +102,6 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:{
origin.add(new Vector3f(0,0,-1));
}break;
case KeyEvent.VK_RIGHT:{
origin.add(new Vector3f(1,0,0));
}break;
case KeyEvent.VK_LEFT:{
origin.add(new Vector3f(-1,0,0));
}break;
case KeyEvent.VK_DOWN:{
origin.add(new Vector3f(0,0,1));
}break;
}
}
@Override

@ -0,0 +1,43 @@
package sig.old;
import javax.swing.JPanel;
import javax.vecmath.Vector3f;
import java.awt.Graphics;
import java.awt.Color;
public class Panel extends JPanel{
long startTime = System.nanoTime();
long endTime = System.nanoTime();
public void repaint() {
super.repaint();
startTime = System.nanoTime();
}
public void paintComponent(Graphics g) {
g.clearRect(0,0,SigRenderer.SCREEN_WIDTH,SigRenderer.SCREEN_HEIGHT);
//Vector3f origin = new Vector3f(Math.cos(SigRenderer.rot)*10,0,10+Math.sin(SigRenderer.rot)*10);
/*for (int x=0;x<SigRenderer.SCREEN_WIDTH/RESOLUTION;x++) {
for (int y=0;y<SigRenderer.SCREEN_HEIGHT/RESOLUTION;y++) {
Vector3f dir = new Vector3f((-SigRenderer.SCREEN_WIDTH/2d+x*RESOLUTION),(-SigRenderer.SCREEN_HEIGHT/2d+y*RESOLUTION),SigRenderer.SCREEN_WIDTH);
if (SigRenderer.tri.rayTriangleIntersect(origin, dir)) {
g.setColor(Color.BLACK);
g.fillRect((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),(int)RESOLUTION,(int)RESOLUTION);
//System.out.println("Intersects at "+origin+"/"+dir);
} else
if (SigRenderer.tri2.rayTriangleIntersect(origin, dir)) {
g.setColor(Color.BLUE);
g.fillRect((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),(int)RESOLUTION,(int)RESOLUTION);
//System.out.println("Intersects at "+origin+"/"+dir);
}
}
}*/
for (Pixel p:SigRenderer.pixels) {
if (!g.getColor().equals(p.col)) {
g.setColor(p.col);
}
g.fillRect(p.x,p.y,(int)SigRenderer.RESOLUTION,(int)SigRenderer.RESOLUTION);
}
endTime=System.nanoTime();
SigRenderer.DRAWLOOPTIME = (endTime-startTime)/1000000f;
}
}

@ -1,4 +1,4 @@
package sig;
package sig.old;
import java.awt.Color;

@ -0,0 +1,159 @@
package sig.old;
import javax.swing.JFrame;
import javax.vecmath.Point2d;
import javax.vecmath.Tuple3d;
import javax.vecmath.Vector3f;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import java.awt.Toolkit;
import java.awt.Color;
public class SigRenderer implements KeyListener,MouseListener,MouseMotionListener{
public static Triangle tri,tri2,tri3,tri4,tri5,tri6;
public final static int SCREEN_WIDTH=1280;
public final static int SCREEN_HEIGHT=720;
public final static long TIMEPERTICK = 16666667l;
public static float DRAWTIME=0;
public static float DRAWLOOPTIME=0;
public static final float RESOLUTION=4;
Vector3f origin = new Vector3f(0,0,10);
public static float rot = (float)Math.PI/4; //In radians.
public static List<Pixel> pixels;
public void runGameLoop() {
rot+=Math.PI/480d;
pixels = new ArrayList<>();
for (int x=0;x<SigRenderer.SCREEN_WIDTH/RESOLUTION;x++) {
for (int y=0;y<SigRenderer.SCREEN_HEIGHT/RESOLUTION;y++) {
Vector3f dir = new Vector3f((-SigRenderer.SCREEN_WIDTH/2f+x*RESOLUTION),(-SigRenderer.SCREEN_HEIGHT/2f+y*RESOLUTION),SigRenderer.SCREEN_WIDTH).dot;
if (SigRenderer.tri.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.BLACK));
}
if (SigRenderer.tri2.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.BLUE));
}
if (SigRenderer.tri3.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.RED));
}
if (SigRenderer.tri4.rayTriangleIntersect(origin, dir)) {
pixels.add(new Pixel((int)(SigRenderer.SCREEN_WIDTH-x*RESOLUTION),(int)(SigRenderer.SCREEN_HEIGHT-y*RESOLUTION),Color.GREEN));
}
}
}
}
SigRenderer(JFrame f) {
tri = new Triangle(new Vector3f(-1,-1,0),new Vector3f(0,-1,0),new Vector3f(-1,0,0));
tri2 = new Triangle(new Vector3f(-1,0,0),new Vector3f(0,-1,0),new Vector3f(0,0,0));
tri3 = new Triangle(new Vector3f(0,0,0),new Vector3f(0,-1,0),new Vector3f(0,-1,-1));
tri4 = new Triangle(new Vector3f(0,-1,-1),new Vector3f(0,0,-1),new Vector3f(0,-1,0));
/*tri5 = new Triangle(new Vector3f(0,-1,0),new Vector3f(0,-1,-1),new Vector3f(0,0,0));
tri6 = new Triangle(new Vector3f(0,0,0),new Vector3f(0,-1,-1),new Vector3f(0,0,-1));*/
Panel p = new Panel();
new Thread() {
public void run(){
while (true) {
long startTime = System.nanoTime();
runGameLoop();
p.repaint();
Toolkit.getDefaultToolkit().sync();
long endTime = System.nanoTime();
long diff = endTime-startTime;
try {
long sleepTime = TIMEPERTICK - diff;
long millis = (sleepTime)/1000000;
int nanos = (int)(sleepTime-(((sleepTime)/1000000)*1000000));
//System.out.println("FRAME DRAWING: Sleeping for ("+millis+"ms,"+nanos+"ns) - "+(diff)+"ns");
DRAWTIME = (float)diff/1000000;
f.setTitle("Game Loop: "+DRAWTIME+"ms, Draw Loop: "+DRAWLOOPTIME+"ms");
if (sleepTime>0) {
Thread.sleep(millis,nanos);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
f.getContentPane().addMouseListener(this);
f.getContentPane().addMouseMotionListener(this);
f.addKeyListener(this);
f.add(p);
f.setSize(SCREEN_WIDTH,SCREEN_HEIGHT);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
JFrame f = new JFrame("SigRenderer");
new SigRenderer(f);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:{
origin.add(new Vector3f(0,0,-1));
}break;
case KeyEvent.VK_RIGHT:{
origin.add(new Vector3f(1,0,0));
}break;
case KeyEvent.VK_LEFT:{
origin.add(new Vector3f(-1,0,0));
}break;
case KeyEvent.VK_DOWN:{
origin.add(new Vector3f(0,0,1));
}break;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}

@ -1,4 +1,4 @@
package sig;
package sig.old;
import javax.vecmath.Vector3f;
public class Triangle {
Loading…
Cancel
Save