Advertisement
Guest User

My Code

a guest
Aug 30th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.34 KB | None | 0 0
  1. import peasy.*;
  2.  
  3. int MODEL_SPHERE = 1;
  4. int MODEL_CUBE = 2;
  5. boolean lights = false;
  6. PeasyCam cam;
  7.  
  8. ArrayList<Model> view;
  9. ArrayList<Material> materials;
  10.  
  11.  
  12. void setup() {
  13.   view = new ArrayList<Model>();
  14.   materials = new ArrayList<Material>();
  15.   cam = new PeasyCam(this, 800);
  16.   noStroke();
  17.   view.add(new Model(MODEL_SPHERE));
  18.   materials.add(new Material(loadImage("data/earth.jpg")));
  19.   view.get(0).wrap(materials.get(0));
  20. }
  21. void settings() {
  22.   size(800, 600, P3D);
  23. }
  24. void draw() {
  25.   background(51);
  26.   if(lights) {
  27.     lights();
  28.   }
  29.   fill(255);
  30.   for(Model m: view) {
  31.     m.show();
  32.   }
  33. }
  34.  
  35. void keyPressed() {
  36.   if(key == 'a') {
  37.     lights = !lights;
  38.   }
  39.   if(key == 'l') {
  40.     view = new ArrayList<Model>();
  41.     materials = new ArrayList<Material>();
  42.     String[] data;
  43.     data = loadStrings("save.mso");
  44.     boolean ino = false;
  45.     int type = 0;
  46.     PVector[] vertexes = new PVector[0];
  47.     color[] image;
  48.     Model t_model = new Model();
  49.     for(int i = 0; i < data.length; i++) {
  50.       if(data[i].equals("Model")) {
  51.         ino = true;
  52.         type = 1;
  53.       }
  54.       if(data[i].equals("end_model")) {
  55.         t_model.vector_construct(vertexes);
  56.         view.add(t_model);
  57.         vertexes = new PVector[0];
  58.       }
  59.       if(ino && data[i].equals("vertex") && type == 1) {
  60.         vertexes = (PVector[]) append(vertexes, new PVector(float(data[i+1]), float(data[i+2]), float(data[i+3])));
  61.       }
  62.       if(data[i].equals("use_material")) {
  63.         if(getMaterial(data[i+1]) != null) {
  64.           t_model.wrap(getMaterial(data[i+1]));
  65.         } else {
  66.          
  67.         }
  68.       }
  69.     }
  70.   }
  71.   if(key == 'c') {
  72.     view = new ArrayList<Model>();
  73.     materials = new ArrayList<Material>();
  74.   }
  75.   if(key == 's') {
  76.     PrintWriter file = createWriter("save.mso");
  77.     for(Material m: materials) {
  78.       file.println("Material");
  79.       file.println(m.label);
  80.       file.println("Size");
  81.       PImage im = m.img;
  82.       file.println(im.width);
  83.       file.println(im.height);
  84.       im.loadPixels();
  85.       for(int i = 0; i < im.pixels.length; i++) {
  86.         file.println("Pixel");
  87.         file.println(red(im.pixels[i]));
  88.         file.println(blue(im.pixels[i]));
  89.         file.println(green(im.pixels[i]));
  90.       }
  91.       file.println("End Material");
  92.     }
  93.     for(Model m: view) {
  94.       PShape obj = m.object;
  95.       file.println("Model");
  96.       if(m.m != null) {
  97.         file.println("use_material");
  98.         file.println(m.m.label);
  99.       }
  100.       for(int i = 0; i < obj.getVertexCount(); i++) {
  101.         PVector v = obj.getVertex(i);
  102.         file.println("vertex");
  103.         file.println(v.x);
  104.         file.println(v.y);
  105.         file.println(v.z);
  106.       }
  107.       file.println("End Model");
  108.     }
  109.   }
  110. }
  111.  
  112. String generateRandomString() {
  113.   String s = "";
  114.   for(int i = 0; i < 16; i++) {
  115.     char c = (char) int(random(33, 127));
  116.     s += c;
  117.   }
  118.   return s;
  119. }
  120.  
  121. Material getMaterial(String l) {
  122.   Material m = null;
  123.   for(Material mi: materials) {
  124.     if(mi.label.equals(l)) {
  125.       m = mi;
  126.     }
  127.   }
  128.   return m;
  129. }
  130.  
  131. class Material {
  132.   PImage img;
  133.   String label;
  134.  
  135.   Material(PImage i) {
  136.     img = i;
  137.     label = generateRandomString();
  138.   }
  139.   Material(PImage i, String l) {
  140.     img = i;
  141.     label = l;
  142.   }
  143. }
  144.  
  145. class Model {
  146.   PVector pos;
  147.   PShape object;
  148.   Material m = null;
  149.  
  150.   Model() {
  151.    
  152.   }
  153.   Model(int type) {
  154.     pos = new PVector(0, 0, 0);
  155.     object = new PShape();
  156.     if(type == 1) {
  157.       object = createShape(SPHERE, 100);
  158.     } else if(type == 2) {
  159.       object = createShape(BOX, 100);
  160.     }
  161.   }
  162.   Model(PVector[] vectors) {
  163.     pos = new PVector(0, 0, 0);
  164.     object = new PShape();
  165.     object.beginShape();
  166.     for(int i = 0; i < vectors.length; i++) {
  167.       object.vertex(vectors[i].x, vectors[i].y, vectors[i].z);
  168.     }
  169.     object.endShape();
  170.   }
  171.   void show() {
  172.     pushMatrix();
  173.     translate(pos.x, pos.y, pos.z);
  174.     shape(object);
  175.     popMatrix();
  176.   }
  177.   void wrap(Material m) {
  178.     object.setTexture(m.img);
  179.     this.m = m;
  180.   }
  181.   void vector_construct(PVector[] vectors) {
  182.     pos = new PVector(0, 0, 0);
  183.     object = new PShape();
  184.     PShape temp = new PShape();
  185.     object.beginShape();
  186.     for(int i = 0; i < vectors.length; i++) {
  187.       object.vertex(vectors[i].x, vectors[i].y, vectors[i].z);
  188.     }
  189.     object.endShape();
  190.   }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement