Package detectiongame.proto

Source Code of detectiongame.proto.Streets

package detectiongame.proto;

import engine.Vec3f;
import engine.model.Material;
import java.util.Vector;
import org.lwjgl.opengl.ARBMultitexture;
import static org.lwjgl.opengl.GL11.*;

public class Streets {
  private Vector<Vec3f> nodes;
  private Vector<Float> rads;
  private float width,vOffset;
  private Material mat;
 
  public Streets(Material material,int type,float wid){
    mat = material;
    nodes = new Vector<>();
    vOffset = 0f;
   
    if(type == 0) {
      nodes.add(new Vec3f(0, 0, 0));
      for(int i=0;i<32;i++){
        nodes.add(new Vec3f(nodes.lastElement().x+1f, 0, nodes.lastElement().z+(float)Math.sin((float)i/5f)*0.3f));
      }
      float x,z;
      x = nodes.lastElement().x;
      z = nodes.lastElement().z;
     
      for(int i=0;i<22;i++){
        nodes.add(new Vec3f(
          x+(float)Math.sin(((float)i)/10f)*8f+1f,
          0,
          z-(float)Math.cos(((float)i)/10f)*8f+8f
        ));
      }
      x = nodes.lastElement().x-0.5f;
      z = nodes.lastElement().z;
      for(int i=0;i<64;i++){
        nodes.add(new Vec3f(x-i/2f, 0, z+(float)Math.sin((float)i/8f+0.15f)*6f));
      }
    }
    else if(type == 1){
      for(int i=0;i<70;i++){
        nodes.add(new Vec3f((float)Math.sin(((float)i)/10f)*8f, 0,(float)Math.cos(((float)i)/10f)*8f));
      }
    }
    else if(type == 2){
      Vector<Vec3f> tnodes = new Vector<>();
      float x,z,c;
      tnodes.add(new Vec3f(0,0,0));
      tnodes.add(new Vec3f(1,0,10));
      tnodes.add(new Vec3f(20,0,10));
      tnodes.add(new Vec3f(20,0,25));
     
      for(int i=1;i<tnodes.size();i++){
        x = tnodes.get(i).x - tnodes.get(i-1).x;
        z = tnodes.get(i).z - tnodes.get(i-1).z;
        c = (float)Math.sqrt(x*x+z*z);
        for(float r=0;r<c;r++){
          //nodes.add(new Vec3f(tnodes.get(i-1).x+(x/r)*(float)Math.sin(0.31415*r), 0, tnodes.get(i-1).z+(z/r)*(float)Math.cos(0.31415*r)));
          nodes.add(new Vec3f(tnodes.get(i-1).x+(x/c*r), 0, tnodes.get(i-1).z+(z/c*r)));
        }
      }
    }
    else if(type == 3){
      nodes.add(new Vec3f(0,0,0));
      nodes.add(new Vec3f(1,0,10));
      nodes.add(new Vec3f(20,0,10));
      nodes.add(new Vec3f(20,0,25));
    }
    else if(type == 4){
      float radx=0f,rady=0f,offsetx=0f,offsety;
      nodes.add(new Vec3f(0, 0, 0));
      for(int i=0;i<100;i++){
        offsetx = (float)Math.random()/8f;
        offsety = (float)Math.random()/8f;

        for(int r=0;r<10;r++){
          nodes.add(new Vec3f(nodes.lastElement().x+(float)Math.sin(radx)*2f, i/100f, nodes.lastElement().z+(float)Math.cos(rady)*2f));
          radx += offsetx;
          rady += offsety;
        }
      }
    }
    else if(type == 5){
      for(int i=0;i<10;i++){
        nodes.add(new Vec3f(i, 0, 0));
       
      }
      float x = nodes.lastElement().x;
      for(int r=0;r<10;r++){
        nodes.add(new Vec3f(x, 0, r+1));
      }
   
    }
    /*
    nodes.add(new Vec3f(0, 0, -20));
    nodes.add(new Vec3f(0, 0, -10));
    nodes.add(new Vec3f(0, 0, 2));
    nodes.add(new Vec3f(0, 0, 10));
    nodes.add(new Vec3f(-10, 0, 10));
    nodes.add(new Vec3f(-20, 0, 10));
    nodes.add(new Vec3f(-30, 0, 10));
    nodes.add(new Vec3f(-33, 0, 11));
    nodes.add(new Vec3f(-36, 0, 12));
    nodes.add(new Vec3f(-38, 0, 9));
    nodes.add(new Vec3f(-38, 0, 0));
    nodes.add(new Vec3f(-38, 0, 0));
    */
    width = wid;
    rads = new Vector<>();
    for(int i=0;i<nodes.size();i++){
      if(i == 0){
        rads.add((float)Math.atan2(nodes.get(i).z - nodes.get(i+1).z, nodes.get(i).x - nodes.get(i+1).x));
      }
      else if(i == nodes.size()-1){
        rads.add((float)Math.atan2(nodes.get(i-1).z - nodes.get(i).z, nodes.get(i-1).x - nodes.get(i).x));
      }
      else{
        rads.add((float)Math.atan2(nodes.get(i-1).z - nodes.get(i+1).z, nodes.get(i-1).x - nodes.get(i+1).x));
      }
    }
  }
  public void exist(){
    //vOffset -= 0.01f;
    glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
     //glDisable(GL_CULL_FACE);
   
    this.mat.shader.enable();
   
    if(mat.texture0 != null && mat.texture0.texture != null){
      ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB);
      glBindTexture(GL_TEXTURE_2D, mat.texture0.texture.getTextureID());
    }
   
