forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   TileMap и матрица трансформации (http://forum.boolean.name/showthread.php?t=4467)

jimon 16.09.2007 20:58

TileMap и матрица трансформации
 
стандартный TileMap не потдерживает матрицу трансформации
т.е. ему пофиг на SetScale и SetRotation
мне пофиг на SetRotation но далеко не пофиг на SetScale
потому я зделал свою функцию-пародию на TileMap
вот она

Код:

Function jTileImage( image:TImage,x#=0,y#=0,frame%=0 )
        Local iframe:TImageFrame=image.Frame(frame)
        If Not iframe Return
       
        Local scx#,scy#
        GetScale(scx,scy)
       
        Local w# = image.width * scx
        Local h# = image.height * scy
       
        Local ox#,oy#,vw%,vh%,vox%,voy%
        GetViewport (vox,voy,vw,vh)
        ox = vox - w + 1
        oy = voy - h + 1
       
        Local px#,py#
        GetOrigin(px,py)
       
        px = x + px - image.handle_x * scx
        py = y + py - image.handle_y * scy
       
        Local fx# = px - Floor(px)
        Local fy# = py - Floor(py)
        Local tx# = Floor(px) - ox
        Local ty# = Floor(py) - oy

        If tx>=0 tx=tx Mod w + ox Else tx=w - -tx Mod w + ox
        If ty>=0 ty=ty Mod h + oy Else ty=h - -ty Mod h + oy

        Local vr# = vox + vw + w
        Local vb# = voy + vh + h

        Local iy# = ty
        While iy <= vb
                Local ix# = tx
                While ix <= vr
                        iframe.Draw 0,0,image.width,image.height,ix+fx,iy+fy
                        ix = ix + w
                Wend
                iy = iy + h
        Wend

End Function

в принципе добавив еще пару строчек кода - ее мона
сразу вставить в Max2D.mod

но для етого надо написать так чтобы она и с Rotation работала
у меня ща нету времени разбиратся где там на косинус надо
множить ... потому кто тут добрый ? напишите
чтобы размер картинки менялся не только по scx .. но и по углу
тоесть при 0 градусов размер картинки один к одному
при 45 размер увеличивается на sqr(3) / 2
при 90 размер один к одному

в общем в максе еще много чего можно править :)

dimanche13 18.09.2007 13:48

Re: TileMap и матрица трансформации
 
jimon, я уже где-то видел эту функцию )))

jimon 18.09.2007 18:41

Re: TileMap и матрица трансформации
 
dimanche13
ну разве что ты смотрел исходники моей игры :)
а видеть ее можно в mod/brl.mod/max2d.mod :)


Часовой пояс GMT +4, время: 17:58.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot