oxygine editor - oxygine/oxygine-framework GitHub Wiki

oxygine-editor

Визуальный редактор актеров.

Общая структура

Список созданных классов

Под словом class здесь и далее (по аналогии с Adobe Flash) подразумевается отдельная созданная в редакторе сцена. Один класс может быть переиспользован несколько раз в других классах, например как MyButton используется в MainView и DialogView

Добавить/Удалить/Редактировать класс можно по нажатию правой кнопки мыши. Окно редактирования класса:

Assets Viewer

На этой панеле можно просматривать, выбирать и настраивать игровые ресурсы. А также делать drag and drop выбранной картинки в рабочую область редактора.

Scene Graph Viewer

Отображает созданную иерархию актеров в классе.

Поддерживается drag and drop.

Selected Actor Properties

Позволяет менять разные свойства выбранного актера.

Working Area

Рабочая область редактора Можно сделать drag and drop произвольной картинки на диски или ресурса из AssetsViewer Правой кнопкой мыши создать актера.

Основные настройки

При создании нового проекта первым делом нужно настроить пути (menu->File->Project Properties):

assets folder

Корневая папка с игровыми ресурсами - картинками, которые вы будете использовать в редакторе.

resources file

Генерируется при каждом сохранении проекта и описывает ресурсы из assets folder в стандартом oxygine формате ресурсов.

Пример:

<?xml version="1.0"?>
<resources>
	<!--This file was automatically generated by oxygine-editor. Don't change it!-->
	<atlas id="images/space">
		<set path="images/space" />
		<image id="images/space/solar_system_001" file="solar_system_001.png" />
		<image id="images/space/solar_system_002" file="solar_system_002.png" />
		<image id="images/space/solar_system_003" file="solar_system_003.png" />
		<image id="images/space/solar_system_004" file="solar_system_004.png" />
		<image id="images/space/sp" file="sp.jpg" />
		<image id="images/space/space" file="space.png" />
		<image id="images/space/star" file="star.png" />
	</atlas>
	<atlas id="images/ui">
		<set path="images/ui" />
		<image id="images/ui/box9" file="box9.png" guideX1="14" guideX2="48" guideY1="11" guideY2="42" horizontal="2" vertical="2" />
		<image id="images/ui/button" file="button.png" />
	</atlas>
</resources> 

Каждая папка - отдельная atlas группа.

data folder

Используется при генерации resources file, это путь относительно которого будут сохраняться файлы. Для начала можно брать такое же значение как assets folder.

scene file

Самый главный файл в формате xml, в котором будут хранится все созданные в редакторе элементы.

<?xml version="1.0"?>
<scenes version="2">
	<!--This file was automatically generated by oxygine-editor. Don't change it!-->
	<class>
		<Actor class="World" gencode="true" name="CustomView" size="960,640">
			<Sprite name="space" resanim="images/space/space.png" />
			<Sprite name="sun" pos="196.868,125" anchor="0.5,0.5125" resanim="images/space/solar_system_011.png" />
			<Sprite name="planet3" pos="198.488,123.309" anchor="-4.70756,-3.79614" resanim="images/space/solar_system_013.png" />
			<Sprite name="earth" pos="197.365,125.987" anchor="-0.892366,-0.478737" resanim="images/space/solar_system_002.png">
				<Sprite name="moon" pos="41.675,41.9354" scale="0.425,0.425" anchor="-1.18108,0.599097" resanim="images/space/solar_system_007.png" />
			</Sprite>
			<Sprite name="planet2" pos="200.346,126.94" anchor="-3.35011,-2.656" resanim="images/space/solar_system_010.png" />
			<Sprite name="planet1" pos="187.409,123.116" anchor="-2.38333,-1.61667" resanim="images/space/solar_system_012.png" />
		</Actor>
		<Actor class="MyButton" gencode="true" name="CustomView" size="108.471,49.6474">
			<Sprite name="button" pos="5.93103,6.87931" scale="0.497848,0.497848" resanim="images/ui/button.png" />
			<TextField name="txt" pos="8.01804,6.97592" size="97.7018,40.2702" input="false" text="Button" fontsize2scale="17" kerning="1" valign="3" halign="2" font="fonts/main" />
		</Actor>
		<Actor class="UiView" gencode="true" name="CustomView" size="960,640">
			<MyButton name="btn" pos="829.458,33.1559" />
			<TextField name="txt_score" pos="3,4" size="256,64" text="Score: 100" valign="3" halign="2" font="" />
		</Actor>
		<Actor class="MainView" gencode="true" name="CustomView" size="960,640">
			<World name="world" />
			<UiView name="ui" pos="1.23456,1.23456" input="false" />
		</Actor>
		<Actor class="DialogView" gencode="true" name="CustomView" size="269,258">
			<Box9Sprite name="background" pos="-1,3.5" color="8dd88cff" resanim="images/ui/box9.png" size="266,255" />
			<Sprite name="logo" pos="13,21" scale="2.95,2.775" resanim="images/space/solar_system_012.png" />
			<MyButton name="btn" pos="79,197.167" />
			<TextField name="title" pos="-3,5" size="271,48" text="Dialog Title" fontsize2scale="51" kerning="2" valign="4" halign="2" multiline="true" font="fonts/main" />
			<Sprite name="spr_41" pos="62,-310" size="128,128" resanim="" />
		</Actor>
	</class>
</scenes> 

generated code

Папка в которой будет сохраняться сгенерированный код для всех созданных в редакторе сцен.

Пример сгенерированного кода для DialogView:

/**
This file was automatically generated by oxygine-editor. Don't change it!
*/
//HEADER
#pragma once

#include "Sprite.h"
#include "ActorsFactory.h"
using namespace oxygine;

DECLARENS_SMART(oxygine, Box9Sprite, spBox9Sprite);
DECLARENS_SMART(oxygine, Sprite, spSprite);
DECLARENS_SMART(oxygine, TextField, spTextField);
DECLARE_SMART(DialogView, spDialogView);
DECLARE_SMART(MyButton, spMyButton);
//
class DialogView: public ActorX
{
public:
    FACTORY_ACTOR(DialogView, "DialogView");

    spBox9Sprite background;
    spSprite logo;
    spMyButton btn;
    spTextField title;
    spSprite spr_41;  
};

//CPP
/**
This file was automatically generated by oxygine-editor. Don't change it!
*/

#include "Serialize.h"

#include "Box9Sprite.h"
#include "Sprite.h"
#include "TextField.h"
#include "DialogView.h"
#include "MyButton.h"
using namespace oxygine;
using namespace pugi;

REGISTER_ACTOR(DialogView);
void DialogView::__init()
{    
    background = safeCast<Box9Sprite*>(_findDescendant("background"));    
    logo = safeCast<Sprite*>(_findDescendant("logo"));    
    btn = safeCast<MyButton*>(_findDescendant("btn"));    
    title = safeCast<TextField*>(_findDescendant("title"));    
    spr_41 = safeCast<Sprite*>(_findDescendant("spr_41"));    
};
⚠️ **GitHub.com Fallback** ⚠️