Jump to content

Can sculpted prims interfere with other objects scripts?


Ludvig Bravin
 Share

You are about to reply to a thread that has been inactive for 3554 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

It sounds like you've already proven the pergola is the issue.

The problem sounds like it's the physics shape of the pergola affecting your ability to interact with the couch.  Sometimes creators don't take this into account and you end up with a problem where objects inside or behind cannot be interacted with.  A bad physics shape which, for instance, covers the entrance of a pergola like an invisible box, will cause this issue.

 

  1. Press CTRL-3 to bring up the edit window and select the pergola. 
  2. If it has an all yellow halo and modifiable you can link a dummy prim as the root and then set the pergola physics shape type to NONE in the Features tab of the edit window.  The dummy prim root makes it so no part of the pergola is root and therefore the physics shape type of the whole pergola can be changed.  Root prim physics shape type cannot be changed to NONE, but children can.  Setting the pergola to NONE negates its physics shape, which is most likely causing the problem.

 

  • Variation 1:  If the pergola is made up of more than one prim, the root will have a yellow halo and the child prims will have a blue halo.  If the root prim is an object that isn't obstructing your couch, you may be able to successfully set all child prims to physics shape typee NONE and fix the problem.  This should negate the physics shape which will allow you to walk through the pergola and hopefully click through it as well.  A small window will pop up and say you can't change the root prim to NONE.  This is normal.  The root prim will keep its physics shape type and the rest will be set to NONE.
  • Variation 2:  Check the Edit Linked Parts checkbox in edit window and select individual prims in the pergola object and change their physics shape type to NONE (surgical approach).  Hold SHIFT to select multiple prims in the linkset if you want to change multiple prims at once, then set the setting in the Features tab.
  • Side note - To see physics shapes (Firestorm), enable Advanced menu with CTRL-ALT-SHIFT-D, then go into that menu and enable Develop menu.  Under the Develop menu you'll find Render Metadata.  Under that you'll find Physics Shapes.  Turn this on and you will see if the physics shape conforms to the object or is boxing in what should be open areas.

Worst case scenario, if none of this works, contact the creator of the pergola and have them fix their product.

Link to comment
Share on other sites

“There is no room to sit, please try another spot”.
This error arises when some bounding box prevents the sitting.
When the server can't find a place we have this "There is no room to sit, please try another spot" error.
The bounding box may belong to a prim in he object or to a prim in the surrounding environment.
Sculpties and old time megaprims often has big unpredictable bounding boxes.
To solve the problem redesign the object or redesign the environment.
You can read more about it and about other peoples experiences on the SL forum: http://community.secondlife.com/t5/Building-and-Texturing-Forum/Strange-quot-no-room-to-sit-quot-problem/td-p/1659779
It must be emphasized, that this is not a script error but a system caveat.

:smileysurprised::):smileyvery-happy:

Link to comment
Share on other sites

This normally happens when you're using a no-poseball system (like nPose or AvSitter) and your furniture is inside the bounding box of some other object (e.g your sculpted pergola).

If your object is made up from enough prims to sit all the avatars -- 2 prims, in your example -- then the work round is an easy one.   Simply drop in a script to loop through the linkset, setting a sit target for each prim.

That way, the sim knows the second sitter should be sitting on the couch rather than the pergola, and lets her sit.   It doesn't matter what you set as the sit target, since as soon as she sits, the script takes over and and positions her.   The sit target is needed only to start the process off.

Something like this should do it:

default{	state_entry()	{		integer max = llGetNumberOfPrims()+1;		integer i = 1;		do {			llLinkSitTarget(i,<0.0,0.0,0.5>,ZERO_ROTATION);		}		while (++i<max);		llRemoveInventory(llGetScriptName());	}}

 

Link to comment
Share on other sites

Glad I could help. 

Adding the regular prim as root allows you to set the whole object (sculpty/mesh), now child prims to the root, as physics shape type NONE, which negates its physics shape that was interfering with you being able to interact with it.  The dummy prim can then be set transparent and you're set.

Link to comment
Share on other sites

Thias has been an interesting thread. I should look in this sub-forum more often.

Since I wrote my "no-balls" system for my furniture that has animations, I've had customers with exactly the same thing happening. I knew what caused the problem but my solution was to exchange the piece for the previous version that used poseballs.

I'm going to try your solution, Innula. It looks to me like people will sit on the sit targets rather than where they actually want to sit, but you're no mug so I'll try it. No doubt it'll work :)

 

ETA: I made a mistake. My thinking was right but you wrote that to go in an object where a script that controls animations takes over, so, although it will overcome the OP's problem when used in a piece that operates animations, and seat avatars up to the number of prims, it doesn't sit the avs properly unless such a system in running. So it's just as I thought.  My mistake was that I hadn't realised that it needs an animations system running.

Link to comment
Share on other sites

Assuming your "no balls" system uses llSetLinkPrimitiveParamsFast to position the sitter -- which certainly nPose, AvSitter and Perfect Sitter do, and I can't think of any other method available that other similar systems might use -- then the script takes over and moves the sitter to the desired position (whether stored in the script or in a notecard).  

But it can only do that after the avatar has succeeded in sitting somewhere on the object, thus firing the changed event and, as far as the script is concerned, becoming a part of the linkset that can be moved around like any other child prim.

Link to comment
Share on other sites

Yes, but I wanted it to work in pieces that don't have animations too, such as sofas. That's what I tested it with. It'll be good for the beds, of course, because they always have the "no-balls" system running. Some of my seating also uses the "no-balls" system but, because they are seats (e.g. sofas), people just want to sit normally too, and anywhere they like, so the 'no-balls' system can be turned off for that purpose. In other words, all my seating could do with a fix, but there isn't one I can use, so, when it comes up, it's still a case of exchanging for the version that uses poseballs.

ETA: My system does use llSetLinkPrimitiveParamsFast().

Link to comment
Share on other sites

If your system uses llSetLinkPrimitiveParamsFast to position avatars, then simply grab their link number in the changed event when they sit down and move them into position.    It doesn't matter where the sit target is, since you're moving them into a position relative to the root, not relative to the prim they've sat on.

Obviously it's a bit more complicated than that, since if  avatar One gets up before avatar Two, you probably don't want avatar Two to move into avatar One's old position, but that's the basic mechanism.

Link to comment
Share on other sites

When the 'no-balls' system is turned off in the seats, so that people can sit on the sofa where they want to sit, llSetLinkPrimitiveParamsFast() naturally isn't used. And that's the point. People want to simply sit where they click to sit, as normal. For instance, a couple would often want to sit closer together than a pair of friends, and they can normally do that on a sofa. I don't any fix for that.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3554 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...