mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
added textinput for envelopes
This commit is contained in:
parent
68db1c1113
commit
c98d8e3a63
|
@ -4350,6 +4350,15 @@ void CEditor::RenderEnvelopeEditor(CUIRect View)
|
||||||
}
|
}
|
||||||
|
|
||||||
// render handles
|
// render handles
|
||||||
|
|
||||||
|
|
||||||
|
// keep track of last Env
|
||||||
|
static void* s_pID = 0;
|
||||||
|
|
||||||
|
// chars for textinput
|
||||||
|
static char s_aStrCurTime[32] = "0.000";
|
||||||
|
static char s_aStrCurValue[32] = "0.000";
|
||||||
|
|
||||||
{
|
{
|
||||||
int CurrentValue = 0, CurrentTime = 0;
|
int CurrentValue = 0, CurrentTime = 0;
|
||||||
|
|
||||||
|
@ -4431,6 +4440,8 @@ void CEditor::RenderEnvelopeEditor(CUIRect View)
|
||||||
Selection.clear();
|
Selection.clear();
|
||||||
Selection.add(i);
|
Selection.add(i);
|
||||||
UI()->SetActiveItem(pID);
|
UI()->SetActiveItem(pID);
|
||||||
|
// track it
|
||||||
|
s_pID = pID;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove point
|
// remove point
|
||||||
|
@ -4447,10 +4458,31 @@ void CEditor::RenderEnvelopeEditor(CUIRect View)
|
||||||
m_pTooltip = "Left mouse to drag. Hold ctrl to be more precise. Hold shift to alter time point aswell. Right click to delete.";
|
m_pTooltip = "Left mouse to drag. Hold ctrl to be more precise. Hold shift to alter time point aswell. Right click to delete.";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(UI()->ActiveItem() == pID || UI()->HotItem() == pID)
|
if(pID == s_pID && (Input()->KeyPressed(KEY_RETURN) || Input()->KeyPressed(KEY_KP_ENTER)))
|
||||||
|
{
|
||||||
|
if(i != 0)
|
||||||
|
{
|
||||||
|
pEnvelope->m_lPoints[i].m_Time = str_tofloat(s_aStrCurTime) * 1000.0f;
|
||||||
|
|
||||||
|
if(pEnvelope->m_lPoints[i].m_Time < pEnvelope->m_lPoints[i-1].m_Time)
|
||||||
|
pEnvelope->m_lPoints[i].m_Time = pEnvelope->m_lPoints[i-1].m_Time + 1;
|
||||||
|
if(i+1 != pEnvelope->m_lPoints.size() && pEnvelope->m_lPoints[i].m_Time > pEnvelope->m_lPoints[i+1].m_Time)
|
||||||
|
pEnvelope->m_lPoints[i].m_Time = pEnvelope->m_lPoints[i+1].m_Time - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pEnvelope->m_lPoints[i].m_Time = 0.0f;
|
||||||
|
|
||||||
|
pEnvelope->m_lPoints[i].m_aValues[c] = f2fx(str_tofloat(s_aStrCurValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(UI()->ActiveItem() == pID/* || UI()->HotItem() == pID*/)
|
||||||
{
|
{
|
||||||
CurrentTime = pEnvelope->m_lPoints[i].m_Time;
|
CurrentTime = pEnvelope->m_lPoints[i].m_Time;
|
||||||
CurrentValue = pEnvelope->m_lPoints[i].m_aValues[c];
|
CurrentValue = pEnvelope->m_lPoints[i].m_aValues[c];
|
||||||
|
|
||||||
|
// update displayed text
|
||||||
|
str_format(s_aStrCurTime, sizeof(s_aStrCurTime), "%.3f", CurrentTime/1000.0f);
|
||||||
|
str_format(s_aStrCurValue, sizeof(s_aStrCurValue), "%.3f", fx2f(CurrentValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_SelectedQuadEnvelope == m_SelectedEnvelope && m_SelectedEnvelopePoint == i)
|
if (m_SelectedQuadEnvelope == m_SelectedEnvelope && m_SelectedEnvelopePoint == i)
|
||||||
|
@ -4463,9 +4495,26 @@ void CEditor::RenderEnvelopeEditor(CUIRect View)
|
||||||
}
|
}
|
||||||
Graphics()->QuadsEnd();
|
Graphics()->QuadsEnd();
|
||||||
|
|
||||||
char aBuf[512];
|
static CUIRect s_ToolBar1;
|
||||||
str_format(aBuf, sizeof(aBuf),"%.3f %.3f", CurrentTime/1000.0f, fx2f(CurrentValue));
|
static CUIRect s_ToolBar2;
|
||||||
UI()->DoLabel(&ToolBar, aBuf, 10.0f, 0, -1);
|
|
||||||
|
s_ToolBar1.x = ToolBar.x;
|
||||||
|
s_ToolBar1.y = ToolBar.y;
|
||||||
|
s_ToolBar1.h = ToolBar.h;
|
||||||
|
s_ToolBar1.w = ToolBar.w / 2;
|
||||||
|
s_ToolBar1.VMargin(10.0f, &s_ToolBar1);
|
||||||
|
|
||||||
|
s_ToolBar2.x = ToolBar.x + ToolBar.w / 2;
|
||||||
|
s_ToolBar2.y = ToolBar.y;
|
||||||
|
s_ToolBar2.h = ToolBar.h;
|
||||||
|
s_ToolBar2.w = ToolBar.w / 2;
|
||||||
|
s_ToolBar2.VMargin(10.0f, &s_ToolBar2);
|
||||||
|
|
||||||
|
static float s_ValNumber = 0;
|
||||||
|
static float s_TimeNumber = 0;
|
||||||
|
|
||||||
|
DoEditBox(&s_ValNumber, &s_ToolBar1, s_aStrCurValue, sizeof(s_aStrCurValue), 10.0f, &s_ValNumber);
|
||||||
|
DoEditBox(&s_TimeNumber, &s_ToolBar2, s_aStrCurTime, sizeof(s_aStrCurTime), 10.0f, &s_TimeNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue