Data restructuring and preparing for group support
This commit is contained in:
parent
7245a2cd40
commit
d33792841c
@ -224,20 +224,12 @@ static void drawStatus()
|
|||||||
Emgui_setDefaultFont();
|
Emgui_setDefaultFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool flip = true;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void Editor_update()
|
void Editor_update()
|
||||||
{
|
{
|
||||||
Emgui_begin();
|
Emgui_begin();
|
||||||
|
|
||||||
Emgui_radioButtonImage("/Users/emoon/code/rocket/ogl_editor/data/images/arrow_left.png", 0,
|
|
||||||
"/Users/emoon/code/rocket/ogl_editor/data/images/arrow_right.png", 0,
|
|
||||||
EMGUI_LOCATION_FILE, Emgui_color32(255, 255, 255, 255), 10, 10, &flip);
|
|
||||||
|
|
||||||
rlog(R_INFO, "%d\n", flip);
|
|
||||||
|
|
||||||
drawStatus();
|
drawStatus();
|
||||||
|
|
||||||
TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
||||||
@ -430,7 +422,7 @@ bool Editor_keyDown(int key, int modifiers)
|
|||||||
|
|
||||||
if (modifiers & EMGUI_KEY_ALT)
|
if (modifiers & EMGUI_KEY_ALT)
|
||||||
{
|
{
|
||||||
trackData->folded[getActiveTrack()] = true;
|
trackData->tracks[getActiveTrack()].folded = true;
|
||||||
Editor_update();
|
Editor_update();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -461,7 +453,7 @@ bool Editor_keyDown(int key, int modifiers)
|
|||||||
|
|
||||||
if (modifiers & EMGUI_KEY_ALT)
|
if (modifiers & EMGUI_KEY_ALT)
|
||||||
{
|
{
|
||||||
trackData->folded[getActiveTrack()] = false;
|
trackData->tracks[getActiveTrack()].folded = false;
|
||||||
Editor_update();
|
Editor_update();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,9 +8,8 @@ int TrackData_createGetTrack(TrackData* trackData, const char* name)
|
|||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
index = sync_create_track(&trackData->syncData, name);
|
index = sync_create_track(&trackData->syncData, name);
|
||||||
trackData->colors[index] = TrackData_getNextColor(trackData);
|
memset(&trackData->tracks[index], 0, sizeof(Track));
|
||||||
trackData->order[trackData->orderCount] = index;
|
trackData->tracks[index].color = TrackData_getNextColor(trackData);
|
||||||
trackData->orderCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
|
|||||||
@ -12,16 +12,42 @@ enum
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
enum GroupType
|
||||||
|
{
|
||||||
|
GROUP_TYPE_TRACK,
|
||||||
|
GROUP_TYPE_GROUP,
|
||||||
|
};
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
typedef struct Track
|
||||||
|
{
|
||||||
|
uint32_t color;
|
||||||
|
bool hidden;
|
||||||
|
bool folded;
|
||||||
|
|
||||||
|
} Track;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Grouping (notice that even one track without group becomes it own group to keep the code easier)
|
||||||
|
|
||||||
|
typedef struct Group
|
||||||
|
{
|
||||||
|
enum GroupType type;
|
||||||
|
Track** track;
|
||||||
|
int trackCount;
|
||||||
|
} Group;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
typedef struct TrackData
|
typedef struct TrackData
|
||||||
{
|
{
|
||||||
struct sync_data syncData;
|
struct sync_data syncData;
|
||||||
uint32_t colors[EDITOR_MAX_TRACKS];
|
Track tracks[EDITOR_MAX_TRACKS];
|
||||||
bool folded[EDITOR_MAX_TRACKS];
|
Group groups[EDITOR_MAX_TRACKS];
|
||||||
bool hidden[EDITOR_MAX_TRACKS];
|
|
||||||
int order[EDITOR_MAX_TRACKS];
|
|
||||||
int orderCount;
|
|
||||||
int activeTrack;
|
int activeTrack;
|
||||||
int lastColor;
|
int lastColor;
|
||||||
|
int trackCount;
|
||||||
char* editText;
|
char* editText;
|
||||||
} TrackData;
|
} TrackData;
|
||||||
|
|
||||||
|
|||||||
@ -139,7 +139,7 @@ static void renderInterpolation(const struct TrackInfo* info, struct sync_track*
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (info->viewInfo)
|
if (info->viewInfo)
|
||||||
Emgui_fill(color, x + (size - 4), y - font_size_half, 2, (info->endSizeY - y) + font_size - 1);
|
Emgui_fill(color, x + (size - 8), y - font_size_half, 2, (info->endSizeY - y) + font_size - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -184,16 +184,16 @@ static int renderChannel(struct TrackInfo* info, int startX, int editRow, int tr
|
|||||||
const int endPos = info->endPos;
|
const int endPos = info->endPos;
|
||||||
uint32_t borderColor = Emgui_color32(40, 40, 40, 255);
|
uint32_t borderColor = Emgui_color32(40, 40, 40, 255);
|
||||||
struct sync_track* track = 0;
|
struct sync_track* track = 0;
|
||||||
const uint32_t color = info->trackData->colors[trackIndex];
|
const uint32_t color = info->trackData->tracks[trackIndex].color;
|
||||||
bool folded;
|
bool folded;
|
||||||
|
|
||||||
Emgui_radioButtonImage(g_arrow_left_png, g_arrow_left_png_len,
|
Emgui_radioButtonImage(g_arrow_left_png, g_arrow_left_png_len,
|
||||||
g_arrow_right_png, g_arrow_right_png_len,
|
g_arrow_right_png, g_arrow_right_png_len,
|
||||||
EMGUI_LOCATION_MEMORY, Emgui_color32(255, 255, 255, 255),
|
EMGUI_LOCATION_MEMORY, Emgui_color32(255, 255, 255, 255),
|
||||||
startX + 6, info->startY - (font_size + 5),
|
startX + 6, info->startY - (font_size + 5),
|
||||||
&info->trackData->folded[trackIndex]);
|
&info->trackData->tracks[trackIndex].folded);
|
||||||
|
|
||||||
folded = info->trackData->folded[trackIndex];
|
folded = info->trackData->tracks[trackIndex].folded;
|
||||||
|
|
||||||
if (info->trackData->syncData.tracks)
|
if (info->trackData->syncData.tracks)
|
||||||
track = info->trackData->syncData.tracks[trackIndex];
|
track = info->trackData->syncData.tracks[trackIndex];
|
||||||
|
|||||||
@ -59,6 +59,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct sync_track* track;
|
struct sync_track* track;
|
||||||
|
Track* t;
|
||||||
|
|
||||||
// TODO: Create the new track/channel here
|
// TODO: Create the new track/channel here
|
||||||
|
|
||||||
@ -69,24 +70,23 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
|||||||
track_index = TrackData_createGetTrack(trackData, track_name);
|
track_index = TrackData_createGetTrack(trackData, track_name);
|
||||||
printf("track_index %d\n", track_index);
|
printf("track_index %d\n", track_index);
|
||||||
|
|
||||||
|
t = &trackData->tracks[track_index];
|
||||||
track = trackData->syncData.tracks[track_index];
|
track = trackData->syncData.tracks[track_index];
|
||||||
|
|
||||||
if (!color_text && trackData->colors[track_index] == 0)
|
if (!color_text && t->color == 0)
|
||||||
{
|
{
|
||||||
trackData->colors[track_index] = TrackData_getNextColor(trackData);
|
t->color = TrackData_getNextColor(trackData);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (color_text)
|
if (color_text)
|
||||||
trackData->colors[track_index] = atoi(color_text);
|
t->color = atoi(color_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
trackData->folded[track_index] = false;
|
|
||||||
|
|
||||||
if (folded_text)
|
if (folded_text)
|
||||||
{
|
{
|
||||||
if (folded_text[0] == '1')
|
if (folded_text[0] == '1')
|
||||||
trackData->folded[track_index] = true;
|
t->folded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we already have this track loaded we delete all the existing keys
|
// If we already have this track loaded we delete all the existing keys
|
||||||
@ -191,13 +191,13 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData)
|
|||||||
mxml_node_t* track = mxmlNewElement(tracks, "track");
|
mxml_node_t* track = mxmlNewElement(tracks, "track");
|
||||||
|
|
||||||
memset(temp, 0, sizeof(temp));
|
memset(temp, 0, sizeof(temp));
|
||||||
sprintf(temp, "%d", trackData->colors[p]);
|
sprintf(temp, "%d", trackData->tracks[p].color);
|
||||||
|
|
||||||
// setup the elements for the trak
|
// setup the elements for the trak
|
||||||
|
|
||||||
mxmlElementSetAttr(track, "name", t->name);
|
mxmlElementSetAttr(track, "name", t->name);
|
||||||
mxmlElementSetAttr(track, "color", temp);
|
mxmlElementSetAttr(track, "color", temp);
|
||||||
mxmlElementSetAttr(track, "folded", trackData->folded[p] ? "1" : "0");
|
mxmlElementSetAttr(track, "folded", trackData->tracks[p].folded ? "1" : "0");
|
||||||
|
|
||||||
for (i = 0; i < (int)t->num_keys; ++i)
|
for (i = 0; i < (int)t->num_keys; ++i)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user