Skip to content

Документация

Максимилиан edited this page Aug 24, 2024 · 16 revisions

Для Rinegine версией около v0.0.2, проще говоря, устарело


Модуль defined

Данный модуль подключается по умолчанию, его нельзя отключить, в нём все важные определения.

defined.h

Заголовочный файл в котором подключаются необходимые библиотеки и определяются необходимые переменные, типы данных и пр.

Типы данных:

  • uint - unsigned int
  • uchar - unsigned char
  • uint8 - unsigned __int8
  • uint16 - unsigned __int16
  • int16 - __int16
  • lint - long int
  • luint - long unsigned int
    Так же тут определено using namespace std;. Для движка это необходимость (если убрать то не будет работать, а всё переделывать с std: я не хочу).

Функции:

  • DebugAdd(string) - добавляет в файл log.txt в папке Logs строку, переданную в функцию
  • template<class type> type* s_realloc(type*&, uint) - упрощённая функция realloc (type - ссылка на массив, размер которого необходимо увеличить; uint - размер блока памяти без учёта размера типа данных(!)) возвращает ссылку (указатель) на изменённый массив, не очищает передаваемый.
  • template<class type> type* s_calloc(uint) - упрощённая функция calloc (uint - размер блока без учёта размера типа данных(!)) возвращает ссылку на созданный массив.
  • template<class type> type* s_malloc(uint) - упрощённая функция malloc (uint - размер блока без учёта размера типа данных(!)) возвращает ссылку на созданный массив.
  • template<class type> void s_replace(type*&, uint) - упрощённая и улучшенная функция realloc (type - ссылка на массив, размер которого необходимо увеличить; uint - размер блока памяти без учёта размера типа данных(!)) ничего не возвращает, изменяет размер передаваемого массива предварительно очищая.
  • s_free(void*) - эквивалентен free() (задаток на будущее, может быть сделаю GC)
  • template<class type> void s_replace_raw(type*&, uint, uint) - упрощённая и улучшенная функция calloc (type - ссылка на массив, размер которого необходимо увеличить; первый uint - старый размер передаваемого массива (размер массива на момент передачи); второй uint - размер блока без учёта размера типа данных(!)). Ничего не возвращает, изменяет размер переданного массива путём создания дополнительного массива нужного размера функцией calloc, который заполняется циклом элементами из переданного массива, если размер нового массива меньше переданного, то значения элементов после последнего элемента нового массива удалятся(!).

Прочие типы данных (структуры, классы):

  • template<typename type> struct POINT2D - тип данных "двухмерная точка", type - тип данных, которые будут в этой структуре. Обращения к позициям точки происходит через .x и .y
  • template<typename type> struct POINT3D - тип данных "трёхмерная точка", обращения происходят через .x, .y, .z;
  • template<typename type> struct COLOR3D - тип данных "RGB цвет", обращение через .r, .g, .b.
  • template<typename type> struct COLOR4D - тип "RGBA цвет" (цвет с альфа каналом), обращения через те же, что и у COLOR3D + .a.

