Esempio n. 1
0
// ----------------------------------------------------------------------------
//
SceneChannelFilter* VenueReader::read( TiXmlElement* self, SceneChannelFilter* animation )
{
    animation = new SceneChannelFilter();

    animation->m_uid = (UID)read_dword_attribute( self, "uid" );
    animation->m_name = read_text_element( self, "name" );
    animation->m_description = read_text_element( self, "description" );
    animation->m_filter = (ChannelFilter)read_unsigned_attribute( self, "filter");
    channel_t temp_channel = (channel_t)read_unsigned_attribute( self, "channel" );
    animation->m_step = read_unsigned_attribute( self, "step" );
    animation->m_amplitude = read_unsigned_attribute( self, "amplitude" );
    animation->m_offset = read_int_attribute( self, "offset" );

    TiXmlElement* channels = self->FirstChildElement( "channels" );
    if ( channels )
        animation->m_channels = read_value_list<ChannelList, channel_t>( channels, "channel" );
    else
        animation->m_channels.push_back( temp_channel );

    TiXmlElement* signal_element = self->FirstChildElement( "signal" );
    if ( signal_element ) {
        AnimationSignal* signal = read( signal_element, (AnimationSignal*)NULL );
        animation->m_signal = *signal;
        delete signal;
    }

    read_uids( self, "pfuids", animation->m_actors );

    return animation;
}
Esempio n. 2
0
// ----------------------------------------------------------------------------
//
SceneColorFader* VenueReader::read( TiXmlElement* self, SceneColorFader* animation )
{
    animation = new SceneColorFader();

    animation->m_uid = (UID)read_dword_attribute( self, "uid" );
    animation->m_fader_effect = (FaderEffect)read_unsigned_attribute( self, "fader_effect", FaderEffect::FADER_EFFECT_ALL );
    animation->m_strobe_neg_color = read_rgbw_attribute( self, "strobe_neg_color" );
    animation->m_strobe_pos_ms = read_unsigned_attribute( self, "strobe_pos_ms" );
    animation->m_strobe_neg_ms = read_unsigned_attribute( self, "strobe_neg_ms"  );
    animation->m_strobe_flashes = read_unsigned_attribute(self, "strobe_flashes", 1 );

    animation->m_name = read_text_element( self, "name" );
    animation->m_description = read_text_element( self, "description" );

    TiXmlElement* signal_element = self->FirstChildElement( "signal" );
    if ( signal_element ) {
        AnimationSignal* signal = read( signal_element, (AnimationSignal*)NULL );
        animation->m_signal = *signal;
        delete signal;
    }

    read_uids( self, "pfuids", animation->m_actors );

    read_colors( self, "custom_colors", animation->m_custom_colors );

    return animation;
}
Esempio n. 3
0
// ----------------------------------------------------------------------------
//
ScenePixelAnimator* VenueReader::read( TiXmlElement* self, ScenePixelAnimator* animation )
{
    animation = new ScenePixelAnimator();

    animation->m_uid = (UID)read_dword_attribute( self, "uid" );

    animation->m_name = read_text_element( self, "name" );
    animation->m_description = read_text_element( self, "description" );
    animation->m_effect = (PixelEffect)read_unsigned_attribute( self, "pixel_effect", 1 );
    animation->m_generations = read_unsigned_attribute( self, "generations", 1 );
    animation->m_num_pixels = read_unsigned_attribute( self, "pixels", 1 );
    animation->m_increment = read_unsigned_attribute( self, "increment", 1 );
    animation->m_color_fade = read_bool_attribute( self, "fade", 1 );
    animation->m_combine_fixtures = read_bool_attribute( self, "combine", 1 );
    animation->m_empty_color = read_rgbw_attribute( self, "pixel_off_color" );

    TiXmlElement* signal_element = self->FirstChildElement( "signal" );
    if ( signal_element ) {
        AnimationSignal* signal = read( signal_element, (AnimationSignal*)NULL );
        animation->m_signal = *signal;
        delete signal;
    }

    read_uids( self, "pfuids", animation->m_actors );

    read_colors( self, "custom_colors", animation->m_custom_colors );

    return animation;
}
Esempio n. 4
0
// ----------------------------------------------------------------------------
//
Universe* VenueReader::read( TiXmlElement* self, Universe* universe )
{
    universe = new Universe();

    universe->m_id = (universe_t)read_unsigned_attribute( self, "id", 0 );
    universe->m_type = (UniverseType)read_unsigned_attribute( self, "type", OPEN_DMX );
    universe->m_dmx_packet_delay = read_unsigned_attribute( self, "packet_delay_ms", DEFAULT_PACKET_DELAY_MS );
    universe->m_dmx_packet_min_delay = read_unsigned_attribute( self, "minimum_delay_ms", DEFAULT_MINIMUM_DELAY_MS );
    universe->m_dmx_port = read_text_element( self, "comm_port" );

    return universe;
}
Esempio n. 5
0
// ----------------------------------------------------------------------------
//
AnimationSignal* VenueReader::read( TiXmlElement* self, AnimationSignal *signal ) {

    signal = new AnimationSignal();

    signal->m_sample_rate_ms = (DWORD)read_dword_attribute( self, "sample_rate_ms" );
    signal->m_sample_decay_ms = (DWORD)read_dword_attribute( self, "sample_decay_ms" );
    signal->m_input_type = (AnimationSignalInput)read_int_attribute( self, "input_type" );
    signal->m_input_low = read_unsigned_attribute( self, "input_low" );
    signal->m_input_high = read_unsigned_attribute( self, "input_high" );
    signal->m_scale_factor = read_unsigned_attribute( self, "scale_factor" );
    signal->m_max_threshold = read_unsigned_attribute( self, "max_threshold" );
    signal->m_apply_to = (ApplySignal)read_word_attribute( self, "apply_to" );

    return signal;
}
Esempio n. 6
0
// ----------------------------------------------------------------------------
//
Chase* VenueReader::read( TiXmlElement* self, Chase* chase )
{
    chase = new Chase;

    readDObject( self, chase, "chase_number" );

    chase->m_delay_ms = (ULONG)read_dword_attribute( self, "delay_ms" );
    chase->m_fade_ms = (ULONG)read_dword_attribute( self, "fade_ms" );
    chase->m_repeat = read_bool_attribute( self, "repeat", true );

    TiXmlElement* acts = self->FirstChildElement( "acts" );
    if ( acts ) {
        TiXmlElement* element = acts->FirstChildElement( "act" );
        while ( element ) {
            chase->m_acts.insert( read_unsigned_attribute( element, "number" ) ) ;
            element = element->NextSiblingElement();
        }
    }

    // Add chase steps
    std::vector<ChaseStep *> steps = 
        read_xml_list<ChaseStep>( self->FirstChildElement( "chase_steps" ), "chase_step" );

    for ( std::vector<ChaseStep *>::iterator it=steps.begin(); it != steps.end(); ++it ) {
        chase->m_chase_steps.push_back( *(*it) );
        delete (*it);
    }

    return chase;
}
Esempio n. 7
0
// ----------------------------------------------------------------------------
//
SceneStrobeAnimator* VenueReader::read( TiXmlElement* self, SceneStrobeAnimator* animation )
{
    animation = new SceneStrobeAnimator();

    animation->m_uid = (UID)read_dword_attribute( self, "uid" );
    animation->m_strobe_neg_color = read_rgbw_attribute( self, "strobe_neg_color" );
    animation->m_strobe_pos_ms = read_unsigned_attribute( self, "strobe_pos_ms" );
    animation->m_strobe_neg_ms = read_unsigned_attribute( self, "strobe_neg_ms"  );

    animation->m_name = read_text_element( self, "name" );
    animation->m_description = read_text_element( self, "description" );

    TiXmlElement* signal_element = self->FirstChildElement( "signal" );
    if ( signal_element ) {
        AnimationSignal* signal = read( signal_element, (AnimationSignal*)NULL );
        animation->m_signal = *signal;
        delete signal;
    }

    read_uids( self, "pfuids", animation->m_actors );

    return animation;
}
Esempio n. 8
0
// ----------------------------------------------------------------------------
//
Venue * VenueReader::read( TiXmlElement* self, Venue* venue ) {
    venue = new Venue();

    venue->m_scenes.clear();			// Kill the auto generated default scene

    venue->m_uid_pool = read_dword_attribute( self, "next_uid" );
    venue->m_current_scene = (UID)read_dword_attribute( self, "current_scene" );

    venue->m_name = read_text_element( self, "name" );
    venue->m_description = read_text_element( self, "description" );

    // Add all universes (up to the max, must be in correct order)
    std::vector<Universe *> universes = 
        read_xml_list<Universe>( self->FirstChildElement( "dmx_universes" ), "universe" );

    for ( std::vector<Universe *>::iterator it=universes.begin(); it != universes.end(); ++it ) {
        venue->addUniverse( (*it) );
    }

    TiXmlElement *dimmer = self->FirstChildElement( "dimmer" );
    if ( dimmer ) {
        venue->m_master_dimmer = (BYTE)read_int_attribute( dimmer, "master_dimmer" );
        venue->m_auto_backout_ms = read_dword_attribute( dimmer, "auto_blackout" );
        venue->m_whiteout_strobe_ms = read_unsigned_attribute( dimmer, "whiteout_strobe", venue->getWhiteoutStrobeMS() );
        venue->m_whiteout_color = read_rgbw_attribute( dimmer, "whiteout_color", RGBWA::WHITE );
        }

    TiXmlElement *audio = self->FirstChildElement( "audio" );
    if ( audio ) {
        venue->m_audio_capture_device = read_text_element( audio, "capture_device" );
        venue->m_audio_boost = (float)read_double_attribute( audio, "scale" );
        venue->m_audio_boost_floor = (float)read_double_attribute( audio, "floor" );
        venue->m_audio_sample_size = (UINT)read_unsigned_attribute( audio, "sample_size", 1024 );
    }

    venue->m_venue_layout = read_text_element( self, "venue_layout" );

    // Add all fixtures
    std::vector<Fixture *> fixtures = 
        read_xml_list<Fixture>( self->FirstChildElement( "fixtures" ), "fixture" );

    for ( std::vector<Fixture *>::iterator it=fixtures.begin(); it != fixtures.end(); ++it ) {
        venue->addFixture( *(*it) );
        delete (*it);
    }

    // Add scenes
    std::vector<Scene *> scenes = 
        read_xml_list<Scene>( self->FirstChildElement( "scenes" ), "scene" );

    for ( std::vector<Scene *>::iterator it=scenes.begin(); it != scenes.end(); ++it ) {
        venue->addScene( *(*it), (*it)->getNumber() == DEFAULT_SCENE_NUMBER);
        delete (*it);
    }

    // Add fixture groups
    std::vector<FixtureGroup *> fixture_groups = 
        read_xml_list<FixtureGroup>( self->FirstChildElement( "fixture_groups" ), "fixture_group" );

    for ( std::vector<FixtureGroup *>::iterator it=fixture_groups.begin(); it != fixture_groups.end(); ++it ) {
        venue->addFixtureGroup( *(*it) );
        delete (*it);
    }

    // Add chases
    std::vector<Chase *> chases = 
        read_xml_list<Chase>( self->FirstChildElement( "chases" ), "chase" );

    for ( std::vector<Chase *>::iterator it=chases.begin(); it != chases.end(); ++it ) {
        venue->addChase( *(*it) );
        delete (*it);
    }

    // Add music mappings
    TiXmlElement *music_scenes_element = self->FirstChildElement( "music_scenes" );
    if ( music_scenes_element ) {
        venue->m_music_scene_select_enabled = read_bool_attribute( music_scenes_element, "enabled" );
        std::vector<MusicSceneSelector *> music_scenes = 
            read_xml_list<MusicSceneSelector>( self->FirstChildElement( "music_scenes" ), "music_mapping" );

        for ( std::vector<MusicSceneSelector *>::iterator it=music_scenes.begin(); it != music_scenes.end(); ++it ) {
            venue->addMusicMapping( *(*it) );
            delete (*it);
        }
    }

    return venue;
}
Esempio n. 9
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;
}
Esempio n. 10
0
// ----------------------------------------------------------------------------
//
Scene* VenueReader::read( TiXmlElement* self, Scene* scene )
{
    scene = new Scene();

    readDObject( self, scene, "scene_number" );

    scene->m_bpm_rating = (BPMRating)read_int_attribute( self, "bpm_rating", BPMRating::BPM_NO_RATING);

    std::vector<SceneActor *> actors = 
        read_xml_list<SceneActor>( self->FirstChildElement( "actors" ), "actor" );

    for ( std::vector<SceneActor *>::iterator it=actors.begin(); it != actors.end(); ++it ) {
        scene->addActor( *(*it) );
        delete (*it);
    }

    TiXmlElement* acts = self->FirstChildElement( "acts" );
    if ( acts ) {
        TiXmlElement* element = acts->FirstChildElement( "act" );
        while ( element ) {
            scene->m_acts.insert( read_unsigned_attribute( element, "number" ) ) ;
            element = element->NextSiblingElement();
        }
    }

    TiXmlElement* container = self->FirstChildElement( "animations" );
    if ( container ) {
        TiXmlElement* element = container->FirstChildElement( "animation" );
        while ( element ) {
            const char* class_name = read_text_attribute( element, "class" );
            AbstractAnimation* animation = NULL;

            if ( !strcmp( class_name, SceneSequence::className ) )
                animation = read( element, (SceneSequence*)NULL );
            else if ( !strcmp( class_name, SceneSoundLevel::className ) )
                animation = read( element, (SceneSoundLevel*)NULL );
            else if ( !strcmp( class_name, SceneChannelAnimator::className ) )
                animation = read( element, (SceneChannelAnimator*)NULL );
            else if ( !strcmp( class_name, ScenePatternDimmer::className ) )
                animation = read( element, (ScenePatternDimmer*)NULL );
            else if ( !strcmp( class_name, SceneColorFader::className ) )
                animation = read( element, (SceneColorFader*)NULL );
            else if ( !strcmp( class_name, SceneMovementAnimator::className ) )
                animation = read( element, (SceneMovementAnimator*)NULL );
            else if ( !strcmp( class_name, SceneStrobeAnimator::className ) )
                animation = read( element, (SceneStrobeAnimator*)NULL );
            else if ( !strcmp( class_name, ScenePixelAnimator::className ) )
                animation = read( element, (ScenePixelAnimator*)NULL );
            else if ( !strcmp( class_name, SceneChannelFilter::className ) )
                animation = read( element, (SceneChannelFilter*)NULL );
            else
                STUDIO_ASSERT( false, "Unknown animation class '%s'", class_name );

            scene->addAnimation( animation );

            element = element->NextSiblingElement();
        }
    }

    return scene;
}