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();
|
||||
}
|
||||
|
||||
static bool flip = true;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Editor_update()
|
||||
{
|
||||
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();
|
||||
|
||||
TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
||||
@ -430,7 +422,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
if (modifiers & EMGUI_KEY_ALT)
|
||||
{
|
||||
trackData->folded[getActiveTrack()] = true;
|
||||
trackData->tracks[getActiveTrack()].folded = true;
|
||||
Editor_update();
|
||||
return true;
|
||||
}
|
||||
@ -461,7 +453,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
if (modifiers & EMGUI_KEY_ALT)
|
||||
{
|
||||
trackData->folded[getActiveTrack()] = false;
|
||||
trackData->tracks[getActiveTrack()].folded = false;
|
||||
Editor_update();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -8,9 +8,8 @@ int TrackData_createGetTrack(TrackData* trackData, const char* name)
|
||||
if (index < 0)
|
||||
{
|
||||
index = sync_create_track(&trackData->syncData, name);
|
||||
trackData->colors[index] = TrackData_getNextColor(trackData);
|
||||
trackData->order[trackData->orderCount] = index;
|
||||
trackData->orderCount++;
|
||||
memset(&trackData->tracks[index], 0, sizeof(Track));
|
||||
trackData->tracks[index].color = TrackData_getNextColor(trackData);
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
struct sync_data syncData;
|
||||
uint32_t colors[EDITOR_MAX_TRACKS];
|
||||
bool folded[EDITOR_MAX_TRACKS];
|
||||
bool hidden[EDITOR_MAX_TRACKS];
|
||||
int order[EDITOR_MAX_TRACKS];
|
||||
int orderCount;
|
||||
Track tracks[EDITOR_MAX_TRACKS];
|
||||
Group groups[EDITOR_MAX_TRACKS];
|
||||
int activeTrack;
|
||||
int lastColor;
|
||||
int trackCount;
|
||||
char* editText;
|
||||
} TrackData;
|
||||
|
||||
|
||||
@ -139,7 +139,7 @@ static void renderInterpolation(const struct TrackInfo* info, struct sync_track*
|
||||
}
|
||||
|
||||
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;
|
||||
uint32_t borderColor = Emgui_color32(40, 40, 40, 255);
|
||||
struct sync_track* track = 0;
|
||||
const uint32_t color = info->trackData->colors[trackIndex];
|
||||
const uint32_t color = info->trackData->tracks[trackIndex].color;
|
||||
bool folded;
|
||||
|
||||
Emgui_radioButtonImage(g_arrow_left_png, g_arrow_left_png_len,
|
||||
g_arrow_right_png, g_arrow_right_png_len,
|
||||
EMGUI_LOCATION_MEMORY, Emgui_color32(255, 255, 255, 255),
|
||||
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)
|
||||
track = info->trackData->syncData.tracks[trackIndex];
|
||||
|
||||
@ -59,6 +59,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
||||
{
|
||||
int i;
|
||||
struct sync_track* track;
|
||||
Track* t;
|
||||
|
||||
// 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);
|
||||
printf("track_index %d\n", track_index);
|
||||
|
||||
t = &trackData->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
|
||||
{
|
||||
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[0] == '1')
|
||||
trackData->folded[track_index] = true;
|
||||
t->folded = true;
|
||||
}
|
||||
|
||||
// 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");
|
||||
|
||||
memset(temp, 0, sizeof(temp));
|
||||
sprintf(temp, "%d", trackData->colors[p]);
|
||||
sprintf(temp, "%d", trackData->tracks[p].color);
|
||||
|
||||
// setup the elements for the trak
|
||||
|
||||
mxmlElementSetAttr(track, "name", t->name);
|
||||
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)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user