Переменные:

  • debug - переменная типа ofstream, лучше всего обращаться через функцию DebugAdd(string). Я понимаю, что вам может пригодиться данное название переменной, позже изменю.
  • prog - тип uint, не помню где используется (если вообще используется), лучше не трогать.
  • SHDsetTexture, SHDisCube, SHDface, SHDcounter, SHDlocation - типа int, нигде не используются.
  • rg_count_temp - тип данных необходим для "пре процессорной функции" (определённой через #define) rg_count.
  • RG_KEYS - тип int[350], массив позиций клавиш, соответствующих позициям GLFW.
  • RG_MOUSE - тип int[10], массив позиций кнопок мыши, соответствующих позициям GLFW.
  • RG_MainMonitor - тип GLFWmonitor, указывает на монитор, который сейчас используется.
  • RG_MainVidmode - тип const GLFWvidmode*, указывает на видеорежим glfw.

readfiles.h

Здесь определены функции чтения файлов и функции декодирования.

Функции:

  • wstring utf8_decode(const std::string &str) - получает обычную строку, возвращает "широкую" строку (формата utf8).
  • wstring WFileLoad(string path) - читает файл и возвращает его в виде широкой строки.
  • string FileLoad(string path) - читает файл и возвращает его в виде обычной строки.
  • char* FileLoadToChar(string path) - читает файл и возвращает его в виде указателя на массив символов (C-строки) (если используете, не забудьте очищать с помощью s_free(void*) или простой free()).

array.h

Здесь определён только один класс, RG_Array.

class RG_Array<typename type>

Конструкторы

  • RG_Array<type> array; - Пустой неинициализированный массив, инициализируется через :init()
  • RG_Array<type> array(uint size); - создаёт пустой массив размером size (вроде как он заполнен нулями)
  • RG_Array<type> array(uint size, type*arr); - создаёт массив размером size из C-массива
  • RG_Array<type> array(uint size, type arr); - создаёт массив размером size заполненным единственным значением arr

Методы

  • void init(uint size); (в дальнейшем методы будут указываться как :init(uint size);) - метод инициализации, эквивалентен инициализации вторым конструктором.
  • :init(uint size, type*arr) - метод инициализации, эквивалентен инициализации третьим конструктором.
  • :init(uint size, type arr) - метод инициализации, эквивалентен инициализации четвёртым конструктором. (будет в v0.0.3, в v0.0.2 его нет, вместо него служит метод :fullfill(uint size, type arr);)
  • :resize(uint size); - метод для изменения размера массива, меняет размер массива с сохранением содержимого (эквивалентен второму конструктору)
  • :fill(uint size, type*arr); - метод заполнения, заполняет массив с заменой содержимого, размер arr должен быть равен или больше чем size! (метод эквивалентен третьему конструктору)
  • :fullfill(uint size, type arr); - метод заполнения, заполняет массив одним значением arr с заменой содержимого (метод эквивалентен четвёртому конструктору).
  • :[uint i]; - возвращает i элемент из массива.
  • :=(RG_Array<type>ar); - изменяет размер массива на размер массива ar и меняет содержимое эквивалентное ему. Адреса двух массивов разные.
  • :get_arr(); - возвращает указатель на C-массив type типа.
  • :append(type a); - добавляет в конец массива значение a.
  • :append(); - увеличивает размер массива на 1.
  • :empty(); - возвращает true если массив не инициализирован, иначе false.
  • :size(); - возвращает размер массива типа uint.
  • :clear(); - если размер массива больше 0, очищает массив (если вы, с помощью free и get_arr очистите содержимое массива, фактический размер массива не изменится, имейте в виду!)
  • :print(); - выводит в консоль всё содержимое массива (если тип, хранящийся в массиве, может быть выведен в консоль с помощью потоков iostream)
  • :erase(uint id); - удаляет элемент id из массива изменяя размер массива.

Деструктор

~RG_Array(); вызывает метод clear(); (имейте в виду замечание метода clear();)

matrix.h

Здесь определены два класса, двух мерный и трёх мерный массив (трёх мерный массив нестабилен так как на данный момент не поддерживается и в нём МОЖЕТ быть утечка, им лучше не пользоваться или пользоваться в крайнем случае на свой страх и риск).

Классы:

Методы RG_Matrix<typename type>

  • :init(uint x, uint y) - инициализирует массив размером x*y.
  • :init(uint x, uint y, type*mat) и :reInit(uint x, uint y, type*mat) и :fill(uint x, uint y, type*mat) идентичны по функционалу. Заполняют матрицу размером x*y массивом mat (должен быть равен или больше по размеру заполняемой матрицы!).
    Так же вместо прошлых функций можно теми же аргументами создавать матрицу через скобочки (не обязательно), то-есть RG_Matrix matrix(x, y, mat);
  • :resize(uint x, uint y) - меняет размер матрицы (содержимое сохраняется).
  • :randomBoolFill(double porog,double max = 1) - может в будущем уберу. Случайны образом заполняет элементы матрицы 1 и 0, если случайное число больше porog, то 1, если меньше - 0. max - максимальное случайное число (содержимое матрицы полностью заменяется).
  • :randomBoolAddFill(double porog,double max = 1) - тот же самое что и предыдущий, но если значение элемента равно 1, содержимое не меняется.
  • randomAddFill(double porog, double max = 1) - заполняет все элементы матрицы случайным числом от 0 до max (porog не за что не отвечает, рудимент от предыдущих функций). Содержимое меняется в том случае, если на том месте, которое меняется, не 1.
  • :randomFill(double max = 1) - полностью меняет содержимое матрицы на случайное число от 0 до max.
  • :scale(uint a) - изменяет размер матрицы в a раз, не пробовал с уменьшением.
  • :smoothScale(int a) - гладко изменяет размер матрицы в a раз, нестабильна.
  • :[uint id] - возвращает элемент массива матрицы на id позиции (отсчёт массива для матрицы идёт с лева на права, в массиве размером 2 на 2 второй (третий) элемент будет находиться во второй строке в первом столбце).
  • :get(uint x, uint y) - все подсчёты в позиции делает за вас, возвращает элемент матрицы который находится по адресу x и y (столбец/строка).
  • :get(POINT2D<uint> pos) - позволяет обращаться таким образом matrix.get({1,1});.
  • :print() - выводит в консоль содержимое матрицы (не работает с <<).
  • :get() и :get_mat() - содержат одну и единственную строку, return matrix.get_arr(); (возвращает указатель на массив).
  • :empty() - возвращает true если пустой, иначе false.
  • :size(uint i) - возвращает размер матрицы, строки или столбца, если i == 0 то вернётся размер строки (ширина), если i == 1 то размер столбца (высота), любое другое число вернёт размер всей матрицы (width*height).
  • :size() - возвращает размер в виде POINT2D (.x = ширина (кол-во столбцов), .y = высота (кол-во строк)).
  • :clear() и деструктор - полностью очищает содержимое массива (матрицы).
  • :*=(RG_Matrix<type>& mat), :*=(type* mat) и :*(RG_Matrix<type> mat) - перемножают матрицы.
  • :place<class tttt>(POINT2D<int> pl,RG_Matrix<tttt>matr) - помещает в данную матрицу в позицию pl другую матрицу любого другого типа (совместимого с тем, что в основной матрице) другую матрицу matr.

RG_3DMatrix<typename type>

Всё то же самое, лень переписывать, может когда-нибудь. Нет print(), empty() функций случайного заполнения и увеличение размера матрицы (которые scale и smoothScale)

Функции:

  • type SpecialMatMulti<class type,class type2>(RG_Matrix<type>&mat1,RG_Matrix<type2>&mat2,int pos1, int pos2) - Перемножает две матрицы перевёрнутым способов (элемент x:y умножается с элементом y:x)
  • bool CountMatMinus(RG_Matrix<type>&mat1,RG_Matrix<type2>&mat2,int pos1, int pos2) - не знаю что делает, позже будет удалена.