Escolar Documentos
Profissional Documentos
Cultura Documentos
using System.Collections;
namespace TareaGL
{
/// <summary>
/// Summary description for GlObject.
/// </summary>
public abstract class GlObject
{
public GlObject()
{
//
// TODO: Add constructor logic here
//
}
public virtual void Prepare(Avatar observer) {;}
public abstract void Render();
public virtual void Split (ArrayList far, ArrayList near)
{
far.Add(this);
}
public virtual Point3D ColisionNormal(Point3D origin,Point3D direction,
double radius)
{
return new Point3D(0,0,0);
}
public virtual void FindTargetsFor(char c, ArrayList result)
{
if ((this is InteractiveObject) && (this as
InteractiveObject).HasActionFor(c))
result.Add(this);
}
}
/**
*
* GlObjectList es el unico que garantiza que pintara primero
* su far, y luego su near, ordenadamente.
*
**/
public class GlObjectList : GlObject,IEnumerable
{
protected ArrayList far = new ArrayList();
protected ArrayList near = new ArrayList();
protected ArrayList objects = new ArrayList();
public GlObjectList(){;}
public void Add (GlObject obj)
{
objects.Add(obj);
obj.Split(far,near);
}
public override void Split(ArrayList far, ArrayList near)
{
foreach (GlObject obj in this.objects)
obj.Split(far,near);
}
public override void Prepare(Avatar observer)
{
foreach (GlObject obj in objects)
obj.Prepare(observer);
this.sortList(near,observer.Origin);
}