Search the Community
Showing results for tags 'oil_refinery.cpp'.
-
Добрый день, сотрудники компании Unigine. Разбираюсь в реализации функционала основного интерфейса проекта "oil_refinery_sample". Обнаружил в проекте 2 файла "oil_refinery.cpp": Первый расположен в ".\source\oil_refinery.cpp", содержит вызов основного метода "main" С++-проекта, в котором: Инициализируется движок; Объявляются ряд глобальных имён (ссылок на методы); Запускается метод engine->main(...) движка; Этот исходник добавлен в дерево проекта и вопросов не вызывает. Второй расположен в ".\data\oil_refinery\oil_refinery.cpp". В дерево проекта он не добавлен, но содержит объявление всех Widget-в использующихся в основном интерфейсе проекте, логику их инициализации и обработчики взаимодействия пользователя с этими Widget-ами. При этом, в методе "init()" инициализируется переменная "interface" типа "UserInterface" на основе файла ".\data\oil_refinery\oil_refinery.ui", но после этого нигде в этом исходнике не используется. Вопросы: Я не нашёл места где в проекте добавляется исходник №2, т.е. в какой момент этот код компилируется и исполняется? Правильно-ли я понимаю, что наличие кода №2 является каким-то внутренним строгим правилом реализации механизма интерфейсов на движке? Т.е. движок запустит и исполнит его код (код исходника №2) в момент своей инициализации или вызова метода engine->main() вызываемых в основном методе main-проекта вызываемого в исходнике №1? Структура кода в исходнике №2 содержит методы init(), update(), render(), flush(), shutdown(), что наводит на мысль о некоторой системности структуры этого исходника. Скажите - это какой-то общий подход? Как можно понять его назначение, момент выполнения написанного в нём кода, его, возможно необходимой структуры (набор методов), возможно он требует обязательного наличия одноимённых файлов других типов (таких как *.ui и т.д.) и находится с ними в связке на уровне движка? Но, тогда, где это задаётся или описывается? Относительно структуры я вижу, что при создании проекта типа UnigineScript, методика которого описана по этой ссылке в пунктах 5 и 6 создаются строго определённые файлы с похожей структурой, но с расширением *.usc соответственно, можно положить, что этот-же подход применим и для проектов другого типа. Но при создании C++-проекта подобные файлы (с расширением *.cpp) отсутствуют, что сбивает с толку. Вообщем я понимаю, что не знаю чего-то фундаментального связанного с движком, если есть место где это описано, покажите пожалуйста. Моя задача на данный момент сводится к добавлению на экране пары checkbox-ов с возможностью выбора режимов (обучение или тестирование). В зависимости от выбора планирую менять логику отображения и функционирования элементов на подобии как это реализовано в самом проекте oil_refinery_sample в интерактивном режиме. Что мне для этого понадобиться (файлы с логикой, ui-файл и т.д.)? Как мне это реализовать? Прошу описать, конечно в общих чертах, для лучшего понимания относительно того как это реализовано в проекте "oil_refinery_sample".