package gg

import (
)

type PolygonTriangle struct {
	T, S int
}

// Grouped triangles type.
type Polygon struct {
	Transform
	Triangles
}

// Polygon that can be drawn.
type DrawablePolygon struct {
	Polygon
	
	ShaderOptions
	Visibility
	Colority
}

func (p *Polygon) MakeTriangles() Triangles {
	mv := p.Matrix()
	m := &mv
	
	ret := make(Triangles, len(p.Triangles))
	for i, t := range p.Triangles {
		ret[i] = Triangle{
			t[0].Apply(m),
			t[1].Apply(m),
			t[2].Apply(m),
		}
	}
	
	return ret
}

func (p *DrawablePolygon) Draw(
	e *Engine,
	i *Image,
) {
	(&DrawableTriangles{
		Visibility: p.Visibility,
		Colority: p.Colority,
		ShaderOptions: p.ShaderOptions,
		Triangles: p.MakeTriangles(),
	}).Draw(e, i)
}