logo

prolebra_0.9B1_Main

import toxi.color.*;
import toxi.math.*;
import toxi.math.noise.*;
import toxi.physics.*;
import toxi.physics.behaviors.*;
import controlP5.*;
import toxi.geom.mesh.*;
import java.util.*;
import processing.opengl.*;
import toxi.geom.*;
import toxi.math.*;
import toxi.math.noise.*;
import toxi.physics.*;
import toxi.physics.behaviors.*;
import java.awt.Frame;
import java.awt.BorderLayout;
import java.util.Calendar;
import toxi.processing.*;
//------------------Import Mode Libraries----------------------
import creeper_Behavior_P3_Solo.*;
import java.util.List;
//----------------------ClassVariables-------------------------
List<Creeper> creeperFamily; 
Creeper creeper;
//-----------------CONTROL P5 UI-----------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////
boolean showGUI = false;
//Define Global Variables---------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////
boolean simulate = true;
//Define Parameters---------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////
int resetCounter = 0; 
float connectivityThreshold = 0;
float Speed = 0.5;
float SearchRadius = 100;
float AlignValue = 0.25;
float SeparateValue = 100.0;
float CohesionValue = 0.35;
float HeadWidth = 3.0;
float StrokeWidth = 1.0;
float Transparency = 255.0;
float Count = 500;
boolean Connect = false;
boolean Swarm = false;
boolean Perlin = false;
boolean Hybrid = false;
boolean Bounds = false;
int TrailResolution = 6;
float Multiplier = 1.0;
float Scale, Strength, Velocity;
boolean mapVal = false;
boolean ShowMap = false;
boolean ApplyMap = false;
boolean ApplySweetColor = false;
boolean RESET = false;

RadioButton spawn, behavior, dimension; 
Knob Blend, MSpeed, MBaseSpeed;
CheckBox checkFlockBox, checkPerlinBox;
PImage img;

Culebra_Interface cI;
void settings() {
  size(1400, 1000, FX2D);
  smooth();
}
void setup() {
  if (this.resetCounter == 0) {
    cI = new Culebra_Interface(this, 400, 1025);
  }
  surface.setLocation(420, 10);
  frameRate(100);
  img = loadImage("MAP.jpg");
  simulate = true;
  creeperFamily = new ArrayList<Creeper>(); 
  for (int i = 0; i < Count; i++) {
    PVector origin = new PVector();
    PVector speed = new PVector();
    if (spawn == null || spawn.getState(0)) {
      origin = new PVector(0, random(height), 0);
      speed = new PVector(random(0, Speed), 0, 0);
    } else if (spawn != null || spawn.getState(1)) {
      origin = new PVector(random(width), random(height), 0);
      speed = new PVector(random(-Speed, Speed), random(-Speed, Speed), 0);
    }
    this.creeper = new Creeper(origin, speed, width, height);
    this.creeperFamily.add(creeper);
  }
}
void draw() {
  background(0);
  if (mapVal == true) {
    image(img, 0, 0);
  }
  this.Speed = this.MBaseSpeed.getValue();
  if (behavior.getState(0)) {
    this.Swarm = true; 
    this.Perlin = false;
  }
  if (behavior.getState(1)) { 
    this.Perlin = true;
    this.Swarm = false;
    this.Hybrid = false;
  }
  if (behavior.getState(2)) { 
    this.Perlin = false;
    this.Swarm = false;
    this.Hybrid = true;
  }
  if (!behavior.getState(0)) {
    this.Swarm = false;
  }
  if (!behavior.getState(1)) {
    this.Perlin = false;
  }
  if (!behavior.getState(2)) {
    this.Hybrid = false;
  }
  for (int i = 0; i < creeperFamily.size (); i++) {
    Creeper creep = (Creeper)creeperFamily.get(i);

    creep.applyColor = this.ApplySweetColor;
    creep.applyMap = this.ApplyMap;
    creep.img = this.img;
    creep.searchRad = SearchRadius;
    creep.av = AlignValue;
    creep.sv = SeparateValue;
    creep.cv = CohesionValue; 
    creep.swarm = Swarm;
    creep.perlin = Perlin;
    creep.bounds = Bounds;
    creep.multiplier = this.Multiplier;
    creep.scale = this.Scale;
    creep.strength = this.Strength;
    creep.velocity = this.Velocity;
    creep.blend = this.Blend.getValue();
    creep.max = this.MSpeed.getValue();
    creep.hybrid = this.Hybrid;
    creep.strokeWidth = StrokeWidth;
    creep.transparency = Transparency;
    creep.simulate = simulate;
    creep.trailResolution = TrailResolution;
    creep.creeperCollection = this.creeperFamily;
    if (this.ApplyMap) {
      creep.mapAV = this.checkFlockBox.getState(0); 
      creep.mapSV = this.checkFlockBox.getState(1);
      creep.mapCV = this.checkFlockBox.getState(2);
      creep.mapPS = this.checkPerlinBox.getState(0);
      creep.mapPSC = this.checkPerlinBox.getState(1);
      creep.mapPM = this.checkPerlinBox.getState(2);
    }
    creep.action();
    pushStyle();
    stroke(255, 255, 255); //Stroke Value
    strokeWeight(HeadWidth); //ThickLines
    point(creep.loc.x, creep.loc.y, 0);
    popStyle();
    noFill();

    if (i!=0) {
      if (creep.trailData.size() > 0) {
        for (int rr = 0; rr < creep.trailData.size (); rr++) {
          List<PVector> vecs = creep.trailData.get(rr);
          ArrayList colors = new ArrayList();
          if (this.ApplySweetColor) {
            colors = creep.trailColors.get(rr);
          }
          PVector vecA = vecs.get(0);
          PVector vecB = vecs.get(1);
          if (this.ApplySweetColor) {
            Float val = (Float) colors.get(0);
            int val2 = (Integer) colors.get(1);
            Float val3 = (Float) colors.get(2);  
            strokeWeight(val);
            stroke(val2, val3);
          } else {
            strokeWeight(1);
            stroke(255, 255);
          }
          line(vecA.x, vecA.y, vecB.x, vecB.y);
        }
      }
    }
  }
}
void RESET(boolean resetFlag) { 
  if (resetFlag) {
    this.resetCounter ++;
    setup();
  }
}
void ShowMap(boolean theFlag) {
  if (theFlag==true) {
    mapVal = true;
  } else {
    mapVal = false;
  }
}
void keyPressed() {
  if (key == 's') {
    simulate = !simulate;
  }
  if (key == 'r') {
    setup();
  }
}
Update
  • Share