MATH: (24 функции)18.10.2013 cos - возвращает косинус аргумента sin - возвращает синус аргумента tg - возвращает тангенс аргумента ctg - возвращает котангенс аргумента arccos - возвращает арккосинус аргумента arcsin - возвращает арксинус аргумента arctg - возвращает арктангенс аргумента arcctg - возвращает арккотангенс аргумента sincos - возвращает синус и косинус аргумента abs - возвращает абсолютное значение аргумента frac - возвращает дробную часть аргумента trunc - возвращает целую часть дейсвительного аргумента ceil - округляет аргумент до наибольшего целого, превышающего или равного ему floor - округляет аргумент до наименьшего целого, меньшего или равного ему. round - возвращает ближайшее целое аргумента min - возвращает меньшее из чисел при савнении max - возвращает большее из чисел при савнении exp - экспонента lg - логарифм десятичный ln - логарифм натуральный sqr - квадрат числа sqrt - корень квадратный из числа distance - расстояние между двумя точками find_angle - угол поворота между двумя точками
UTILS: (10 функций)20.10.2013 int_to_str - преобразование целочисленного в строку str_to_int - преобразование строки в целочисленное float_to_str - преобразование дробного в строку str_to_float - преобразование строки в дробное rad_to_deg - из радиан в градусы. rad_to_cycle - из радиан в круговые. deg_to_rad - из градусов в радианы deg_to_cycle - из градусов в круговые cycle_to_rad - из круговых в радианы cycle_to_deg - из круговых в градусы
VECTORS: (15 функций)21.10.2013 vector_create - создание вектора из указанных координат vector_add - сложение векторов vector_sub - вычитание векторов vector_div - деление вектора на число vector_mul - умножение вектора на число vector_abs - взятие параметров по модулю vector_dot - скалярное произведение векторов vector_negativ - получение вектора инвертного данному vector_normalize - возвращает нормализированный вектор vector_length - получает длину вектора vector_inc - увеличение параметров вектора на единицу vector_dec - уменьшение параметров вектора на единицу vector_rotate - поворот вектора на определенный градус (в радианах) vector_equal - возвращает true если вектора равны vector_clamp - ограничивает компоненты вектора в заданном диапазоне
COLLISION: (50 функций)22.10.2013 point_create - создает точку line_create - создает линию quad_create - создает прямоугольник circle_create - создает окружность triangle_create - создает треугольник coord_in_rect - попадают ли координаты в периметр координат coord_in_quad - попадают ли координаты в прямоугольник coord_in_triangle - попадают ли координаты в треугольник coord_in_threepoint - попадают ли координаты в область между 3х точек coord_in_circle - попадают ли координаты в область окружности point_in_rect - попадает ли точка в периметр координат point_in_quad - попадает ли точка в прямоугольник point_in_triangle - попадает ли точка в треугольник point_in_threepoint - попадают ли точка в область между 3х точек point_in_circle - попадает ли точка в область окружности line_vs_line - пересекаются ли линии line_vs_rect - пересекается ли линия с периметром координат line_vs_quad - пересекается ли линия с прямоугольником line_vs_triangle - пересекается ли линия с треугольником line_vs_threepoint - пересекается ли линия с областью между 3х точек line_vs_circle - пересекается ли линия с окружностью line_in_rect - вписана ли линия в периметр координат line_in_quad - вписана ли линия в прямоугольник line_in_triangle - вписана ли линия в треугольник line_in_threepoint - вписана ли линия в область между 3х точек line_in_circle - вписана ли линия в область окружности rect_vs_rect - пересекается ли периметр координат с периметром координат rect_vs_quad - пересекается ли периметр координат с прямоугольником rect_vs_triangle - пересекается ли периметр координат с треугольником rect_vs_threepoint - пересекается ли периметр координат с областью между 3х точек rect_vs_circle - пересекается ли периметр координат с окружностью rect_in_recr - вписан ли периметр координат в периметр координат rect_in_quad - вписан ли периметр координат в прямоугольник rect_in_triangle - вписан ли периметр координат в треугольник rect_in_threepoint - вписан ли периметр координат в область между 3х точек rect_in_circle - вписан ли периметр координат в окружность quad_vs_quad - пересекается ли прямоугольник с прямоугольником quad_vs_triangle - пересекается ли прямоугольник с треугольником quad_vs_threepoint - пересекается ли прямоугольник с областью между 3х точек quad_vs_circle - пересекается ли прямоугольник с окружностью quad_in_quad - вписан ли прямоугольник в прямоугольник quad_in_triangle - вписан ли прямоугольник в треугольник quad_in_threepoint - вписан ли прямоугольник в область между 3х точек quad_in_circle - вписан ли прямоугольник в окружность circle_vs_triangle - пересекается ли окружность с треугольником circle_vs_threepoint - пересекается ли окружность с областью между 3х точек circle_vs_circle - пересекается ли окружность с окружностью circle_in_triangle - вписана ли окружность в треугольник circle_in_threepoint - вписана ли окружность в область между 3х точек circle_in_circle - вписана ли окружность в окружность
FILES: (13 функций)23.10.2013 file_open_read - открывает файл для чтения file_open_write - открывает файл для записи, если файл отсутствует создает его file_remove - удаляет указанный файл file_exists - проверяет существует ли файл file_close - закрывает все операции с файлом file_seek_set - смещение внутри файла от его начала file_seek_cur - смещение внутри файла от текущей позиции file_seek_end - смещение внутри файла от его конца file_pos - возвращает текущую позицию внутри файла file_read - читает данные из файла в буффер file_write - пишет данные буффера в файл file_size - возвращает размер файла file_setpath - устанавливает указанную директорию как текущую
список выше показывает "что сделано" сейчас в принципе осталось проверить работу коллизий (на верный результат)
реализовано создание окна и операций с файлами, но не вынесенно отдельно в модули, т.к. хочу вынести платформозависимую часть, а для этого придется написать модуль работы с памятью (на случай портирования). Отрисовку в отдельный модуль пока портировать не буду, надо с этим разобраться.
ну, а если конкретный ответ, на конкретный вопрос - то визуальщины нет еще (.
логично, а обработку скриптов в будующем вы предлагаете вешать потом на разное апи? по поводу Delphi (FPC) - так вообще сомнительное удовольствие тягать ради float_to_str (например) еще 70 кб кода из SysUtils.
PS: главное чтобы эти функции мне не мешали, а их присутствие никому не навредит. добавил функции по коллизиям (вылезли аж в 6 килобайт с учетом секции экспорта)
Добавлено (22.10.2013, 21:21) --------------------------------------------- для ини файлов наверно слижу апи функций с GM (мож еще пару добавлю, типа save и read/write_int)
ini_open(name) Открывает INI файл с именем name. Файл должен храниться в папке с игрой. ini_close() Закрывает открытый INI файл (нельзя открыть несколько INI файлов одновременно). ini_read_string(section,key,default) Возвращает строковое значение записи из секции section, с ключом key. Если такой пары ключ-значение не существует, то возвращается строка default. ini_read_real(section,key,default) Возвращает числовое значение записи из секции section, с ключом key. Если такой пары ключ-значение не существует, то возвращается число default. ini_write_string(section,key,value) Записывает в секцию section пару с ключом key и строковым значением value. ini_write_real(section,key,value) Записывает в секцию section пару с ключом key и числовым значением value. ini_key_exists(section,key) Возвращает true, если в секции section существует ключ key. ini_section_exists(section) Возвращает true, если секция с именем section существует. ini_key_delete(section,key) Удаляет ключ с именем key из секции с именем section. ini_section_delete(section) Удаляет секцию с именем section.
Добавлено (23.10.2013, 11:24) --------------------------------------------- реализовал операции с файлами (опять таки апи слизал с гм и дгле2) собственно набросал структуру движка, но вышло фэйлово - забыл про инпуты (клава, мышь), забыл про гуи, забыл про партиклы, в общем структура так себе вышла(
Добавлено (24.10.2013, 18:07) --------------------------------------------- следующее обновление будет в воскресенье, уезжаю на конференцию.
Добавлено (27.10.2013, 23:06) --------------------------------------------- прошу прощения, поздно сегодня приехал, что смогу сейчас допилю и апну тему на досуге!
Добавлено (27.10.2013, 23:38) --------------------------------------------- занимаюсь на текущий момент инициализацией окна, фуллскрином (будь он неладен) сделал вывод в лог файл и функцию инициализации параметров!!! ===[Sirius Game Engine / ver. 0.1 / build 7]=== Sirius:Engine:Init:Width( 800 ); Sirius:Engine:Init:Height( 600 ); Sirius:Engine:Init:FullScreen( true ); Sirius:Engine:Init:VerticalSynchronize( true ); Sirius:Engine:Init:DebugOut( true ); Sirius:Engine:Init:IDLE( true ); Sirius:Engine:Init:SystemCursor( true ); Sirius:Engine:Viewport:Mode( 1366 x 768 ) Sirius:Engine:Viewport:Set( 800x600 ) Sirius:Engine:Exit( )
Добавлено (30.10.2013, 08:31) --------------------------------------------- мда всё не так то просто) то класс не регистрировался, то контекст не создается, то резолюшен хондрит))) - разбираюсь! Решил делать сразу с поддержкой UTF-8, системные функции переделываю на юникод, как делать шрифт для них я без понятия - но как то делают ведь)
Сообщение отредактировал westerns - Среда, 30 Октября 2013, 09:03
Функции, дублирующие имеющиеся в языке нужны только если они хоть как-то завязаны на сам движок, упрощают его использование. Например функции работают с внутренними типами данных движка. В противном случае это лишний баласт. Они не только занимают место в библиотеке и перечне функций, но и работают медленнее, как минимум в 2 раза, поскольку сразу идет вызов функции движка а затем вызов стандартной.
Но в любом случае что и как должно быть в движке, решать автору, ибо скорее всего никто другой его использовать не будет. Windmill 2
Функции, дублирующие имеющиеся в языке нужны только если они хоть как-то завязаны на сам движок, упрощают его использование. Например функции работают с внутренними типами данных движка. В противном случае это лишний баласт. Они не только занимают место в библиотеке и перечне функций, но и работают медленнее, как минимум в 2 раза, поскольку сразу идет вызов функции движка а затем вызов стандартной.
в 2 раза) это +1 джамп по указателю? да ну) рассмотрим трудозатраты функции file_write - вызывает системную функцию WriteFile - которая: а) работает с памятью, так как пишет в буфер б) работает через драйвер т.к. надо учесть (1 - формат файловой системы, 2 - режим работы с HDD )
а вы говорите что в 2 раза медленнее из-за jmp по прямому переходу или даже пусть по far учитывая то что данные в стеке? )) еще раз ну-ну.
PS: понимаю что вы nilrem оговорились, я понял на самом деле суть претензии, дело не в том что эти функции пойдут на экспорт из библиотеки, дело в том чтобы за счет единого API читать текстуры и звуки при переходе на другие платформы.
суть в том чбобы не заменять потом при компиляции под линукс все WriteFile на FpWrite, это только задел на будующее.
я же не буду сейчас писать что Linux, iOS, Hauki, Wii )))) это же не серьезно, сами понимаете! логично и то, что под другими платформами и рендер уже будет не DX)
ибо скорее всего никто другой его использовать не будет.
согласен))
Добавлено (06.11.2013, 17:24) --------------------------------------------- Пока готовлюсь еще к одной конференции, почти сделал базовую инициализацию и передачу параметров. - Полноэкранность - Размеры - Положение- - Вертикальная синхронизация - Таймер ФПС
Как закончу так начну функции отрисовки примитивов осваивать. А там и скриншоты будут!