DrawTriangle function

Monkey Forums/Monkey Programming/DrawTriangle function

Raz(Posted 2012) [#1]
Hi everyone

I am aware of DrawPoly function which accepts a float[] but I would like to avoid creating a float[] instance each time the function is called. My primary target is the Xbox at the moment so I really have to avoid creating garbage. As Floats and Ints are managed, it is not a problem to use them.

With this in mind, I would like to use a function as follows..

[monkeycode]Function DrawTriangle:Void(X1#,Y1#,X2#,Y2#,X3#,Y3#)
' Basically the same as the draw poly code, but using floats not an array of floats
End[/monkeycode]

I'm not so sure how to implement such a thing though... I've found the XNA version of the DrawPoly function and edited a copy to create my DrawTriangle function...

public virtual int DrawTriangle( float x1, float y1, float x2, float y2, float x3, float y3 ){

	int n = 3;
	
	Flush();
	primType=5;
	primSurf=null;

	float px;
	float py;
	
	px=x1;
	py=y1;
	
	if( tformed ){
		float ppx=px;
		px=ppx * ix + py * jx + tx;
		py=ppx * iy + py * jy + ty;
	}
	
	vertices[0].Position.X=px;vertices[0].Position.Y=py;
	vertices[0].Color=color;
	
	px=x2;
	py=y2;
	
	if( tformed ){
		float ppx=px;
		px=ppx * ix + py * jx + tx;
		py=ppx * iy + py * jy + ty;
	}
	
	vertices[1].Position.X=px;vertices[1].Position.Y=py;
	vertices[1].Color=color;
	
	px=x3;
	py=y3;
	
	if( tformed ){
		float ppx=px;
		px=ppx * ix + py * jx + tx;
		py=ppx * iy + py * jy + ty;
	}
	
	vertices[2].Position.X=px;vertices[2].Position.Y=py;
	vertices[2].Color=color;

	primCount=n;
	
	Flush();
	
	return 0;
}


But I am unsure as to how to make use of this function from within Monkey.. ? Is it easy to explain?

Ta :)


Raz(Posted 2012) [#2]
I did some digging and was surprised with how easy it was. I guess that's a testament to the way Monkey does things :)