Ejemplo n.º 1
0
// ----------------------------------------------------------------------------
//
AbstractAnimation* SceneMovementAnimatorParser( SimpleJsonParser parser, AnimationSignal signal, UIDArray actors ) {
    MovementAnimation movement;

    movement.m_movement_type = (MovementAnimationType)parser.get<unsigned>( "movement_type" );
    movement.m_speed = parser.get<unsigned>( "speed" );
    movement.m_dest_wait_periods = parser.get<unsigned>( "dest_wait_periods" );
    movement.m_home_wait_periods = parser.get<unsigned>( "home_wait_periods" );
    movement.m_group_size = parser.get<unsigned>( "group_size" );
    movement.m_positions = parser.get<unsigned>( "positions" );
    movement.m_run_once = parser.get<bool>( "run_once" );
    movement.m_backout_home_return = parser.get<bool>( "blackout_return" );
    movement.m_alternate_groups = parser.get<bool>( "alternate_groups" );
    movement.m_pan_start = parser.get<unsigned>( "pan_start_angle" );
    movement.m_pan_end = parser.get<unsigned>( "pan_end_angle" );
    movement.m_pan_increment = parser.get<unsigned>( "pan_increment" );
    movement.m_tilt_start = parser.get<unsigned>( "tilt_start_angle" );
    movement.m_tilt_end = parser.get<unsigned>( "tilt_end_angle" );
    movement.m_home_x = parser.get<float>( "home_x" );
    movement.m_home_y = parser.get<float>( "home_y" );
    movement.m_height = parser.get<float>( "height" );
    movement.m_fixture_spacing = parser.get<float>( "fixture_spacing" );
    movement.m_radius = parser.get<float>( "radius" );
    movement.m_head_number = parser.get<unsigned>( "head_number" );

    PARSER_LIST coordinates = parser.get<PARSER_LIST>("coordinates");

    for (PARSER_LIST::iterator it = coordinates.begin(); it != coordinates.end(); ++it ) {
        SimpleJsonParser& cparser =  (*it);
        unsigned pan = cparser.get<unsigned>( "pan" );
        unsigned tilt = cparser.get<unsigned>( "tilt" );
        movement.m_coordinates.push_back( FixtureCoordinate( pan, tilt ) );
    }

    return new SceneMovementAnimator( studio.getVenue()->allocUID(), signal, actors, movement );
}
Ejemplo n.º 2
0
// ----------------------------------------------------------------------------
//
MovementAnimation* VenueReader::read( TiXmlElement* self, MovementAnimation* movement )
{
    movement = new MovementAnimation();

    movement->m_movement_type = (MovementAnimationType)read_unsigned_attribute( self, "type" );
    movement->m_tilt_start = read_unsigned_attribute( self, "tilt_start_angle" );
    movement->m_tilt_end = read_unsigned_attribute( self, "tilt_end_angle" );
    movement->m_pan_start = read_unsigned_attribute( self,  "pan_start_angle" );
    movement->m_pan_end = read_unsigned_attribute( self, "pan_end_angle" );
    movement->m_pan_increment = read_unsigned_attribute( self, "pan_increment" );
    movement->m_speed = (BYTE)read_unsigned_attribute( self, "speed" );
    movement->m_home_wait_periods = read_unsigned_attribute( self, "home_wait_periods" );
    movement->m_dest_wait_periods = read_unsigned_attribute( self, "dest_wait_periods" );
    movement->m_group_size = read_unsigned_attribute( self, "group_size" );
    movement->m_positions = read_unsigned_attribute( self, "positions" );
    movement->m_alternate_groups = read_bool_attribute( self, "alternate_groups" );
    movement->m_backout_home_return = read_bool_attribute( self, "blackout_return" );
    movement->m_run_once = read_bool_attribute( self, "run_once" );
    movement->m_home_x = read_float_attribute( self, "home_x" );
    movement->m_home_y = read_float_attribute( self, "home_y" );
    movement->m_height = read_float_attribute( self, "height" );
    movement->m_fixture_spacing = read_float_attribute( self, "fixture_spacing" );
    movement->m_radius = read_float_attribute( self, "radius" );
    movement->m_head_number = read_unsigned_attribute( self, "head_number" );

    TiXmlElement* coordinates_element = self->FirstChildElement( "coordinate_list" );
    if ( coordinates_element ) {
        TiXmlElement* element = coordinates_element->FirstChildElement( "coordinate" );
        while ( element ) {
            UINT pan = read_unsigned_attribute( element, "pan" );
            UINT tilt = read_unsigned_attribute( element, "tilt" );

            movement->m_coordinates.push_back( FixtureCoordinate( pan, tilt ) );

            element = element->NextSiblingElement();
        }
    }

    return movement;
}
Ejemplo n.º 3
0
// ----------------------------------------------------------------------------
//
bool CoordinatesField::setValue( LPCSTR value ) {
    CString key( value );
    CoordinateArray coordinates_list;

    int curPos = 0;
    while ( true ) {
        CString resToken = key.Tokenize( _T(";"), curPos );
        if ( resToken.IsEmpty() )
            break;

        UINT pan, tilt;

        resToken.Trim();

        if ( sscanf_s( resToken, "%u,%u", &pan, &tilt ) != 2 )
            throw FieldException( "Enter coordinates in the form: pan,tilt;pan,tilt;..." );

        coordinates_list.push_back( FixtureCoordinate(pan,tilt) );
    }

    m_coordinates = coordinates_list;

    return InputField::setValue( value );
}