; Quads Global QUADS_MAIN Global QUADS_CURRENT_CAMERA Global QUADS_GFX_WIDTH# Global QUADS_GFX_HEIGHT# Global QUADS_ZDIST#=1 Global QUADS_SCREEN_WIDTH# Global QUADS_SCREEN_HEIGHT# Global QUADS_SCREEN_ORIGIN_X# Global QUADS_SCREEN_ORIGIN_Y# Global QUADS_SCALE_RATIO_X# Global QUADS_SCALE_RATIO_Y# Global QUADS_POSITION_RATIO_X# Global QUADS_POSITION_RATIO_Y# Type Quad Field Sprite Field X#, Y# Field Width#, Height# End Type Function InitQuads(Camera, RefreshQuads=False) QUADS_CURRENT_CAMERA=Camera CameraRange Camera,.5,1000 QUADS_MAIN=CreatePivot(QUADS_CURRENT_CAMERA) QUADS_GFX_WIDTH=GraphicsWidth() QUADS_GFX_HEIGHT=GraphicsHeight() QUADS_SCREEN_WIDTH=2*QUADS_ZDIST QUADS_SCREEN_HEIGHT=((QUADS_GFX_HEIGHT/QUADS_GFX_WIDTH)*2)*QUADS_ZDIST QUADS_SCREEN_ORIGIN_X=-QUADS_SCREEN_WIDTH/2 QUADS_SCREEN_ORIGIN_Y=QUADS_SCREEN_HEIGHT/2 QUADS_SCALE_RATIO_X=(QUADS_SCREEN_WIDTH/2)/QUADS_GFX_WIDTH QUADS_SCALE_RATIO_Y=(QUADS_SCREEN_HEIGHT/2)/QUADS_GFX_HEIGHT QUADS_POSITION_RATIO_X=QUADS_SCREEN_WIDTH/QUADS_GFX_WIDTH QUADS_POSITION_RATIO_Y=QUADS_SCREEN_HEIGHT/QUADS_GFX_HEIGHT End Function Function ChangeCamera(Camera) HideEntity QUADS_CURRENT_CAMERA QUADS_CURRENT_CAMERA=Camera ShowEntity QUADS_CURRENT_CAMERA EntityParent QUADS_MAIN,0 PositionEntity QUADS_MAIN,EntityX#(Camera,1),EntityY#(Camera,1),EntityZ#(Camera,1) RotateEntity QUADS_MAIN,EntityPitch#(Camera,1),EntityYaw#(Camera,1),EntityRoll#(Camera,1) EntityParent QUADS_MAIN,QUADS_CURRENT_CAMERA CameraRange QUADS_CURRENT_CAMERA,.5,1000 End Function Function LoadQuad(Path$, Flags=0, Centred=0) Local Q.Quad=New Quad Local QuadImage=LoadImage(Path) Q\Width=ImageWidth(QuadImage) Q\Height=ImageHeight(QuadImage) FreeImage QuadImage Q\Sprite=LoadSprite(Path$, Flags) EntityParent Q\Sprite, QUADS_MAIN If Centred=0 Then HandleSprite Q\Sprite,-1,1 SpriteViewMode Q\Sprite, 2 EntityBlend Q\Sprite,1 ScaleSprite Q\Sprite, Q\Width*QUADS_SCALE_RATIO_X, Q\Height*QUADS_SCALE_RATIO_Y PositionEntity Q\Sprite, QUADS_SCREEN_ORIGIN_X, QUADS_SCREEN_ORIGIN_Y, QUADS_ZDIST Return Handle(Q) End Function Function LoadHUDMesh%(Path$) Local Q.Quad=New Quad Q\Sprite=LoadMesh(Path$) ScaleEntity Q\Sprite, QUADS_SCALE_RATIO_X, QUADS_SCALE_RATIO_Y,QUADS_SCALE_RATIO_X PositionEntity Q\Sprite, QUADS_SCREEN_ORIGIN_X, QUADS_SCREEN_ORIGIN_Y, QUADS_ZDIST Return Handle(Q) End Function Function CreateQuad(Width%,Height%) Local Q.Quad=New Quad Q\Sprite=CreateSprite(QUADS_MAIN) Q\Width=Width Q\Height=Height SpriteViewMode Q\Sprite, 1 ScaleSprite Q\Sprite, Q\Width*QUADS_SCALE_RATIO_X, Q\Height*QUADS_SCALE_RATIO_Y PositionEntity Q\Sprite, QUADS_SCREEN_ORIGIN_X, QUADS_SCREEN_ORIGIN_Y, QUADS_ZDIST Return Handle(Q) End Function Function PositionQuad(QuadHandle, X#, Y#) Local Q.Quad=Object.Quad(QuadHandle) Q\X=X Q\Y=Y PositionEntity Q\Sprite, QUADS_SCREEN_ORIGIN_X+X*QUADS_POSITION_RATIO_X, QUADS_SCREEN_ORIGIN_Y-Y*QUADS_POSITION_RATIO_Y, QUADS_ZDIST End Function Function PositionQuadP(QuadHandle, X#, Y#) Local Q.Quad=Object.Quad(QuadHandle) X=(X/100)*GraphicsWidth() Y=(Y/100)*GraphicsHeight() PositionEntity Q\Sprite, QUADS_SCREEN_ORIGIN_X+X*QUADS_POSITION_RATIO_X, QUADS_SCREEN_ORIGIN_Y-Y*QUADS_POSITION_RATIO_Y, QUADS_ZDIST End Function Function MoveQuad(QuadHandle, X#, Y#) Local Q.Quad=Object.Quad(QuadHandle) Q\X=Q\X+X Q\Y=Q\Y+Y MoveEntity Q\Sprite, X*QUADS_POSITION_RATIO_X, -Y*QUADS_POSITION_RATIO_Y, 0 End Function Function ScaleQuad(QuadHandle, ScaleX#, ScaleY#) Local Q.Quad=Object.Quad(QuadHandle) ScaleSprite Q\Sprite, Q\Width*QUADS_SCALE_RATIO_X*ScaleX, Q\Height*QUADS_SCALE_RATIO_Y*ScaleY End Function Function ResizeQuad(QuadHandle, Width#, Height#) Local Q.Quad=Object.Quad(QuadHandle) Select EntityClass(Q\Sprite) Case "Sprite" ScaleSprite Q\Sprite, QUADS_SCALE_RATIO_X*Width, QUADS_SCALE_RATIO_Y*Height Case "Mesh" ScaleEntity Q\Sprite, QUADS_SCALE_RATIO_X*Width,QUADS_SCALE_RATIO_Y*Height,QUADS_SCALE_RATIO_X*Width End Select End Function Function ResizeQuadP(QuadHandle, Width#, Height#) Local Q.Quad=Object.Quad(QuadHandle) Select EntityClass(Q\Sprite) Case "Sprite" ScaleSprite Q\Sprite, QUADS_SCALE_RATIO_X*(Width/100)*GraphicsWidth(), QUADS_SCALE_RATIO_Y*(Height/100)*GraphicsHeight() Case "Mesh" ScaleEntity Q\Sprite, QUADS_SCALE_RATIO_X*(Width/100)*GraphicsWidth(), QUADS_SCALE_RATIO_Y*(Height/100)*GraphicsHeight(), QUADS_SCALE_RATIO_X*(Width/100)*GraphicsWidth() End Select End Function Function QuadBlend(QuadHandle, Blend%) Local Q.Quad=Object.Quad(QuadHandle) EntityBlend Q\Sprite,Blend% End Function Function QuadTexture(QuadHandle, Texture) Local Q.Quad=Object.Quad(QuadHandle) EntityTexture Q\Sprite,Texture End Function Function QuadOrder(QuadHandle, Order#) Local Q.Quad=Object.Quad(QuadHandle) EntityOrder Q\Sprite,Order# End Function Function QuadAlpha(QuadHandle, Alpha#) Local Q.Quad=Object.Quad(QuadHandle) EntityAlpha Q\Sprite,Alpha# End Function Function QuadColor(QuadHandle, R%,G%,B%) Local Q.Quad=Object.Quad(QuadHandle) EntityColor Q\Sprite,R,G,B End Function Function HideQuad(QuadHandle) Local Q.Quad=Object.Quad(QuadHandle) HideEntity Q\Sprite End Function Function ShowQuad(QuadHandle) Local Q.Quad=Object.Quad(QuadHandle) ShowEntity Q\Sprite End Function Function ClearQuads() For Q.Quad=Each Quad Delete Q Next End Function