RestrainedLove Viewer Support for LSL-Plus

LSL Plus by Rob Greayer is a nice IDE for editing and testing LSL scripts out of world. It enables you to do testing in a simulated world within the IDE with break point and debugging support.
The Restraint Life Viewer is a custom Second Life Viewer by Marine Kelley that has some additional features to make the user more or less helpless.
This page documents an implementation of the Restrained Love API as an Agent Event Handler Module in LSL Plus. So you can use it to test your RLV enabled scripts.
Download the current Alpha version at: http://sourceforge.net/tracker2/?func=detail&aid=2466464&group_id=219595&atid=1046875
== How to use? ==
Extract the zip file into your workspace and keep the directory structure. You will find a the scripts within modules/sim/rlv. There are two subpackages there: "iface" and "impl". The modules in the "iface" package are intended for use by other scripts or the simulator itself. The modules in the impl subpackage contain the code doing the actual work. And functions defined there may change in the next version.
There are two simulators in the folder rlvworld. "playground" is the one I use for quick&dirty tests during development. "test" is the one which contains automated regression tests that verify that future changes don't introduce new bugs.
=== Adding RLV to an Avatar ===
If you are not doing any additional event processing for that agent, you can simply select
 modules.sim.rlv.iface.simple avatar handler.lslm
as Event Handler.
=== Adding RLV support to a scripted Avatar ===
If you already have an event handler for an avatar, you cannot use the "simple avatar handler.lslm" because there can only be one handler per avatar. Please import the module
 modules.sim.rlv.iface.rlv_support.lslm
into your own avatar event handler. You can have a look at the "simple avatar handler.lslm" to learn how to use it.
== State of implemented features ==
This implementation is work in progress. Not all features are implemented. And I don't even have an idea how to implement some, yet. The clothing and inventory handling is something that normal LSL scripts cannot do and therefore there is obviously no support in LSL Plus for that, yet.
Ignoring the clothing issue, the implementation is already useable:
 
Any kind of help is very welcome.
=== Restrictions ===
Command 	idea how to	implemented	test impl.	comments
adding restrictions 	done 	done 	done 	
removing restrictions	done 	done 	done 	
clearing restrictions	done 	done 	done 	
=== Queries ===
Query 	idea how to	implemented	test impl.	comments
version 	done 	done 	done 	
getoutfit 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
getattach 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
getstatus 	done 	done 	done 	
getstatusall	done 	done 	done 	
getinv 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
getinvworn 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
findfolder 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
getsitid 	done 	partly 	 	there is a delay between a force-sit and the update of this in the real RLV.
getenv_ 	done 	done 	 	
=== Force ===
Force 	idea how to	implemented	test impl.	comments
remoutfit	 	partly 	 	restrictions obeyed, but LSL Plus does not support avatar inventory / attachments, yet
detach 	 	partly 	 	restrictions obeyed, but LSL Plus does not support avatar inventory / attachments, yet
sit 	done 	partly 	 	cannot check 1.5 meter limit if sittp is restricted because llGetPos does not work. cannot change position because llSetPos do not work
unsit 	done 	done 	 	
attach 	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
attachall	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
detachall	 	 	 	LSL Plus does not support avatar inventory / attachments, yet
tpto 	done 	partly 	 	LSL Plus does not update avatar position
setenv_ 	done 	done 	 	
=== Event Processing ===
TODO
== Known issues ==
* I had to move functions from the module restrictions.lslm to force.lslm because I was unable to include the module restrictions.lslm in force.lslm.