Инициализация (Выполняется при старте игры). Сюда мы поместим загрузку текстуры. Событие initRwEvent.
Рисование (выполняется в цикле игры). Здесь будет вывод текстуры на экран. Событие drawingEvent.
Закрытие (выполняется при закрытии игры). Сюда поместим удаление текстуры. Событие shutdownRwEvent.
Для работы с текстурой мы будет использовать модуль CSprite2d. Мы создадим переменную-объект класса CSprite2d:
static CSprite2d mySprite;
Устанавливаем пространство имен plugin, чтобы не писать plugin::...
usingnamespace plugin;
Рассмотрим код, который мы добавляем в события.
Events::initRwEvent += [] { // Добавляем новый слот для нашего txd int txd = CTxdStore::AddTxdSlot("mytxd"); // Загружаем наш txd в выделенный слот CTxdStore::LoadTxd(txd,"MODELS\\MYTXD.TXD"); // Увеличиваем счётчик использований для созданного txd CTxdStore::AddRef(txd); // Сохраняем текущий txd CTxdStore::PushCurrentTxd(); // Устанавливаем наш txd как текущий CTxdStore::SetCurrentTxd(txd); // Назначаем текстру нашему спрайту mySprite.SetTexture("tex","texA"); // Восстанавливаем сохранённый txd CTxdStore::PopCurrentTxd();};
Для установки текстуры спрайту, нам нужно установить txd, в котором находится нужная текстура, как текущий. Поэтому мы сохраняем поточный текущий txd, а после установки текстуры спрайту - восстанавливаем его.
Отрисовка:
Events::drawingEvent += [] { // Рисуем наш спрайт mySprite.Draw(20.0,20.0,200.0,200.0,CRGBA(255,255,255,255));};
Удаление:
Events::shutdownRwEvent += [] { // Удаляем наш спрайт mySprite.Delete(); // Удаляем наш txd CTxdStore::RemoveTxdSlot(CTxdStore::FindTxdSlot("mytxd"));};
Весь код:
#include"plugin.h"#include"CSprite2d.h"#include"CTxdStore.h"// Используем пространство имен "plugin" usingnamespace plugin;classTestPlugin {public:TestPlugin() { // Переменная-объект спрайта static CSprite2d mySprite; Events::initRwEvent += [] { // Добавляем новый слот для нашего txd int txd = CTxdStore::AddTxdSlot("mytxd"); // Загружаем наш txd в выделенный слот CTxdStore::LoadTxd(txd,"MODELS\\MYTXD.TXD"); // Увеличиваем счётчик использований для созданного txd CTxdStore::AddRef(txd); // Сохраняем текущий txd CTxdStore::PushCurrentTxd(); // Устанавливаем наш txd как текущий CTxdStore::SetCurrentTxd(txd); // Назначаем текстру нашему спрайту mySprite.SetTexture("tex","texA"); // Восстанавливаем сохранённый txd CTxdStore::PopCurrentTxd(); }; Events::shutdownRwEvent += [] { // Удаляем наш спрайт mySprite.Delete(); // Удаляем наш txd CTxdStore::RemoveTxdSlot(CTxdStore::FindTxdSlot("mytxd")); }; Events::drawingEvent += [] { // Рисуем наш спрайт mySprite.Draw(20.0,20.0,200.0,200.0,CRGBA(255,255,255,255)); }; }} test;