#File Leader1.py
#John Whitham (me@jwhitham.plus.com) 2005

lastpos = None
lobj = None
fobj = None
eco_offset = 0.0

def SetOffset():
  eco = GetEcosystemOnObject(fobj)
  pos = eco.GetInstancePosition(0)
  alt = GetAltitudeOnEcosystemAt(eco,pos[0],pos[1])
  global eco_offset
  eco_offset = pos[2] - alt

def BirdFlock(k):
  eco = GetEcosystemOnObject(fobj)
  rot = lobj.GetRotationAngles()
  newpos = lobj.Position()
  global lastpos
  xdiff = newpos[0] - lastpos[0]
  ydiff = newpos[1] - lastpos[1]
  lastpos = newpos
  for boid in range(0,eco.GetInstanceCount()):
    eco.SetInstanceRotationV(boid,rot)
    if (CurrentFrame()>0): 
      eco.MoveInstance(boid,xdiff,ydiff,0)
      pos = eco.GetInstancePosition(boid)
      alt = GetAltitudeOnEcosystemAt(eco,pos[0],pos[1])
      zpos = alt + eco_offset
      eco.SetInstancePosition(boid,pos[0],pos[1],zpos)

leader = Prompt("Enter the name of the object to be followed.", \
  "",false,"Enter Leader Name")
follower = Prompt("Enter the name of the object with the follower Eco", \
  "",false,"Enter Eco Object")
if (ObjectByName(leader)!=None and ObjectByName(follower)!=None):
  lobj = ObjectByName(leader)
  lastpos = lobj.Position()
  fobj = ObjectByName(follower)
  SetOffset()
  fobj.SetInitFrameCallback(BirdFlock)
else:
  Message("Wrong","Try Again",1)
