Completed <timeout> support, to use it with p3d use it along the lines:
<slide>
<layer>
<paragraph>Test</paragraph>
<timeout>
<idle_duration_before_timeout>3.0</idle_duration_before_timeout>
<idle_duration_before_action>5.0</idle_duration_before_action>
<key_starts_timeout_display>A</key_starts_timeout_display>
<key_dismiss_timeout_display>S</key_dismiss_timeout_display>
<key_run_action>D</key_run_action>
<timeout_jump slide="0" layer="1"></timeout_jump>
<timeout_event>w</timeout_event>
<timeout_broadcast_event>t</timeout_broadcast_event>
<image width="0.5">Images/lz.rgb</image>
</timeout>
</layer>
<layer>
<model>cow.osg</model>
</layer>
</slide>
This commit is contained in:
@@ -1467,17 +1467,84 @@ void ReaderWriterP3DXML::parseTimeout(osgPresentation::SlideShowConstructor& con
|
||||
}
|
||||
else if (cur->name == "timeout_jump")
|
||||
{
|
||||
OSG_NOTICE<<"Parsed Jump "<<std::endl;
|
||||
|
||||
osgPresentation::JumpData jumpData;
|
||||
if (getJumpProperties(cur, jumpData))
|
||||
{
|
||||
OSG_NOTICE<<"Timeout Jump "<<jumpData.relativeJump<<","<< jumpData.slideNum<<", "<<jumpData.layerNum<<std::endl;
|
||||
timeout->setJumpData(jumpData);
|
||||
timeout->setActionJumpData(jumpData);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "timeout_event")
|
||||
{
|
||||
osgPresentation::KeyPosition keyPosition;
|
||||
if (getKeyPositionInner( cur, keyPosition))
|
||||
{
|
||||
OSG_NOTICE<<"timeout event ["<<keyPosition._key<<"]"<<std::endl;
|
||||
timeout->setActionKeyPosition(keyPosition);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "timeout_broadcast_event")
|
||||
{
|
||||
osgPresentation::KeyPosition keyPosition;
|
||||
if (getKeyPositionInner( cur, keyPosition))
|
||||
{
|
||||
OSG_NOTICE<<"timeout broadcast event ["<<keyPosition._key<<"]"<<std::endl;
|
||||
timeout->setActionBroadcastKeyPosition(keyPosition);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "idle_duration_before_timeout")
|
||||
{
|
||||
std::istringstream iss(cur->getTrimmedContents());
|
||||
double duration;
|
||||
iss>>duration;
|
||||
if (!iss.fail())
|
||||
{
|
||||
OSG_NOTICE<<"timeout->setIdleDurationBeforeTimeoutDisplay("<<duration<<")"<<std::endl;
|
||||
timeout->setIdleDurationBeforeTimeoutDisplay(duration);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "idle_duration_before_action")
|
||||
{
|
||||
std::istringstream iss(cur->getTrimmedContents());
|
||||
double duration;
|
||||
iss>>duration;
|
||||
if (!iss.fail())
|
||||
{
|
||||
OSG_NOTICE<<"timeout->setIdleDurationBeforeTimeoutAction("<<duration<<")"<<std::endl;
|
||||
timeout->setIdleDurationBeforeTimeoutAction(duration);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "key_starts_timeout_display")
|
||||
{
|
||||
osgPresentation::KeyPosition keyPosition;
|
||||
if (getKeyPositionInner( cur, keyPosition) && keyPosition._key!=0)
|
||||
{
|
||||
OSG_NOTICE<<"timeout->setKeyStartsTimoutDisplay("<<keyPosition._key<<")"<<std::endl;
|
||||
timeout->setKeyStartsTimoutDisplay(keyPosition._key);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "key_dismiss_timeout_display")
|
||||
{
|
||||
osgPresentation::KeyPosition keyPosition;
|
||||
if (getKeyPositionInner( cur, keyPosition) && keyPosition._key!=0)
|
||||
{
|
||||
OSG_NOTICE<<"timeout->setKeyDismissTimoutDisplay("<<keyPosition._key<<")"<<std::endl;
|
||||
timeout->setKeyDismissTimoutDisplay(keyPosition._key);
|
||||
}
|
||||
}
|
||||
else if (cur->name == "key_run_action")
|
||||
{
|
||||
osgPresentation::KeyPosition keyPosition;
|
||||
if (getKeyPositionInner( cur, keyPosition) && keyPosition._key!=0)
|
||||
{
|
||||
OSG_NOTICE<<"timeout->setKeyRunTimoutAction("<<keyPosition._key<<")"<<std::endl;
|
||||
timeout->setKeyRunTimoutAction(keyPosition._key);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
constructor.popCurrentLayer(); // return the
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user