    glBegin(GL_TRIANGLES);
    Vec3f before = nodes.firstElement(),node;
    float rad0,rad1,t[][],v0=0f,v1=-0.0f,v00=0f,v01=0f,d;
    t = new float[6][2];
    for(int i=1;i<nodes.size()-1;i++){

      node = this.nodes.get(i);
     
      rad0 = this.rads.get(i-1);
      rad1 = this.rads.get(i);
     
      t[0][0] = this.rotX(rad0, this.width);
      t[0][1] = this.rotZ(rad0, this.width);
      t[1][0] = this.rotX(rad0, -this.width);
      t[1][1] = this.rotZ(rad0, -this.width);
      t[2][0] = this.rotX(rad1, -this.width);
      t[2][1] = this.rotZ(rad1, -this.width);
     
      t[3][0] = this.rotX(rad0, this.width);
      t[3][1] = this.rotZ(rad0, this.width);
      t[4][0] = this.rotX(rad1, -this.width);
      t[4][1] = this.rotZ(rad1, -this.width);
      t[5][0] = this.rotX(rad1, this.width);
      t[5][1] = this.rotZ(rad1, this.width);

     
      d = (float)Math.sqrt(Math.pow(before.x-node.x,2)+Math.pow(before.z-node.z,2));
      v0 = v0+(float)Math.sqrt(Math.pow(t[1][0]-(t[2][0]+Math.abs(before.x-node.x)), 2)+Math.pow(t[1][1]-(t[2][1]+Math.abs(before.z-node.z)), 2));
      v1 = v1+(float)Math.sqrt(Math.pow((t[5][0]+Math.abs(before.x-node.x))-t[3][0], 2)+Math.pow((t[5][1]+Math.abs(before.z-node.z))-t[3][1], 2));
 
      //rad0 = -45f;
      glTexCoord2f(0f, v01+vOffset);
      glVertex3f(t[0][0]+before.x, before.y, t[0][1]+before.z);
      glTexCoord2f(1f, v00+vOffset);
      glVertex3f(t[1][0]+before.x, before.y, t[1][1]+before.z);
      glTexCoord2f(1f, v0+vOffset);
      glVertex3f(t[2][0]+node.x, node.y, t[2][1]+node.z);
     
      glTexCoord2f(0f, v01+vOffset);
      glVertex3f(t[3][0]+before.x, before.y, t[3][1]+before.z);
      glTexCoord2f(1f, v0+vOffset);
      glVertex3f(t[4][0]+node.x, node.y, t[4][1]+node.z);
      glTexCoord2f(0f, v1+vOffset);
      glVertex3f(t[5][0]+node.x, node.y, t[5][1]+node.z);
     
      v00 = v0;
      v01 = v1;
      before = node;
    }
    glEnd();
   
    glBindTexture(GL_TEXTURE_2D,0);
    this.mat.shader.disable();
    /*
    glBegin(GL_LINE_STRIP);
    for(int i=0;i<nodes.size();i++){
      glVertex3f(nodes.get(i).x, 0.1f, nodes.get(i).z);
    }
    glEnd();
   
    glPointSize(3.0f);
    glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
    glBegin(GL_POINTS);
    for(int i=0;i<nodes.size();i++){
      glVertex3f(nodes.get(i).x, 0.01f, nodes.get(i).z);
    }
    glEnd();
    */
  }
  private float rotX(float rad, float z){
    return (float)-(z*Math.sin(rad));
  }
  private float rotZ(float rad, float z){
    return (float)(z*Math.cos(rad));
  }
  private float scaleCorner(float num, float rad){
    return (float)(Math.sin(rad*2f)*num*(3.14159f/2f));
  }
}
 
TOP

Related Classes of detectiongame.proto.Streets

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.