[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Scripting Problem



I have written a script to generate a number of events with certain
percentages of an 8 pattern activated i.e. 0 to 100% of units in the
eight pattern active. However when I run the script I notice the
software is only considering the first 2 or 3 events, I can tell from
which names are changed. Any adive on this code would be very much
appreciated.

The script requires a simple one layered 5x7 self projecting layer.

Tim.

class MakeEnv {
  // Control Panel for Creating Events
public:
  Environment* env;// environment to operate on
  int n_events;// number of events to create per percent
  void Make();// #BUTTON make the full environment
  void MakeEvent(Event* ev, int idx, int percent);// make one event
(number idx)
  void MakePattern(Pattern* pat, int percent); // make on pattern
  MakeEnv();
};

MakeEnv::MakeEnv(){
  env = .environments[0];
  n_events = 5;
}

void MakeEnv::Make(){
  env.events.Reset();
  int i;
  int percent;

  env.events->New(100 * n_events,Event);

  for(percent = 0; percent < 100; y++)
  {
    for(i = 0; i < n_events; i++)
    {
       MakeEvent(env->events[n_events * percent + i], n_events * percent
+ i,percent);
    }
  }
  env.UpdateAllViews();
}

void MakeEnv::MakeEvent(Event* ev, int idx, int percent)
{
  ev->name = "ev_" + idx + "_p_" + percent;
  MakePattern(ev->patterns[0], percent);
}

void MakeEnv::MakePattern(Pattern* pat, int percent)
{
  float_RArray eight =
"{0.0,1.0,1.0,1.0,0.0,1.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,1.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0}";
  int x;

  for(x = 0; x < 35; x++){
  if((random() % 100) < percent)
  {
     pat.value[x] = eight[x];
  } else {
     pat.value[x] = 0.0;
  }
  }
}

MakeEnv mak;
EditObj(mak);