merge
This commit is contained in:
commit
67af924cb9
@ -16,15 +16,6 @@
|
||||
#include "../../sync/base.h"
|
||||
#include "../../sync/data.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(EMGUI_MACOSX)
|
||||
#define FONT_PATH "/Library/Fonts/"
|
||||
#elif defined(EMGUI_WINDOWS)
|
||||
#define FONT_PATH "C:\\Windows\\Fonts\\"
|
||||
#else
|
||||
#error "Unsupported platform"
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -137,6 +128,7 @@ static void drawStatus()
|
||||
const struct sync_track* track = tracks[active_track];
|
||||
int row = s_editorData.trackViewInfo.rowPos;
|
||||
int idx = key_idx_floor(track, row);
|
||||
|
||||
if (idx >= 0)
|
||||
{
|
||||
switch (track->keys[idx].type)
|
||||
@ -229,12 +221,14 @@ static void deleteArea(int rowPos, int track, int bufferWidth, int bufferHeight)
|
||||
|
||||
for (i = 0; i < bufferWidth; ++i)
|
||||
{
|
||||
size_t trackPos = track + i;
|
||||
struct sync_track* t;
|
||||
int trackPos = track + i;
|
||||
int trackIndex = trackPos;
|
||||
|
||||
if (trackPos >= track_count)
|
||||
continue;
|
||||
|
||||
size_t trackIndex = trackPos;
|
||||
struct sync_track* t = tracks[trackIndex];
|
||||
t = tracks[trackIndex];
|
||||
|
||||
for (j = 0; j < bufferHeight; ++j)
|
||||
{
|
||||
@ -354,7 +348,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
case EMGUI_ARROW_RIGHT:
|
||||
{
|
||||
int track = getActiveTrack(); track++;
|
||||
int track = getActiveTrack() + 1;
|
||||
int track_count = getTrackCount();
|
||||
|
||||
if (track >= track_count)
|
||||
@ -405,6 +399,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
const int buffer_height = s_copyData.bufferHeight;
|
||||
const int buffer_size = s_copyData.count;
|
||||
const int track_count = getTrackCount();
|
||||
int i, trackPos;
|
||||
|
||||
if (!s_copyData.entries)
|
||||
return false;
|
||||
@ -413,7 +408,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
deleteArea(row_pos, active_track, buffer_width, buffer_height);
|
||||
|
||||
for (int i = 0; i < buffer_size; ++i)
|
||||
for (i = 0; i < buffer_size; ++i)
|
||||
{
|
||||
const CopyEntry* ce = &s_copyData.entries[i];
|
||||
|
||||
@ -422,7 +417,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
assert(ce->keyFrame.row >= 0);
|
||||
assert(ce->keyFrame.row < buffer_height);
|
||||
|
||||
size_t trackPos = active_track + ce->track;
|
||||
trackPos = active_track + ce->track;
|
||||
if (trackPos < track_count)
|
||||
{
|
||||
size_t trackIndex = trackPos;
|
||||
@ -469,11 +464,12 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
for (row = selectTop; row <= selectBottom; ++row)
|
||||
{
|
||||
struct track_key newKey;
|
||||
int idx = sync_find_key(t, row);
|
||||
if (idx < 0)
|
||||
continue;
|
||||
|
||||
struct track_key newKey = t->keys[idx];
|
||||
newKey = t->keys[idx];
|
||||
newKey.value += bias_value;
|
||||
|
||||
sync_set_key(t, &newKey);
|
||||
@ -497,7 +493,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
is_editing = true;
|
||||
}
|
||||
|
||||
s_editBuffer[strlen(s_editBuffer)] = key;
|
||||
s_editBuffer[strlen(s_editBuffer)] = (char)key;
|
||||
s_editorData.trackData.editText = s_editBuffer;
|
||||
|
||||
return true;
|
||||
@ -508,14 +504,15 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
|
||||
if (key != 27)
|
||||
{
|
||||
const char* track_name;
|
||||
struct track_key key;
|
||||
struct sync_track* track = tracks[active_track];
|
||||
|
||||
key.row = row_pos;
|
||||
key.value = atof(s_editBuffer);
|
||||
key.value = (float)atof(s_editBuffer);
|
||||
key.type = 0;
|
||||
|
||||
struct sync_track* track = tracks[active_track];
|
||||
const char* track_name = track->name;
|
||||
track_name = track->name;
|
||||
|
||||
sync_set_key(track, &key);
|
||||
|
||||
@ -524,14 +521,13 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
RemoteConnection_sendSetKeyCommand(track_name, &key);
|
||||
}
|
||||
|
||||
handled_key = true;
|
||||
|
||||
is_editing = false;
|
||||
s_editorData.trackData.editText = 0;
|
||||
}
|
||||
|
||||
if (key == 'i')
|
||||
{
|
||||
struct track_key newKey;
|
||||
struct sync_track* track = tracks[active_track];
|
||||
int row = viewInfo->rowPos;
|
||||
|
||||
@ -540,7 +536,7 @@ bool Editor_keyDown(int key, int modifiers)
|
||||
return false;
|
||||
|
||||
// copy and modify
|
||||
struct track_key newKey = track->keys[idx];
|
||||
newKey = track->keys[idx];
|
||||
newKey.type = ((newKey.type + 1) % KEY_TYPE_COUNT);
|
||||
|
||||
sync_set_key(track, &newKey);
|
||||
|
||||
2
ogl_editor/src/External/mxml/config.h
vendored
2
ogl_editor/src/External/mxml/config.h
vendored
@ -66,7 +66,9 @@
|
||||
* Do we have threading support?
|
||||
*/
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#define HAVE_PTHREAD_H 1
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@ -127,19 +127,20 @@ static bool setBlocking(int sock, bool blocking)
|
||||
|
||||
bool RemoteConnection_createListner()
|
||||
{
|
||||
struct sockaddr_in sin;
|
||||
int yes = 1;
|
||||
|
||||
s_serverSocket = socket(AF_INET, SOCK_STREAM, 0);
|
||||
|
||||
if (s_serverSocket == INVALID_SOCKET)
|
||||
return false;
|
||||
|
||||
struct sockaddr_in sin;
|
||||
memset(&sin, 0, sizeof sin);
|
||||
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_addr.s_addr = INADDR_ANY;
|
||||
sin.sin_port = htons(1338);
|
||||
|
||||
int yes = 1;
|
||||
if (setsockopt(s_serverSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
|
||||
{
|
||||
perror("setsockopt");
|
||||
|
||||
@ -56,8 +56,11 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
int startX, int startY, int startPos, int endPos, int endSizeY,
|
||||
int trackId, int selectLeft, int selectRight, int selectTop, int selectBottom)
|
||||
{
|
||||
uint y;
|
||||
int y, y_offset;
|
||||
int size = min_track_size;
|
||||
uint32_t color = Emgui_color32(40, 40, 40, 255);
|
||||
|
||||
Emgui_drawBorder(color, color, startX, startY - 20, 160, 600);
|
||||
|
||||
if (track)
|
||||
{
|
||||
@ -78,10 +81,9 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
Emgui_setDefaultFont();
|
||||
}
|
||||
|
||||
uint32_t color = Emgui_color32(40, 40, 40, 255);
|
||||
Emgui_drawBorder(color, color, startX, startY - font_size * 2, size, endSizeY);
|
||||
|
||||
int y_offset = startY;
|
||||
y_offset = startY;// + font_size / 2;
|
||||
|
||||
if (startPos < 0)
|
||||
{
|
||||
@ -95,7 +97,10 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
{
|
||||
int offset = startX + 6;
|
||||
int idx = -1;
|
||||
|
||||
int fidx;
|
||||
enum key_type interpolationType;
|
||||
uint32_t color;
|
||||
bool selected;
|
||||
float value = 0.0f;
|
||||
|
||||
if (track)
|
||||
@ -103,10 +108,8 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
|
||||
// This is kinda crappy implementation as we will overdraw this quite a bit but might be fine
|
||||
|
||||
int fidx = idx >= 0 ? idx : -idx - 2;
|
||||
enum key_type interpolationType = (fidx >= 0) ? track->keys[fidx].type : KEY_STEP;
|
||||
|
||||
uint32_t color = 0;
|
||||
fidx = idx >= 0 ? idx : -idx - 2;
|
||||
interpolationType = (fidx >= 0) ? track->keys[fidx].type : KEY_STEP;
|
||||
|
||||
switch (interpolationType)
|
||||
{
|
||||
@ -137,7 +140,7 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
Emgui_drawText("---", offset, y_offset - font_size / 2, color);
|
||||
}
|
||||
|
||||
bool selected = (trackId >= selectLeft && trackId <= selectRight) && (y >= selectTop && y < selectBottom);
|
||||
selected = (trackId >= selectLeft && trackId <= selectRight) && (y >= selectTop && y < selectBottom);
|
||||
|
||||
if (selected)
|
||||
Emgui_fill(Emgui_color32(0x4f, 0x4f, 0x4f, 0x3f), startX, y_offset - font_size/2, size, font_size);
|
||||
@ -155,61 +158,65 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track
|
||||
|
||||
void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
{
|
||||
uint i = 0;
|
||||
struct sync_data* syncData = &trackData->syncData;
|
||||
const int sel_track = trackData->activeTrack;
|
||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||
int num_tracks;
|
||||
int max_render_tracks;
|
||||
int start_track = 0;
|
||||
int x_pos = 40;
|
||||
int end_track = 0;
|
||||
int i = 0;
|
||||
int adjust_top_size;
|
||||
int mid_screen_y ;
|
||||
int y_pos_row, end_row, y_end_border;
|
||||
|
||||
int selectLeft = emini(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectRight = emaxi(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectTop = emini(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
int selectBottom = emaxi(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
|
||||
// Calc to position the selection in the ~middle of the screen
|
||||
|
||||
const int adjust_top_size = 3 * font_size;
|
||||
const int mid_screen_y = (viewInfo->windowSizeY / 2) & ~(font_size - 1);
|
||||
const int y_pos_row = viewInfo->rowPos - (mid_screen_y / font_size);
|
||||
adjust_top_size = 3 * font_size;
|
||||
mid_screen_y = (viewInfo->windowSizeY / 2) & ~(font_size - 1);
|
||||
y_pos_row = viewInfo->rowPos - (mid_screen_y / font_size);
|
||||
|
||||
// TODO: Calculate how many channels we can draw given the width
|
||||
|
||||
int end_row = viewInfo->windowSizeY / font_size;
|
||||
int y_end_border = viewInfo->windowSizeY - 32; // adjust to have some space at the end of the screen
|
||||
end_row = viewInfo->windowSizeY / font_size;
|
||||
y_end_border = viewInfo->windowSizeY - 32; // adjust to have some space at the end of the screen
|
||||
|
||||
printRowNumbers(2, adjust_top_size, end_row, y_pos_row, font_size, 8, y_end_border);
|
||||
|
||||
if (syncData->num_tracks == 0)
|
||||
{
|
||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||
renderChannel(0, 0, -1, 40 + (i * 64), adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border,
|
||||
0, 0, 0, 0, 0);
|
||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||
Emgui_fill(color, 0, mid_screen_y + adjust_top_size, viewInfo->windowSizeX, font_size + 2);
|
||||
return;
|
||||
}
|
||||
|
||||
int selectLeft = mini(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectRight = maxi(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectTop = mini(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
int selectBottom = maxi(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
|
||||
int num_tracks = syncData->num_tracks;
|
||||
|
||||
int max_render_tracks = viewInfo->windowSizeX / min_track_size;
|
||||
num_tracks = syncData->num_tracks;
|
||||
max_render_tracks = viewInfo->windowSizeX / min_track_size;
|
||||
|
||||
if (num_tracks > max_render_tracks)
|
||||
num_tracks = max_render_tracks;
|
||||
|
||||
int start_track = 0;
|
||||
|
||||
if (sel_track > 3)
|
||||
start_track = sel_track - 3;
|
||||
|
||||
int x_pos = 40;
|
||||
|
||||
const int end_track = mini(start_track + num_tracks, syncData->num_tracks);
|
||||
end_track = emini(start_track + num_tracks, syncData->num_tracks);
|
||||
|
||||
for (i = start_track; i < end_track; ++i)
|
||||
{
|
||||
int editRow = -1;
|
||||
int size, editRow = -1;
|
||||
|
||||
if (sel_track == i && trackData->editText)
|
||||
editRow = viewInfo->rowPos;
|
||||
|
||||
int size = renderChannel(viewInfo, syncData->tracks[i], editRow, x_pos, adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border,
|
||||
size = renderChannel(viewInfo, syncData->tracks[i], editRow, x_pos, adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border,
|
||||
i, selectLeft, selectRight, selectTop, selectBottom);
|
||||
|
||||
if (sel_track == i)
|
||||
@ -223,7 +230,6 @@ void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
x_pos += size;
|
||||
}
|
||||
|
||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||
Emgui_fill(color, 0, mid_screen_y + adjust_top_size, viewInfo->windowSizeX, font_size + 1);
|
||||
Emgui_fill(Emgui_color32(127, 127, 127, 56), 0, mid_screen_y + adjust_top_size, viewInfo->windowSizeX, font_size + 1);
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,8 @@
|
||||
|
||||
static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
||||
{
|
||||
int track_index = 0;
|
||||
struct track_key k;
|
||||
int is_key, track_index = 0;
|
||||
//struct sync_track** tracks = trackData->syncData.tracks;
|
||||
mxml_node_t* node = rootNode;
|
||||
|
||||
@ -57,6 +58,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
||||
if (!strcmp("track", element_name))
|
||||
{
|
||||
int i;
|
||||
struct sync_track* track;
|
||||
|
||||
// TODO: Create the new track/channel here
|
||||
|
||||
@ -65,7 +67,7 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
||||
track_index = TrackData_createGetTrack(trackData, track_name);
|
||||
printf("track_index %d\n", track_index);
|
||||
|
||||
struct sync_track* track = trackData->syncData.tracks[track_index];
|
||||
track = trackData->syncData.tracks[track_index];
|
||||
|
||||
// If we already have this track loaded we delete all the existing keys
|
||||
|
||||
@ -90,12 +92,11 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
||||
const char* value = mxmlElementGetAttr(node, "value");
|
||||
const char* interpolation = mxmlElementGetAttr(node, "interpolation");
|
||||
|
||||
struct track_key k;
|
||||
k.row = atoi(row);
|
||||
k.value = (float)(atof(value));
|
||||
k.type = (atoi(interpolation));
|
||||
|
||||
int is_key = is_key_frame(track, k.row);
|
||||
is_key = is_key_frame(track, k.row);
|
||||
|
||||
assert(!is_key);
|
||||
sync_set_key(track, &k);
|
||||
@ -152,6 +153,8 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData)
|
||||
{
|
||||
mxml_node_t* xml;
|
||||
mxml_node_t* tracks;
|
||||
FILE* fp;
|
||||
size_t p;
|
||||
|
||||
struct sync_data* sync_data = &trackData->syncData;
|
||||
|
||||
@ -160,13 +163,14 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData)
|
||||
|
||||
mxmlElementSetAttr(tracks, "rows", "1000000"); // TODO: Fix me
|
||||
|
||||
for (size_t i = 0; i < sync_data->num_tracks; ++i)
|
||||
for (p = 0; p < sync_data->num_tracks; ++p)
|
||||
{
|
||||
const struct sync_track* t = sync_data->tracks[i];
|
||||
int i;
|
||||
const struct sync_track* t = sync_data->tracks[p];
|
||||
mxml_node_t* track = mxmlNewElement(tracks, "track");
|
||||
mxmlElementSetAttr(track, "name", t->name);
|
||||
|
||||
for (int i = 0; i < (int)t->num_keys; ++i)
|
||||
for (i = 0; i < (int)t->num_keys; ++i)
|
||||
{
|
||||
char temp0[256];
|
||||
char temp1[256];
|
||||
@ -192,7 +196,7 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData)
|
||||
}
|
||||
}
|
||||
|
||||
FILE* fp = fopen(path, "wt");
|
||||
fp = fopen(path, "wt");
|
||||
mxmlSaveFile(xml, fp, MXML_NO_CALLBACK);
|
||||
fclose(fp);
|
||||
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "Types.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static inline int maxi(int a, int b)
|
||||
static EMGUI_INLINE int maxi(int a, int b)
|
||||
{
|
||||
if (a > b)
|
||||
return a;
|
||||
@ -12,7 +14,7 @@ static inline int maxi(int a, int b)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static inline int mini(int a, int b)
|
||||
static EMGUI_INLINE int mini(int a, int b)
|
||||
{
|
||||
if (a < b)
|
||||
return a;
|
||||
|
||||
43
tundra.lua
43
tundra.lua
@ -1,3 +1,28 @@
|
||||
local macosx = {
|
||||
Env = {
|
||||
CPPDEFS = { "EMGUI_MACOSX" },
|
||||
CCOPTS = {
|
||||
-- "-Weverything",
|
||||
"-Wno-deprecated-declarations", -- TickCount issue no Mountain Lion (needs to be fixed)
|
||||
"-I.", "-DMACOSX", "-Wall",
|
||||
{ "-O0", "-g"; Config = "*-*-debug" },
|
||||
{ "-O3"; Config = "*-*-release" },
|
||||
},
|
||||
},
|
||||
|
||||
Frameworks = { "Cocoa" },
|
||||
}
|
||||
|
||||
local win32 = {
|
||||
Env = {
|
||||
GENERATE_PDB = "1",
|
||||
CCOPTS = {
|
||||
"/W4", "/I.", "/DWIN32", "/D_CRT_SECURE_NO_WARNINGS",
|
||||
{ "/Od"; Config = "*-*-debug" },
|
||||
{ "/O2"; Config = "*-*-release" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Build {
|
||||
Units = "units.lua",
|
||||
@ -5,21 +30,7 @@ Build {
|
||||
SyntaxExtensions = { "tundra.syntax.glob", "tundra.syntax.osx-bundle" },
|
||||
|
||||
Configs = {
|
||||
{
|
||||
Name = "macosx-clang",
|
||||
DefaultOnHost = "macosx",
|
||||
Tools = { "clang-osx" },
|
||||
Env = {
|
||||
LIBPATH = { "/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" },
|
||||
CPPDEFS = { "SDLROCKET_MACOSX" },
|
||||
CCOPTS = {
|
||||
{ "-g", "-O0" ; Config = { "*-gcc-debug", "*-clang-debug" } },
|
||||
{ "-g", "-O3" ; Config = { "*-clang-release" } }
|
||||
},
|
||||
CXXOPTS = {
|
||||
{ "-g", "-O0"; Config = "macosx-clang-debug" },
|
||||
},
|
||||
},
|
||||
},
|
||||
Config { Name = "macosx-clang", DefaultOnHost = "macosx", Inherit = macosx, Tools = { "clang-osx" } },
|
||||
Config { Name = "win32-msvc", DefaultOnHost = { "windows" }, Inherit = win32, Tools = { "msvc" } },
|
||||
},
|
||||
}
|
||||
|
||||
13
units.lua
13
units.lua
@ -97,7 +97,7 @@ Program {
|
||||
Sources = {
|
||||
FGlob {
|
||||
Dir = "ogl_editor/src",
|
||||
Extensions = { ".c", ".m" },
|
||||
Extensions = { ".c" },
|
||||
Filters = {
|
||||
{ Pattern = "macosx"; Config = "macosx-*-*" },
|
||||
{ Pattern = "windows"; Config = { "win32-*-*", "win64-*-*" } },
|
||||
@ -106,8 +106,6 @@ Program {
|
||||
},
|
||||
}
|
||||
|
||||
Default "editor"
|
||||
|
||||
local rocketBundle = OsxBundle
|
||||
{
|
||||
Depends = { "editor" },
|
||||
@ -120,6 +118,13 @@ local rocketBundle = OsxBundle
|
||||
},
|
||||
}
|
||||
|
||||
Default(rocketBundle)
|
||||
local native = require('tundra.native')
|
||||
|
||||
if native.platform == "macosx" then
|
||||
Default(rocketBundle)
|
||||
else
|
||||
Default "editor"
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user