Index: osgVisual/CMakeLists.txt
===================================================================
--- osgVisual/CMakeLists.txt	(revision 82)
+++ osgVisual/CMakeLists.txt	(revision 83)
@@ -154,19 +154,6 @@
 
 # Module cluster
-SET(USE_CLUSTER_UDP OFF CACHE BOOL "Enable to use the UDP Implementation for the cluster interface")
 SET(USE_CLUSTER_ASIO_TCP_IOSTREAM OFF CACHE BOOL "Enable to use the Boost ASIO TCP iostream implementation for the cluster interface")
 SET(USE_CLUSTER_ENET ON CACHE BOOL "Enable to use the ENet reliable UDP library implementation for the cluster interface")
-IF( USE_CLUSTER_UDP   )
-		SET(SOURCES
-			${SOURCES}
-			include/cluster/dataIO_cluster.h
-			include/cluster/dataIO_clusterUDP.h
-			include/cluster/dataIO_clusterUDP_Transmission.h
-			src/cluster/dataIO_clusterUDP.cpp
-			src/cluster/dataIO_clusterUDP_Transmission.cpp
-		)
-		ADD_DEFINITIONS( "-DUSE_CLUSTER_UDP" )
-ENDIF()
-
 IF( USE_CLUSTER_ASIO_TCP_IOSTREAM )
 		SET(SOURCES
@@ -218,5 +205,5 @@
 ENDIF()
 
-IF(NOT USE_CLUSTER_UDP AND NOT USE_CLUSTER_ASIO_TCP_IOSTREAM AND NOT USE_CLUSTER_ENET)
+IF(NOT USE_CLUSTER_ASIO_TCP_IOSTREAM AND NOT USE_CLUSTER_ENET)
 		SET(SOURCES
 			${SOURCES}
Index: osgVisual/include/cluster/dataIO_clusterUDP.h
===================================================================
--- osgVisual/include/cluster/dataIO_clusterUDP.h	(revision 82)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#pragma once
-/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
- *
- * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under 
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version.  The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
- * You have to aquire licenses for all used proprietary modules.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * OpenSceneGraph Public License for more details.
-*/
-
-#include "dataIO_cluster.h"
-
-#include <osg/notify>
-#include <osg/ArgumentParser>
-#include <osgDB/Registry>
-#include <osgDB/ReaderWriter>
-#include <iostream>
-#include <winsock2.h>
-#pragma comment ( lib, "WSock32.lib" )
-
-#include "dataIO_clusterUDP_Transmission.h"
-
-namespace osgVisual
-{
-
-/**
- * \brief This is a UDP implementation of dataIO_cluster..
- * 
- * This class uses UDP to fullfil the functions of dataIO_cluster.
- * It sends the clusterdata via UDP Broadcast into the network to any listening client.
- * 
- * 
- * \todo Add getHorizonColor to transport it to slave for consistent fog.
- * @author Torben Dannhauer
- * @date  Feb 2010
- */ 
-class dataIO_clusterUDP :	public dataIO_cluster
-{
-public:
-	dataIO_clusterUDP();
-	virtual ~dataIO_clusterUDP(void);
-
-	void init( osg::ArgumentParser& arguments_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ );
-	void shutdown();
-
-	bool sendTO_OBJvaluesToSlaves();
-	bool readTO_OBJvaluesFromMaster();
-	void reportAsReadyToSwap();
-	bool waitForSwap();
-	bool waitForAllReadyToSwap();
-	bool sendSwapCommand();
-
-private:
-	bool compressionEnabled;
-	osg::ref_ptr<osgDB::Options> readOptions;
-	osg::ref_ptr<osgDB::Options> writeOptions;
-	osg::ref_ptr<osgDB::ReaderWriter> rw;
-	osg::ref_ptr<osgVisual::Broadcaster> broadcaster;
-	osg::ref_ptr<osgVisual::Receiver> receiver;
-};
-
-}	// END NAMESPACE
Index: osgVisual/include/cluster/dataIO_clusterUDP_Transmission.h
===================================================================
--- osgVisual/include/cluster/dataIO_clusterUDP_Transmission.h	(revision 82)
+++ 	(revision )
@@ -1,107 +1,0 @@
-#pragma once
-/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
- *
- * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under 
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version.  The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
- * You have to aquire licenses for all used proprietary modules.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * OpenSceneGraph Public License for more details.
-*/
-
-
-#include <osg/Referenced>
-#include <osg/Notify>
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <string.h>
-#include <winsock2.h>
-#include <stdio.h>
-#include <string.h>
-#include <iostream>
-#include <sstream>
-
-
-namespace osgVisual
-{
-
-////////////////////////////////////////////////////////////
-// Broadcaster
-//
-// Class definition for broadcasting a buffer to a LAN
-//
-
-class Broadcaster : public osg::Referenced
-{
-public :
-	Broadcaster();
-	~Broadcaster();
-
-	// Initialize Broadcaster and its socket.
-	bool init(const short port_ = 0);
-
-	// Set a recipient host.  If this is used, the Broadcaster
-	// no longer broadcasts, but rather directs UDP packets at
-	// host.
-	void setDestinationHost( const char *hostname ); 
-
-	// Send/broadcasts the buffer
-	void transmitBuffer( const char* buffer, const unsigned int size );
-
-private :
-
-    SOCKET _so;	// Socket-Handle
-
-    bool _initialized;	// Initialized Flag
-    short _port;		// Socketport
-
-    SOCKADDR_IN saddr;	// Datenstruktur zum Verwalten der SocketDaten der Protokollfamilie (Port, IP etc.)
-
-    unsigned long _destinationAddress;	// Destinationaddress
-
-	WORD requestedWSAVersion;
-};
-
-///////////////////////////////////////////////////////////
-// Receiver
-//
-// Class definition for the recipient of a broadcasted message
-//
-class Receiver : public osg::Referenced
-{
- public :
-
-	Receiver();
-	~Receiver();
-
-	// Initialize Reciever and its socket.
-	bool init( const short port_ );
-
-	/**
-	 * \brief Sync does a blocking wait to recieve next message
-	 * 
-	 * Why max Datagram size of ~65000 bytes : http://www.erg.abdn.ac.uk/users/gorry/eg3567/inet-pages/udp.html
-	 * Good introduction into WSA sockets: http://www.htwm.de/~win/vorlesungen/sockets.pdf
-	 * 
-	 * 
-	 * @param writeInto_ : Stringstream to write socket data into
-	 */ 
-	void waitBlockingforSocketData( std::stringstream& writeInto_ );
-
- private :
-    SOCKET _so;	// Socket-Handle
-    SOCKADDR_IN saddr;
-	char buffer[65000];
-    bool _initialized;	// Initialized-Flag
-	WORD requestedWSAVersion;
-};	
-
-}	// END NAMESPACE
Index: osgVisual/src/cluster/dataIO_clusterUDP.cpp
===================================================================
--- osgVisual/src/cluster/dataIO_clusterUDP.cpp	(revision 82)
+++ 	(revision )
@@ -1,160 +1,0 @@
-/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
- *
- * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under 
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version.  The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
- * You have to aquire licenses for all used proprietary modules.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * OpenSceneGraph Public License for more details.
-*/
-
-#include "dataIO_clusterUDP.h"
-
-using namespace osgVisual;
-
-
-dataIO_clusterUDP::dataIO_clusterUDP()
-{
-	OSG_NOTIFY( osg::ALWAYS ) << "clusterUDP constructed" << std::endl;
-
-	compressionEnabled = true;
-	broadcaster = NULL;
-	receiver = NULL;
-}
-
-dataIO_clusterUDP::~dataIO_clusterUDP(void)
-{
-	OSG_NOTIFY( osg::ALWAYS ) << "clusterUDP destructed" << std::endl;
-}
-
-void dataIO_clusterUDP::init( osg::ArgumentParser& arguments_, osgVisual::dataIO_cluster::clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ )
-{
-	// set Variables
-	sendContainer = sendContainer_;
-
-	// Configure Compression and instantiate read/write-options
-	std::string readOptionString = "";
-	std::string writeOptionString = "";
-	if(asAscii_)
-	{
-		readOptionString = "Ascii";
-		writeOptionString = "Ascii";
-	}
-	if (compressionEnabled_)
-		writeOptionString+=" Compressor=zlib";
-	readOptions = new osgDB::Options( readOptionString.c_str() );
-	writeOptions = new osgDB::Options( writeOptionString.c_str() );
-
-	// Get ReaderWriter
-	rw = osgDB::Registry::instance()->getReaderWriterForExtension("osgb");	
-
-	// Instantiate broadcaster and reciever
-	broadcaster = new osgVisual::Broadcaster();
-	broadcaster->init(12345);
-	receiver = new osgVisual::Receiver();
-	receiver->init(12345);
-	
-	OSG_NOTIFY( osg::ALWAYS ) << "clusterUDP init()" << std::endl;
-}
-
-void dataIO_clusterUDP::shutdown()
-{
-	OSG_NOTIFY( osg::ALWAYS ) << "clusterUDP shutdown()" << std::endl;
-}
-
-bool dataIO_clusterUDP::sendTO_OBJvaluesToSlaves()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP sendTO_OBJvaluesToSlaves()" << std::endl;
-
-	if(sendContainer.valid())
-	{
-		// Writing node to stream
-		std::stringstream myOstream;
-		if ( rw )
-		{
-			osgDB::ReaderWriter::WriteResult wr = rw->writeObject( *sendContainer.get(), myOstream, writeOptions );
-			if (wr.success() )			
-			{
-				// Send Data via UDP:
-				//OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterUDP::sendTO_OBJvaluesToSlaves() - Bytes to send: " << myOstream.str().length() << std::endl;
-				//OSG_NOTIFY( osg::ALWAYS ) << "Send: " << myOstream.str() << std::endl;
-				broadcaster->transmitBuffer( myOstream.str().c_str() , myOstream.str().length() );
-			}
-			else OSG_NOTIFY( osg::WARN ) << "ERROR: clusterUDP sendTO_OBJvaluesToSlaves() :: Save failed: " << wr.message() << std::endl;
-		}
-		else OSG_NOTIFY( osg::WARN ) << "ERROR: clusterUDP sendTO_OBJvaluesToSlaves() :: Unable to get readerWriter for osgb" << std::endl;
-	}
-	else OSG_NOTIFY( osg::WARN ) << "ERROR: clusterUDP sendTO_OBJvaluesToSlaves() :: Invalid transportContainer" << std::endl;
-
-	return true;
-}
-
-bool dataIO_clusterUDP::readTO_OBJvaluesFromMaster()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP readTO_OBJvaluesFromMaster()" << std::endl;
-
-	std::stringstream received;
-	receiver->waitBlockingforSocketData( received );
-
-	int bytes_received = received.str().length();
-	if (bytes_received > 0 )
-	{
-		OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterUDP::readTO_OBJvaluesFromMaster() - Bytes received: " << bytes_received << std::endl;
-		OSG_NOTIFY( osg::ALWAYS ) << "Received: " << received.str() << std::endl;
-
-		// Unserialize data
-		if ( rw )
-		{
-			osgDB::ReaderWriter::ReadResult rr = rw->readObject( received, readOptions );
-			if (rr.success())
-			{
-				sendContainer = dynamic_cast<osgVisual::dataIO_transportContainer*>(rr.takeObject());
-				if (sendContainer)
-				{
-					OSG_NOTIFY( osg::ALWAYS ) << "Received::FrameID is: " << sendContainer->getFrameID() << std::endl;
-				}
-				else
-					OSG_NOTIFY( osg::WARN ) << "ERROR: dataIO_clusterUDP::readTO_OBJvaluesFromMaster() - Unable to cast converted node to transportContainer" << std::endl;
-			}
-			else
-				OSG_NOTIFY( osg::WARN ) << "ERROR: dataIO_clusterUDP::readTO_OBJvaluesFromMaster() - Unable to convert stream to node" << std::endl;
-		}
-		else
-			OSG_NOTIFY( osg::WARN ) << "ERROR: dataIO_clusterUDP::readTO_OBJvaluesFromMaster() - Unable to get readerWriter for osgb" << std::endl;
-	}	// IF bytes recv >0
-
-
-	return true;
-}
-
-void dataIO_clusterUDP::reportAsReadyToSwap()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP reportAsReadyToSwap()" << std::endl;
-}
-
-bool dataIO_clusterUDP::waitForSwap()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP waitForSwap()" << std::endl;
-
-	return true;
-}
-
-bool dataIO_clusterUDP::waitForAllReadyToSwap()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP waitForAllReadyToSwap()" << std::endl;
-
-	return true;
-}
-
-bool dataIO_clusterUDP::sendSwapCommand()
-{
-	OSG_NOTIFY( osg::INFO ) << "clusterUDP sendSwapCommand()" << std::endl;
-
-	return true;
-}
Index: osgVisual/src/cluster/dataIO_clusterUDP_Transmission.cpp
===================================================================
--- osgVisual/src/cluster/dataIO_clusterUDP_Transmission.cpp	(revision 82)
+++ 	(revision )
@@ -1,207 +1,0 @@
-/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
- *
- * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under 
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version.  The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
- * You have to aquire licenses for all used proprietary modules.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * OpenSceneGraph Public License for more details.
-*/
-
-#include "dataIO_clusterUDP_Transmission.h"
-
-using namespace osgVisual;
-
-
-Broadcaster::Broadcaster()
-{
-    _initialized = false;
-    _destinationAddress = 0;
-	requestedWSAVersion = MAKEWORD(2,0);
-}
-
-Broadcaster::~Broadcaster()
-{
-    closesocket( _so);
-}
-
-bool Broadcaster::init(const short port_)
-{
-    WSADATA wsaData;
-
-    // First, we start up Winsock
-    WSAStartup(requestedWSAVersion, &wsaData);
-
-    if( port_ == 0 )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster::init() - port not defined: " << std::endl;
-        return false;
-    }
-
-	// Create Socket
-    if( (_so = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster::init() - Unable to create socket!" << std::endl;
-        return false;
-    }
-    const BOOL on = TRUE;
-
-	// Set Socket options
-    setsockopt( _so, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(int));
-    saddr.sin_family = AF_INET;	// Internetwork UDP, TCP etc.
-    saddr.sin_port   = htons( port_ );	// Port festlegen
-    if( _destinationAddress == 0 )	// Wenn keine Zieladresse festgelegt: Broadcasten
-    {
-        setsockopt( _so, SOL_SOCKET, SO_BROADCAST, (const char *) &on, sizeof(int));
-        saddr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
-    }
-
-	// Print out destination address
-    unsigned char *ptr = (unsigned char *)&saddr.sin_addr.s_addr;
-	OSG_NOTIFY( osg::ALWAYS ) << "INFO: Broadcaster::init() - Broadcast address = " << (unsigned int)ptr[0] << "." << (unsigned int)ptr[1] << "." << (unsigned int)ptr[2] << "." << (unsigned int)ptr[3] << std::endl;
-
-	// Note: Initialization finished.
-    _initialized = true;
-    return _initialized;
-}
-
-void Broadcaster::setDestinationHost( const char *hostname )
-{
-    struct hostent *h;
-    if( (h = gethostbyname( hostname )) == 0L )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster::setHost() - Cannot resolve an address for " << hostname;
-        _destinationAddress = 0;
-    }
-    else
-        _destinationAddress = *(( unsigned long  *)h->h_addr);
-}
-
-void Broadcaster::transmitBuffer( const char* buffer_, const unsigned int size_ )
-{
-    if(!_initialized) 
-	{
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster not initialized!" << std::endl;
-		return;
-	}
-
-    if( buffer_ == NULL )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster::transmitBuffer() - No buffer" << std::endl;
-        return;
-    }
-
-    unsigned int addrSize = sizeof( SOCKADDR_IN );
-    sendto( _so, buffer_, size_, 0, (struct sockaddr *)&saddr, addrSize );
-    int err = WSAGetLastError ();
-    if (err!=0)
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Broadcaster::transmitBuffer() - Error #: " << err << std::endl;
-}
-
-//
-//--------------------------------------------------------
-//
-
-Receiver::Receiver( void )
-{
-    _initialized = false;
-	requestedWSAVersion = MAKEWORD(2,0);
-}
-
-Receiver::~Receiver( void )
-{
-    closesocket( _so);
-}
-
-bool Receiver::init( const short port_ )
-{
-    WSADATA wsaData;
-    // First, we start up Winsock
-    WSAStartup(requestedWSAVersion, &wsaData);
-
-	if( port_ == 0 )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Receiver::init() - port not defined: " << std::endl;
-        return false;
-    }
-
-	// Create Socket
-    if( (_so = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 )
-    {
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Receiver::init() -Could not create Socket" << std::endl;
-		return false;
-    }
-
-	// Set Socket Protocolfamily and Protocoldata (IP address, port, etc.)
-    //// Protokollfamilie
-	saddr.sin_family = AF_INET;
-    //// Port:
-	saddr.sin_port   = htons( port_ );	// The htons function converts a u_short from host to TCP/IP network byte order (which is big-endian)
-	//////Socketadresse. INADDR_ANY ist das Schlüsselwort für 0x00000000 und bindet den Socket auf alle lokalen IP-Adressen:
-	saddr.sin_addr.s_addr =  htonl(INADDR_ANY);		// The htonl function converts a u_long from host to TCP/IP network byte order (which is big endian).
- 
-
-	// Bind socket to local address and port.
-    if( bind( _so, (struct sockaddr *)&saddr, sizeof( saddr )) < 0 )
-    {
-        OSG_NOTIFY( osg::FATAL ) << "ERROR: Receiver::init() - Could not bind Socket" << std::endl;
-        return false;
-    }
-
-	// Note: Initialization finished.
-    _initialized = true;
-    return _initialized;
-}
-
-void Receiver::waitBlockingforSocketData( std::stringstream& writeInto_ )
-{
-	if(!_initialized) 
-	{
-		OSG_NOTIFY( osg::FATAL ) << "ERROR: Receiver not initialized!" << std::endl;
-		return;
-	}
-
-	// ?? Size des Addresspaketes ermitteln
-    int size = sizeof( struct sockaddr_in );
-
-    fd_set fdset;	// Filedescriptor Set
-    FD_ZERO( &fdset );	// Initialisiert das FDS als Null
-    FD_SET( _so, &fdset );	// Fügt dem FDS ein FileDescriptor hinzu
-
-	// Set Timeintervall for select() timeout
-    struct timeval tv;
-    tv.tv_sec = 0;
-    tv.tv_usec = 0;
-
-	// In einer Schleife: Solange lesen bis keine Daten mehr in dem Socket warten.
-    while( select( _so, &fdset, 0L, 0L, &tv ) )	// <0: error, =0 timeout, >0: socket to read
-    {
-        if( FD_ISSET( _so, &fdset ) )
-        {
-            int ret = recvfrom( _so, buffer, 65000, 0, (sockaddr*)&saddr, &size );
-			// check for size
-			if (ret > 0)
-			{
-				writeInto_.str("");
-				OSG_NOTIFY( osg::INFO ) <<  "Receiver::waitBlockingforSocketData() - Empfangene Bytes:" << ret << std::endl;
-				for(int i=0;i<ret;i++)
-					writeInto_ << buffer[i];
-			}
-			else
-			{
-				int err = WSAGetLastError ();
-				if (err!=0) 
-					OSG_NOTIFY( osg::FATAL ) <<  "Receiver::waitBlockingforSocketData() - Error #" << err << std::endl;
-			}
-		}	// END IF_ISSET
-    }
-	OSG_NOTIFY( osg::INFO ) << "Socket leergelesen!" << std::endl;
-}
-
-
