Skip to content

Commit

Permalink
implemented vec4 parameters and tracks
Browse files Browse the repository at this point in the history
  • Loading branch information
lshoek committed Sep 15, 2022
1 parent fe7e6b0 commit ef86786
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 11 deletions.
3 changes: 2 additions & 1 deletion modules/napparameter/src/parametervec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ DEFINE_VECTOR_PARAMETER(nap::ParameterVec2)
DEFINE_VECTOR_PARAMETER(nap::ParameterIVec2)
DEFINE_VECTOR_PARAMETER(nap::ParameterVec3)
DEFINE_VECTOR_PARAMETER(nap::ParameterIVec3)

DEFINE_VECTOR_PARAMETER(nap::ParameterVec4)
DEFINE_VECTOR_PARAMETER(nap::ParameterIVec4)
2 changes: 2 additions & 0 deletions modules/napparameter/src/parametervec.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,10 @@ namespace nap

using ParameterVec2 = ParameterVec<glm::vec2>;
using ParameterVec3 = ParameterVec<glm::vec3>;
using ParameterVec4 = ParameterVec<glm::vec4>;
using ParameterIVec2 = ParameterVec<glm::ivec2>;
using ParameterIVec3 = ParameterVec<glm::ivec3>;
using ParameterIVec4 = ParameterVec<glm::ivec4>;


//////////////////////////////////////////////////////////////////////////
Expand Down
32 changes: 25 additions & 7 deletions modules/napsequence/src/sequenceservice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,21 @@ namespace nap {
// check what type of parameter is being used and create a track that fits the parameter
// ParameterVec2 = SequenceTrackCurveVec2
// ParameterVec3 = SequenceTrackCurveVec3
// ParameterVec4 = SequenceTrackCurveVec4
// ParameterFloat, ParameterLong, ParameterInt, ParameterBool & ParameterDouble = SequenceTrackCurveFloat
if(curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterVec2))
{
sequence_track = std::make_unique<SequenceTrackCurveVec2>();
}else if (curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterVec3))
}
else if (curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterVec3))
{
sequence_track = std::make_unique<SequenceTrackCurveVec3>();
}else if (curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterFloat) ||
}
else if (curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterVec4))
{
sequence_track = std::make_unique<SequenceTrackCurveVec4>();
}
else if (curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterFloat) ||
curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterLong) ||
curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterInt) ||
curve_output->mParameter.get()->get_type() == RTTI_OF(ParameterDouble) ||
Expand Down Expand Up @@ -239,11 +246,22 @@ namespace nap {
if(!errorState.check(registerAdapterFactoryFunc(RTTI_OF(SequenceTrackCurveVec4), [](const SequenceTrack& track,
SequencePlayerOutput& output,
const SequencePlayer& player) -> std::unique_ptr<SequencePlayerAdapter>
{
nap::Logger::info("adapter not yet implemented!");
return nullptr;
}), "Error registering adapter factory function"))
return false;
{
assert(track.get_type() == RTTI_OF(SequenceTrackCurveVec4)); // type mismatch
assert(output.get_type() == RTTI_OF(SequencePlayerCurveOutput)); // type mismatch

auto& curve_output = static_cast<SequencePlayerCurveOutput&>(output);

assert(curve_output.mParameter.get()->get_type() == RTTI_OF(ParameterVec4)); // type mismatch
if (curve_output.mParameter.get()->get_type() == RTTI_OF(ParameterVec4))
{
return std::make_unique<SequencePlayerCurveAdapter<glm::vec4, ParameterVec4, glm::vec4>>(track,
curve_output);
}

return nullptr;
}), "Error registering adapter factory function"))
return false;

return true;
}
Expand Down
6 changes: 5 additions & 1 deletion modules/napsequence/src/sequencetracksegmentevent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,8 @@ RTTI_END_CLASS

RTTI_BEGIN_CLASS(nap::SequenceTrackSegmentEventVec3)
RTTI_PROPERTY("Value", &nap::SequenceTrackSegmentEventVec3::mValue, nap::rtti::EPropertyMetaData::Default)
RTTI_END_CLASS
RTTI_END_CLASS

