| Hi, apologies if this has been asked before - I did a search but couldn't find much relevant. Try running the following code and you'll spot the problem instantly; drawing lines gets screwed up when using setrotation (I want the rectangle to rotate). The drawing and rotating operations are performed in my drawObjects() function - any suggestions? 
 
 
SuperStrict
Graphics(640,480,0,60)
Global gx:Float = GraphicsWidth() 
Global gy:Float = GraphicsHeight()
Global dt:Float = 1.0 / 60.0      
Global player:Int = -1 
Type objType
    Field alive:Int
    Field x:Float, y:Float
    Field ang:Float
End Type
Global objArray:objType[]
player = createObj(0.0, 0.0, 0)
createObj(200.0, 200.0, 90)
' Main program loop
While Not KeyDown(KEY_ESCAPE)
    Cls
    objArray[1].ang = objArray[1].ang + 1
    drawObjects()
    Flip
Wend
End
' Creates an object in the game world
Function createObj:Int(x:Float, y:Float, ang:Float)
    ' Set up necessary integers
    Local i:Int
    Local j:Int = -1
    ' Find the first object in objArray that is not alive
    If Len(objArray) > 0
        For i = 0 To Len(objArray) - 1
            If objArray[i].alive = 0
                j = i
                Exit
            EndIf
        Next
    EndIf
    ' If such an object does not exist, extend the array
    If j = -1
        objArray = objArray[..Len(objArray) + 1]
        j = Len(objArray) - 1
        objArray[j] = New objType
    EndIf
    ' Set the necessary properties of the object
    objArray[j].alive = 1
    objArray[j].x     = x
    objArray[j].y     = y
    objArray[j].ang   = ang
    Return j
End Function
' Perform all drawing operations for objects
Function drawObjects:Int()
    ' Set up required integer counters
    Local i:Int
    ' If the player is defined, use it as the origin, otherwise (0,0)
    Local ox:Float = 0.0
    Local oy:Float = 0.0
    If Not ( player = -1 )
        ox = objArray[player].x - gx/2.0
        oy = objArray[player].y - gy/2.0
    EndIf
    ' Loop over all objects
    If Len(objArray) > 0
        For i = 0 To Len(objArray) - 1
            If objArray[i].alive = 1
                Local x:Float = objArray[i].x  ;  Local y:Float = objArray[i].y
                Local x1:Float = -4.0  ;  Local y1:Float = +8.0
                Local x2:Float = +4.0  ;  Local y2:Float = +8.0
                Local x3:Float = +4.0  ;  Local y3:Float = -8.0
                Local x4:Float = -4.0  ;  Local y4:Float = -8.0
                Local s:Float = Sin(objArray[i].ang)
                Local c:Float = Cos(objArray[i].ang)
                SetRotation(objArray[i].ang)
                DrawLine(x + x1 - ox, y - y1 - oy, x + x2 - ox, y - y2 - oy)
                DrawLine(x + x2 - ox, y - y2 - oy, x + x3 - ox, y - y3 - oy)
                DrawLine(x + x3 - ox, y - y3 - oy, x + x4 - ox, y - y4 - oy)
                DrawLine(x + x4 - ox, y - y4 - oy, x + x1 - ox, y - y1 - oy)
                SetRotation(0)
            EndIf
        Next
    EndIf
    Return 0
End Function
 
 |