unit gamecube; //a rectangle you can collide with/stand on {$mode objfpc}{$H+} interface uses Classes, SysUtils, gl,glu,glext, gameobject; type TGameCube=class(TGameobject) private w, h: single; protected procedure renderRelative; override; function getWidth:single; override; function getHeight:single; override; procedure setWidth(nv: single); override; procedure setHeight(nv: single); override; public color: record r,g,b: single; end; constructor create; end; implementation procedure TGameCube.renderRelative; var dw,dh: single; begin glDisable(GL_TEXTURE_2D); //just gonna be lazy for this last tutorial dw:=w / 2; dh:=h / 2; glTranslatef(x,-y,0); glColor3f(color.r,color.g,color.b); glBegin(GL_QUADS); // Each set of 4 vertices form a quad glVertex2f(dw*-1, dh*-1); glVertex2f(dw, dh*-1); glVertex2f(dw, dh); glVertex2f(dw*-1, dh); glEnd(); glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,1); end; function TGameCube.getWidth:single; begin result:=w; end; function TGameCube.getHeight:single; begin result:=h; end; procedure TGameCube.setWidth(nv: single); begin w:=nv; end; procedure TGameCube.setHeight(nv: single); begin h:=nv; end; constructor TGameCube.create; begin CollisionType:=ctUnrotatedRectangles; inherited create; end; end.