RTTI_BEGIN_CLASS(nap::SequenceTrackSegmentEventVec4)
RTTI_PROPERTY("Value", &nap::SequenceTrackSegmentEventVec4::mValue, nap::rtti::EPropertyMetaData::Default)
RTTI_END_CLASS
1 change: 1 addition & 0 deletions modules/napsequence/src/sequencetracksegmentevent.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ namespace nap
using SequenceTrackSegmentEventInt = SequenceTrackSegmentEvent<int>;
using SequenceTrackSegmentEventVec2 = SequenceTrackSegmentEvent<glm::vec2>;
using SequenceTrackSegmentEventVec3 = SequenceTrackSegmentEvent<glm::vec3>;
using SequenceTrackSegmentEventVec4 = SequenceTrackSegmentEvent<glm::vec4>;

//////////////////////////////////////////////////////////////////////////
// Template definitions
Expand Down
3 changes: 2 additions & 1 deletion modules/napsequencegui/src/sequencecurvetrackview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ namespace nap
{
{RTTI_OF(SequenceTrackCurveFloat), {{RTTI_OF(ParameterFloat), RTTI_OF(ParameterDouble), RTTI_OF(ParameterLong), RTTI_OF(ParameterInt), RTTI_OF(ParameterBool)}}},
{RTTI_OF(SequenceTrackCurveVec2), {{RTTI_OF(ParameterVec2)}}},
{RTTI_OF(SequenceTrackCurveVec3), {{RTTI_OF(ParameterVec3)}}}
{RTTI_OF(SequenceTrackCurveVec3), {{RTTI_OF(ParameterVec3)}}},
{RTTI_OF(SequenceTrackCurveVec4), {{RTTI_OF(ParameterVec4)}}}
};


Expand Down
27 changes: 27 additions & 0 deletions modules/napsequencegui/src/sequenceeventtrackview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -966,4 +966,31 @@ namespace nap
<< segment_event.mValue.z << ")";
drawList->AddText({topLeft.x + x, topLeft.y}, color, string_stream.str().c_str());
}


//////////////////////////////////////////////////////////////////////////
// glm::vec4 event segment view specialization
//////////////////////////////////////////////////////////////////////////


template<>
bool SequenceEventTrackSegmentView<glm::vec4>::handleEditPopupContent(sequenceguiactions::Action& action)
{
auto* edit_action = action.getDerived<sequenceguiactions::EditingEventSegment<glm::vec4>>();
auto& value = static_cast<glm::vec4&>(edit_action->mValue);

return ImGui::InputFloat4("Value", &value.x);
}


template<>
void SequenceEventTrackSegmentView<glm::vec4>::drawEvent(const SequenceTrackSegment& segment, ImDrawList* drawList, const ImVec2& topLeft, float x, ImU32 color)
{
assert(segment.get_type().is_derived_from<SequenceTrackSegmentEventVec4>());
const auto& segment_event = static_cast<const SequenceTrackSegmentEventVec4&>(segment);
std::ostringstream string_stream;
string_stream << "(" << segment_event.mValue.x << ", " << segment_event.mValue.y << ", "
<< segment_event.mValue.z << ")";
drawList->AddText({ topLeft.x + x, topLeft.y }, color, string_stream.str().c_str());
}
}
5 changes: 4 additions & 1 deletion modules/napsequencegui/src/sequenceguiservice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@ namespace nap
if(!errorState.check(registerEventView<glm::vec3>(), "Error registering event view"))
return false;

if (!errorState.check(registerEventView<glm::vec4>(), "Error registering event view"))
return false;

// Register track types
if(!errorState.check(registerTrackTypeForView(RTTI_OF(SequenceTrackEvent), RTTI_OF(SequenceEventTrackView)),
"Error registering track view"))
Expand Down Expand Up @@ -321,6 +324,6 @@ namespace nap
mCurveColors[0] = mHigh4;
mCurveColors[1] = mHigh2;
mCurveColors[2] = mHigh1;
mCurveColors[3] = mHigh3;
mCurveColors[3] = mFro4;
}
}

0 comments on commit ef86786

Please sign in to comment.