Common Knowledge

From Ciliz|W4

Эта небольшая статья содержит короткие факты по работе с движком.

Базовые требования

  1. Движок разрабатывается и тестируется под OS Debian. Пользователи Windows могут установить образ Debian через WSL.
  2. Не забудьте обновить компоненты Debian перед началом работы.
  3. Для работы с репозиторием вам понадобиться Git. За ссылкой на скачивание репозитория обращайтесь к команде W4.
  4. Перед первым запуском SDK, а также после крупных обновлений, необходимо запускать скрипт настройки пререквизитов командой ./w4 --prereq. После этого необходимо перезапустить систему (или инстанс). Затем выполните команду: npm -g install serve
  5. Для сборки проекта используйте следующие команды, находясь в каталоге w4-sdk-demo:
  • Удалить результаты предыдущей сборки: ./w4 --clean
  • Собрать проект: ./w4 --build

Тестовый запуск

В качестве базы для тестирования вы можете использовать следующий код:

#include "W4Framework.h"

W4_USE_UNSTRICT_INTERFACE

class W4TemplateGame : public w4::IGame
{
public:
    void onConfig() override
    {
        // todo: configure application behavior
    }
    void onStart() override
    {
        auto cam = render::getScreenCamera();
             cam->setWorldTranslation({0.f, 0, -25.f});
             cam->setFov(45.f);

        m_shape= Mesh::create::cube({5,5,5});
        m_shape->setMaterialInst(Material::getDefault()->createInstance());

        render::getRoot()->addChild(m_shape);

    }
    void onUpdate(float dt) override
    {
        m_shape->rotate(Rotator(dt, dt, dt));
    }
private:
    Mesh::sptr m_shape;
};
W4_RUN(W4TemplateGame)

В результате выполнения на экран выводится вращающийся куб.

Интерфейсы

Интерфейс IGame

virtual void onConfig()         
virtual void onStart()          
virtual void onUpdate(float dt) 
virtual void onExit()           
virtual void onPause()          
virtual void onResume()         
virtual void onLost()           
virtual void onRestore()

Базовый интерфейс камеры

void setFov(float v);
void setAspect(float v);
void setNear(float v);
void setFar(float v);
void setClearColor(const math::vec4& v);
void setClearMask(ClearMask v);