User:Rufus Darkfold/PrimControl HUD
PrimControl HUD - BETA
The primcontrol HUD is for editing linksets of prims in ways that are inconvenient or not possible with the viewer. It communicates with the primset script, which should be installed in the target of the root prim. Flexi, light, color, and target omega parameters can be queried or set for the entire linkset or any subset. Particle system parameters may be set for any prim(s) as well. There is full support for prim torture.
The primcontrol HUD is free, full-permissions, and open-source.
Buttons and sliders to display and control the parameters are implemented using Dialogger. On/Off buttons are red for off and green for on. Sliders can be vertical, horizontal, or both. Click and drag are supported. 3D sliders are implemented with a 2d slider and a 2nd vertical slider (labeled "Z") on the right.
The top bar starts with a "Home" button that returns to this screen.
Clicking "charttracker" brings up the charttracker mapping HUD.
Clicking "dialogger" brings up an empty dialogger window, on which your objects can create dialogs by sending chat messages to channel 444.
Clicking "primcontrol" brings up the top screen of primcontrol:
The blue buttons each bring up a page to control that category of prim parameters, with the exception of the "_New_Prim_" button.
The "_New_Prim_" button rezzes a new prim (a red sphere) with the primset+ script already loaded. Just click on the newly-created prim to torture or otherwise manipulate this new prim using any of the primcontrol screens.
The bottom bar contains (from left to right):
- Reset dialogger (clears all dialogs from screen).
- Maintenance Menu (allows the number of child prims to be changed. You will need to be somewhere you have rez and script permissions, and you will have to drop the HUD. It will reattach when it is finished)
- Transparency control (allows the HUD to be made more or less transparent).
- Minimize (take less space on screen and make almost transparent. Click on it to restore)
- Resize vertically only (drag).
- Resize proportionally (drag).
To move the HUD on your screen, click on somewhere that doesn't have a dialog control on it (the dark part) and drag it.
Keyframed Motion
This allows prim animation sequences to be recorded, played back, edited, saved, loaded again, and converted to LSL code ready to paste into a script. It is possible to step through the animation sequence, "playing" it on a suitably configured object, and to insert, remove, or modify steps in the animation sequence. Multiple target objects can be controlled simultaneously, and they can be addressed by object name.
While the HUD and the object communicate via chat, the animation sequences can be broken up into multiple messages, so their complexity is only limited by available memory. Prim aninations are NOT subject to a 30-second time limit.
Animations are "saved" to chat by clicking "Show LSL". The output is like this:
llSetKeyframedMotion([<0, 0, 1.734530>, <0, 0, 0.897773, -0.440459>, 1, <0, 0, 1.734530>, <0, 0, 0.897773, -0.440459>, 1, <0, 0, -2.203320>, <1, 0, 0, 0>, 0.111111, <0, 0, 0>, <0, -0.707107, 0, 0.707107>, 0.111111, <0, 0, 0>, <-0.707107, -0, 0, 0.707107>, 0.111111, <0, 0, 0>, <0, -0.707107, 0, 0.707107>, 0.111111, <0, 0, 0>, <0, 0, 0.923880, 0.382683>, 0.111111, <0, 0, 0>, <0, 0, 0.923880, 0.382683>, 0.111111, <0, 0, 0>, <0, 0, 0.923880, 0.382683>, 0.111111, <0, 0, 0>, <0, -0, -0.707107, 0.707107>, 0.111111, <0, 0, 0>, <0, 0.382683, 0, 0.923880>, 0.111111, <0, 0, 0>, <0, -0.707107, 0, 0.707107>, 0.111111, <0, 0, 0>, <-0.179736, -0, 0, 0.983715>, 0.111111], [KFM_MODE, KFM_FORWARD]);
Enough newlines are inserted so that the whole thing can be pasted into a notecard and dropped on the HUD. (Pretty formatting later). The notecard must have a name ending in ".anim". Animations can also be reloaded by clicking "Load" and pasting into a textbox. llTextbox has a 256 character limit, but you get prompted for the rest if the message is truncated. These can also be chatted in on channel 888 which is better for larger animations as chat has a 1023 character limit. Only the portion between the first pair of squarebrackets ("[" and "]") is used. The squarebrackets themselves can be omitted but then the keyframe list must fit in a single message. With the squarebrackets it can be split into multiple messages. The keyframe list portion must contain only digits, decimal points, dashes, commas, angle-brackets and newlines. No constant names like ZERO_ROTATION.
This is also valid LSL code that can be pasted into a script.
- «
- back up to the location of the start of the last animation played.
- play, pause and stop
- start and stop the animation that is already loaded into the prim, without loading a new one.
- < and >
- step backwards and forwards. The previous or current animation step will be played (respectively, and in the appropraite direction), and the editor will display paramters for the new current step.
- Insert
- inserts the current settings as a new step.
- Delete
- deletes the current step.
- Load
- brings up a textbox to paste in a keyframe list
- Send
- send the current keyframe list to object(s)
- Show LSL
- (explained above)
- Show Steps
- chats a formatted list of the animation steps
- Move
- how far to move in this step
- Rotate
- how much to rotate in this step (in degrees).
- Time
- how long this step should take to complete. Rounded to nearest 1/45 of a second. Minimum .111111 seconds.
- Immediate
- causes each move and rotate to be executed immediately and not reverted. This is useful for positioning the object.
- PingPong
- If on, animations will be sent in "ping pong" mode. Otherwise they will be sent in "forward" mode.
- New Prim
- Makes a new prim with the appropriate physics shape type and the primset script already loaded. Click on the new prim to start animating it.
- Snap to 45º
- Round all rotation angles to the nearest 45º
- Adj.All Times
- Adjust all other times in the animation proportionally to the change in this one. Change is applied when the checkmark is clicked.
- OK X
- Clicking the check-mark will update the current step in the animation with the displayed values. X will revert to the old values.
Platform
Create a platform directly under you, or configure a platform you already created. Useful for building skyboxes. If there is one of your platforms within 96 meters, it will chat you an slurl to teleport to it.
Sit on the platform to bring up the resize dialog. The platform can be resized up to 64x64m. The script will check the proposed dimensions and warn you if that would cause the platform to encroach on another parcel. You can also resize (and move) the platform manually, and it will warn you if the move or resize encroaches on another parcel. The platform is full-permissions.
New Prim
Create a new prim with the primset script preloaded. The new prim will appear next to you. Click on it to manipulate it with the following screens:
Prim Torture
This is a graphical interface to the prim torture library
Changes are made immediately, as in the other screens, unless "DEFER" is set (lit green), in which case commands are accumulated into a single list which is sent when "DEFER" is turned off. This allows chained prim torture. The full list must be less than 1024 characters when converted into a string, because it must be sent in a chat message. Text at the top of the screen indicates the most recently-selected parameters and the number of characters left.
If "LEGACY" is on (green), then the legacy PRIM_TYPE is used (function code 1), otherwise the HUD uses current PRIM_TYPE (function code 9). Both can be in the same chain.
The names and values used by the LSL API (and this HUD) differ in some cases from what appears in the viewer edit window.
- "Taper" for cubes and cylinders is "Top size" here, and the range of values is different.
- "Dimple" for spheres is "Advanced Cut" here.
- "Hole Size" is "Top Size".
- Revolutions is in number of, rather than degrees.
"Get prim params" will only update those parameters that are retrievable with the current shape.
THERE IS NO "UNDO". "Take Copy" often!
If you are trying to recall how you made that interesting shape, look in your chat history. It will tell you what was done.
Flexi
Retrieves or sets the Flexi parameters for the selected prim(s).
Light
Retrieves or sets the Light parameters for the selected prim(s).
Particles
Sets particle system parameters for selected prim(s). "Get prim params" is not active on this screen, as there is no way in LSL to retrieve the current values.
Click "MORE" for second screen.
Drop a texture on the "TEXTURE" button to select a new texture for particles. The texture has to be full-permissions for this to work. A mouse click on that button clears the current texture.
Omega
Retrieves or sets the target omega parameters for the selected prims.
Color
Retrieves or sets the color and alpha of all sides of the selected prims.