//==============================================================================
void MarkerList::ValueTreeWrapper::applyTo (MarkerList& markerList)
{
    const int numMarkers = getNumMarkers();

    StringArray updatedMarkers;

    for (int i = 0; i < numMarkers; ++i)
    {
        const ValueTree marker (state.getChild (i));
        const String name (marker [nameProperty].toString());
        markerList.setMarker (name, RelativeCoordinate (marker [posProperty].toString()));
        updatedMarkers.add (name);
    }

    for (int i = markerList.getNumMarkers(); --i >= 0;)
        if (! updatedMarkers.contains (markerList.getMarker (i)->name))
            markerList.removeMarker (i);
}
unsigned int Enclosure::getRandomRespawnMarker(void)
{
    // build list of respawn markers
    std::vector<unsigned int> respawnIds;
    for( unsigned int i=0; i<getNumMarkers(); i++ )
    {
        if( getMarkerFlags(i) & mtRespawn ) respawnIds.push_back( i );
    }
	
	//tsynique
	if (respawnIds.size() == 0) return 0;

    assert( respawnIds.size() );

    unsigned int result = unsigned int( getCore()->getRandToolkit()->getUniform( 0, float( respawnIds.size() ) ) );
    result = result > respawnIds.size()-1 ? respawnIds.size()-1 : result;
    return respawnIds[result];
}