Тема: Xors2D module
Показать сообщение отдельно
Старый 08.05.2014, 03:42   #1
Черный крыс
 
Сообщений: n/a
Xors2D module

Доброго!

Вобсчем презентую свой модуль для работы с 2-д графикой на БМаксе. По сути является более простой и продвинутой заменой стандартного Max2D.

итак поехали...


Type TImage Abstract
    Method Width:Int() Abstract
	
    Method Height:Int() Abstract
	
    Method SetHandle(x:Float, y:Float) Abstract
	
    Method PositionTexture(u:Float = 0.0, v:Float = 0.0) Abstract
	
    Method ScaleTexture(u:Float = 1.0, v:Float = 1.0) Abstract
	
    Method RotateTexture(angle:Float) Abstract
End Type

Думаю тут все ясно... это стандартный класс картинки. Текстуру картинки можно прокручивать/скейлить/ротэйтить.


Type TFont Extends TImage Abstract
    Method SetCharRect(char:Byte, x:Int, y:Int, w:Int, h:Int) Abstract
	
    Method SetCharKerning(kerning:Float) Abstract
	
    Method SetLineKerning(kerning:Float) Abstract
End Type

А вот тут интереснее... Это класс графического шрифта. Он расширен от картинки, поэтому имеет все свойства предка (например, шрифт можно отрисовать как простую картинку). Реагирует на все трансформации глобальной матрицы, можно установить индивидуально каждому глифу ширину/высоту/позицию на текстуре по обеим осям/отступы между буквами/строками.


Type TFontLoader Abstract
    Rem
      bbdoc: Функция загрузки графического шрифта
      about:
      Если загрузка шрифта прошла успешно, функция должна вернуть True.
    End Rem
    Method Load:Byte(font:TFont, stream:TStream) Abstract
End Type

Загрузчик шрифтов. При запуске программы в системе автоматом устанавливается дефолтный моноширинный шрифт и загрузчик шрифтов HGE.


Type TEmitter Extends TImage Abstract
    Method SetImage(image:TImage) Abstract
	
    Method Copy:TEmitter() Abstract

    Method SetIndepend(enable:Int = True) Abstract
	
    Method SetEmission(emission:Int) Abstract ' parts/sec
	
    Method SetLifeTime(time:Float, spread:Float = 0.0) Abstract
	
    Method SetG(grav:Float, spread:Float = 0.0) Abstract
    Method SetW(wind:Float, spread:Float = 0.0) Abstract
	
    Method SetLSpeed(speed:Float, spread:Float = 0.0) Abstract
    Method SetRSpeed(speed:Float, spread:Float = 0.0) Abstract
    Method SetTSpeed(speed:Float, spread:Float = 0.0) Abstract
	
    Method SetLAccel(accel:Float, spread:Float = 0.0) Abstract
    Method SetRAccel(accel:Float, spread:Float = 0.0) Abstract
    Method SetTAccel(accel:Float, spread:Float = 0.0) Abstract
	
    Method SetEndSize(size:Float, spread:Float = 0.0) Abstract
    Method SetEndColor(r:Float, g:Float, b:Float, a:Float, spread:Float = 0.0) Abstract
	
    Method Count:Int() Abstract
End Type

Это класс для работы с системой частиц. Пока не рекомендуется к использованию. Так как работа над ним еще не закончена.

--------------------------------------------------------------------------

Также из модуля выпилены многие ненужные возможности из Max2D.

* Оставлены только 2 бленда - альфа и лайт. Остальные выпилены в виду бестолковости.
* AutiMidHandle и AutoImageFlags - это теперь глобальные переменные.
* Оставлено 2 флага - FILTEREDIMAGE и MIPMAPPEDIMAGE
* Выпилина кривая работа с трансформациями. Теперь все происходит на основе стека.

то есть вместо функций SetRotation/Scale мы работаем с матрицей напрямую

Translate(x, y) - перенос
Scale(x, y) - отмасштабировать
Rotate(angle) - повернуть

Есть возможность оперировать с историей изменений мартицы.

PushMatrix() - сохранить
PopMatrix() - восстановить
LoadMatrix() - сбросить текущую матрицу в идентичность

Соответственно, изменился интерфейс отрисовки. Теперь он выглядит так : DrawImage(image:TImage, frame:Int = 0)

Что бы отрисовать картинку на курсоре мыши :

LoadMatrix()
Translate(MouseX(), MouseY())
DrawImage(image)

Для кого то может показаться геммороем, но такой способ отрисовки более грамотен чем тот, который был предложен мистером Сибли. Многие вещи будут реализовываться гораздо проще именно стеково-матричным способом.

В этом модуле отсутствует Max2D коллизия в виду ее тормознутости. Зато присутствует быстрый Image-mouse picking

Модуль полностью задокументирован на русском языке, поэтому особых сложностей вызвать не должен.

Работа над модулем продолжается...
Вложения
Тип файла: rar xors2d.mod.rar (2.63 Мб, 974 просмотров)

Последний раз редактировалось Черный крыс, 09.05.2014 в 06:29.
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (08.05.2014)