diff options
| author | callum <none@none> | 2011-06-09 13:48:35 -0700 | 
|---|---|---|
| committer | callum <none@none> | 2011-06-09 13:48:35 -0700 | 
| commit | 7847c8941f8c78ab7cdef65aadf4dfccf645bbf3 (patch) | |
| tree | 53520e9d1fed5dc69d820e6c520eb77f16ab93df /indra | |
| parent | 86470d3889436017264a69d57fb2060a591955f4 (diff) | |
EXP-676 FIX As a web developer, I want to access information about the current state of the SL client, such as avatar location
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 18 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 3 | ||||
| -rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 36 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 69 | 
4 files changed, 60 insertions, 66 deletions
| diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 8f161201f4..d3d0403bbb 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -436,27 +436,15 @@ std::string LLPluginClassMedia::translateModifiers(MASK modifiers)  	return result;
  }
 -void LLPluginClassMedia::jsExposeObjectEvent( bool expose )
 +void LLPluginClassMedia::jsEnableObject( bool enable )
  {
  	if( ! mPlugin || !mPlugin->isRunning() || mPlugin->isBlocked() )
  	{
  		return;
  	}
 -	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "js_expose_object");
 -	message.setValueBoolean( "expose", expose );
 -	sendMessage( message );
 -}
 -
 -void LLPluginClassMedia::jsValuesValidEvent( bool valid )
 -{
 -	if( ! mPlugin || !mPlugin->isRunning() || mPlugin->isBlocked() )
 -	{
 -		return;
 -	}
 -
 -	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "js_values_valid");
 -	message.setValueBoolean( "valid", valid );
 +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "js_enable_object");
 +	message.setValueBoolean( "enable", enable );
  	sendMessage( message );
  }
 diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index c061390699..f8ed89f644 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -119,8 +119,7 @@ public:  	void scrollEvent(int x, int y, MASK modifiers);
  	// Javascript <-> viewer events
 -	void jsExposeObjectEvent( bool expose );
 -	void jsValuesValidEvent( bool valid );
 +	void jsEnableObject( bool enable );
  	void jsAgentLocationEvent( double x, double y, double z );
  	void jsAgentGlobalLocationEvent( double x, double y, double z );
  	void jsAgentOrientationEvent( double angle );
 diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 27f3c7260e..fca071c628 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -1168,19 +1168,11 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  				authResponse(message_in);  			}  			else -			if(message_name == "js_expose_object") +			if(message_name == "js_enable_object")  			{  #if LLQTWEBKIT_API_VERSION >= 9 -				bool expose_object = message_in.getValueBoolean( "expose" ); -				LLQtWebKit::getInstance()->setExposeObject( expose_object ); -#endif -			} -			else -			if(message_name == "js_values_valid") -			{ -#if LLQTWEBKIT_API_VERSION >= 9 -				bool valid = message_in.getValueBoolean( "valid" ); -				LLQtWebKit::getInstance()->setValuesValid( valid ); +				bool enable = message_in.getValueBoolean( "enable" ); +				LLQtWebKit::getInstance()->setSLObjectEnabled( enable );  #endif  			}  			else @@ -1191,6 +1183,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  				F32 y = message_in.getValueReal("y");  				F32 z = message_in.getValueReal("z");  				LLQtWebKit::getInstance()->setAgentLocation( x, y, z ); +				LLQtWebKit::getInstance()->emitLocation();  #endif  			}  			else @@ -1201,6 +1194,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  				F32 y = message_in.getValueReal("y");  				F32 z = message_in.getValueReal("z");  				LLQtWebKit::getInstance()->setAgentGlobalLocation( x, y, z ); +				LLQtWebKit::getInstance()->emitLocation();  #endif  			}  			else			 @@ -1209,6 +1203,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  #if LLQTWEBKIT_API_VERSION >= 9  				F32 angle = message_in.getValueReal("angle");  				LLQtWebKit::getInstance()->setAgentOrientation( angle ); +				LLQtWebKit::getInstance()->emitLocation();  #endif  			}  			else @@ -1217,14 +1212,25 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  #if LLQTWEBKIT_API_VERSION >= 9  				const std::string& region = message_in.getValue("region");  				LLQtWebKit::getInstance()->setAgentRegion( region ); +				LLQtWebKit::getInstance()->emitLocation();  #endif  			}  			else -			if(message_name == "js_agent_maturity") +				if(message_name == "js_agent_maturity") +				{ +#if LLQTWEBKIT_API_VERSION >= 9 +					const std::string& maturity = message_in.getValue("maturity"); +					LLQtWebKit::getInstance()->setAgentMaturity( maturity ); +					LLQtWebKit::getInstance()->emitMaturity(); +#endif +				} +			else +			if(message_name == "js_agent_language")  			{  #if LLQTWEBKIT_API_VERSION >= 9 -				const std::string& maturity = message_in.getValue("maturity"); -				LLQtWebKit::getInstance()->setAgentMaturity( maturity ); +				const std::string& language = message_in.getValue("language"); +				LLQtWebKit::getInstance()->setAgentLanguage( language ); +				LLQtWebKit::getInstance()->emitLanguage();  #endif  			}  			else @@ -1384,3 +1390,5 @@ int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void  	return 0;  } + + diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 1e53274cd6..b94da4b64c 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2349,43 +2349,42 @@ void LLViewerMediaImpl::updateJavascriptObject()  	if ( mMediaSource )  	{  		// flag to expose this information to internal browser or not. -		bool expose_javascript_object = gSavedSettings.getBOOL("BrowserEnableJSObject"); -		mMediaSource->jsExposeObjectEvent( expose_javascript_object ); +		bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject"); +		mMediaSource->jsEnableObject( enable ); -		// indicate if the values we have are valid (currently do this blanket-fashion for -		// everything depending on whether you are logged in or not - this may require a  -		// more granular approach once variables are added that ARE valid before login +		// these values are only menaingful after login so don't set them before  		bool logged_in = LLLoginInstance::getInstance()->authSuccess(); -		mMediaSource->jsValuesValidEvent( logged_in ); - -		// current location within a region -		LLVector3 agent_pos = gAgent.getPositionAgent(); -		double x = agent_pos.mV[ VX ]; -		double y = agent_pos.mV[ VY ]; -		double z = agent_pos.mV[ VZ ]; -		mMediaSource->jsAgentLocationEvent( x, y, z ); - -		// current location within the grid -		LLVector3d agent_pos_global = gAgent.getLastPositionGlobal(); -		double global_x = agent_pos_global.mdV[ VX ]; -		double global_y = agent_pos_global.mdV[ VY ]; -		double global_z = agent_pos_global.mdV[ VZ ]; -		mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z ); - -		// current agent orientation -		double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] ); -		double angle = rotation * RAD_TO_DEG; -		if ( angle < 0.0f ) angle = 360.0f + angle;	// TODO: has to be a better way to get orientation! -		mMediaSource->jsAgentOrientationEvent( angle ); - -		// current region agent is in -		std::string region_name(""); -		LLViewerRegion* region = gAgent.getRegion(); -		if ( region ) -		{ -			region_name = region->getName(); -		}; -		mMediaSource->jsAgentRegionEvent( region_name ); +		if ( logged_in ) +		{ +			// current location within a region +			LLVector3 agent_pos = gAgent.getPositionAgent(); +			double x = agent_pos.mV[ VX ]; +			double y = agent_pos.mV[ VY ]; +			double z = agent_pos.mV[ VZ ]; +			mMediaSource->jsAgentLocationEvent( x, y, z ); + +			// current location within the grid +			LLVector3d agent_pos_global = gAgent.getLastPositionGlobal(); +			double global_x = agent_pos_global.mdV[ VX ]; +			double global_y = agent_pos_global.mdV[ VY ]; +			double global_z = agent_pos_global.mdV[ VZ ]; +			mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z ); + +			// current agent orientation +			double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] ); +			double angle = rotation * RAD_TO_DEG; +			if ( angle < 0.0f ) angle = 360.0f + angle;	// TODO: has to be a better way to get orientation! +			mMediaSource->jsAgentOrientationEvent( angle ); + +			// current region agent is in +			std::string region_name(""); +			LLViewerRegion* region = gAgent.getRegion(); +			if ( region ) +			{ +				region_name = region->getName(); +			}; +			mMediaSource->jsAgentRegionEvent( region_name ); +		}  		// language code the viewer is set to  		mMediaSource->jsAgentLanguageEvent( LLUI::getLanguage() ); | 
