Рейтинг - 5.0 (7)

Рисование на экране с plugin-sdk.

В данной статье ознакомимся с рисованием в Plugin-SDK. Нам понадобятся следующие хедеры:

#include "plugin.h" 
#include "CSprite2d.h" 
#include "CTxdStore.h"

Мы разделим наш код на 3 части:

  • Инициализация (Выполняется при старте игры). Сюда мы поместим загрузку текстуры. Событие initRwEvent.
  • Рисование (Выполняется в цикле игры). Здесь будет вывод текстуры на экран. Событие drawingEvent.
  • Закрытие (Выполняется при закрытии игры). Сюда поместим удаление текстуры. Событие shutdownRwEvent.

Для работы с текстурой мы будет использовать модуль CSprite2d. Мы создадим переменную-обьект класса CSprite2d:

static CSprite2d mySprite;

Устанавливаем пространство имен plugin, чтобы не писать "plugin::"...

using namespace 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" 
using namespace plugin;

class TestPlugin {
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;

Теги: draw, рисование, plugin sdk

KiLLeR96   (03.10.13 14:30)
5+++. Хотелось бы еще урок по рисованию в пространстве(как,например, треугольник ХП над головами педов).

SHooZ   (04.07.14 03:28)
спрайты рисуются на настоящих координатах монитора?
Т.е. для конвертирование в стандартную для скриптинга систему нужно юзать

Код
int x = GetSystemMetrics(SM_CXSCREEN);  
  int y = GetSystemMetrics(SM_CYSCREEN);
  x /= 640.0;  
  y /= 420.0;  
  Speed.Draw(520.0*x, 370.0*y, 148.0, 148.0, CRGBA(255, 255, 255, 255));
 ?
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Как Вы относитесь к ситуации с OpenIV?
Всего ответов: 9
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Рекомендую
Реклама