Jump to content

Resetting seats is not working in my script


VirtualKitten
 Share

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

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

Recommended Posts

I have the following code in change section of my multsit script basically its supposed to reset the seat so that a new seat is created nd give it a seat location top or bottom. Can anyone nswer why this removal of set is not functioning  snipit is below:

 if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  seat="bottom";
                   //llOwnerSay("Bottom going Up");
                    llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, FALSE, ZERO_VECTOR,ZERO_ROTATION ]);
                    llSleep(10);
                    llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,<0.0,0.0,0.01>,<0.0, 0.0, 0.0, 1.0> ]);
       ;
              } else {
                   seat="top";
                     llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET, FALSE, ZERO_VECTOR,ZERO_ROTATION ]);
                     llSleep(10);
                     llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET, TRUE,<0.00,0.0,0.01>,<0.0, 0.0, 0.0, 1.0> ]);
                  // Check give way if people coming up.
                  //llOwnerSay("Top going down");
                  list climb =  find_anyone_up_or_down( agent);
                  if(llGetListLength(climb)!=0) {
                     llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,( End_Pos+ l_pos+<1.0,0.0,0.0>),PRIM_ROT_LOCAL,End_Rot]);
                     llUnSit(agent);
                     llSay(0, "There are other forest folk comming up the rope please wait for them before descending the rope , then please try again.");
                     return;
                  }
              }

 

Set the sit location for the prim. The sit location is relative to the prim's position and rotation.

• vector offset Additional position for the sit target in local prim coordinates.  
• rotation rot Additional rotation for the sit target relative to the prim rotation.  
 

If offset == <0.0, 0.0, 0.0> then the sit target is removed.

src:https://wiki.secondlife.com/wiki/LlSitTarget

I even tried 

llSitTarget(<0.0, 0.0, 0.0>, ZERO_ROTATION);

llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET, TRUE,<0.00,0.0,0.01>,<0.0, 0.0, 0.0, 1.0> ]);

 llSleep(5);

 

it does remove seat  but does not make it free again. and bring in new seat .  I tested it was removed with :
 

list GetSitTargetLinks() {
  integer iLinkCount = llGetNumberOfPrims();
  integer iIndex;
  list lRequest = [];
  for (iIndex = 1; iIndex <= iLinkCount ; iIndex++) {
    lRequest += [ PRIM_LINK_TARGET, iIndex, PRIM_SIT_TARGET ];
  }
 
  list lData = llGetLinkPrimitiveParams(1, lRequest);
  llOwnerSay("LData:"+llDumpList2String(lData,"|"));
  
  list lSitTargetLinks = [];
  for (iIndex = 1; iIndex <= iLinkCount ; iIndex++) {
    integer bSitTarget = llList2Integer(lData, (iIndex - 1) * 3);
    if (bSitTarget) {
      lSitTargetLinks += iIndex;
    }
  }
  return lSitTargetLinks;
}

default
{
    touch_start(integer total_number)
    {
        llOwnerSay("Hello, !"+ llDumpList2String(GetSitTargetLinks(),"|"));
    }
}

 

 

Hugs D

Edited by VirtualKitten
Link to comment
Share on other sites

I guess your 10 seconds sleeps can be a problem. It will deactivate the sit target for that period. Each time someone stands up it is deactivated for another 10 seconds.

Other than that, there is no reason why the activation won't work.

I'm uncertain what you expect it to do, though?

  • Confused 1
Link to comment
Share on other sites

@arton Rotaru . The first avatar has not stood up they have been moved off by my multi-seat script and are no longer in that same seated position position to different coordinates. Wiki explains that they will stay on that seat until they are moved off from it. Currently my two seats work for a single avatar . My multi-sit is capable as of many that the Linden Script will handle without crashing .

However these actual seat are a real problem as I need to know which one is sat on top or bottom  . e.g. Lianne sits on bottom and is moved off . I sit next on seat 1 , prim 1, but the seat is in use by Lianne. As Liane has been moved by my seat script . When I sit at bottom at seat 1 my avatar jumps direct to seat 2 as seat one is occupied  even though its been removed deleted  and then reinstated . The section of code should do this but it doesn't . Something else s happening .

The removal of the llSitTarget(<0.0, 0.0, 0.0>, ZERO_ROTATION); did not seem to work. So I introduced llSleep(5) and llSleep(10) to give it time for the interpreter to process. However this is not required as the seat is removed and reinstated according to my second script but my avatar cant sit on new seat for some unknown reason. I hope that explains.

 

Hugs D

Link to comment
Share on other sites

I still cant find out why it does not disable the seat with avatar moved away from it . Do I have to create 5 separate seats on each end or create another seat  a certain difference apart  so 10 in total . Can i create these dynamically as on as next avatar moved off and remove on exit  how do i keep track of these in yet another 2x list with five slots in it of possible seats and look for empty ones . This seems a ridiculous amount of extra processing, Hugs D

Edited by VirtualKitten
Link to comment
Share on other sites

Yeah, manipulating the sit targets won't work. The avatar will only be removed when he stands up. Moving it within a linkset does not remove anything.

If I understand this correctly, I would do this with unlinked seats and a rezzer. Moving them with KeyFramedMotion. Once one end is occupied, send message to the other end to disable that end. Let the rezzer keep track of which end and how many seats are currently in use.

  • Sad 1
Link to comment
Share on other sites

That ridiculous so as the seat is deleted how can avatar be hanging on to it ?

So you are suggesting sit on bottom move to top  after first sit detected create a second sit target at the top delete the first one  leave the one after for next avatar ? How far minimum can seats be apart ?

Hugs D

Link to comment
Share on other sites

so are you suggesting  this below  and clearing the seat wen the avatar get up to top or bottom wit llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET, TRUE,<0.00,0.0,0.00>,<0.0, 0.0, 0.0, 1.0> ]) and removing item from list usage; ant like wise for bottom?

list seats_pos_bottom = [<0.00,0.0,0.01>,"key",<0.00,0.0,0.02>,"key",<0.00,0.0,0.03>,"key"<0.00,0.0,0.04>,"key"<0.00,0.0,0.05>,"key"];

list seats_pos_top= [<0.00,0.0,0.01>,"key",<0.00,0.0,0.02>,"key",<0.00,0.0,0.03>,"key"<0.00,0.0,0.04>,"key"<0.00,0.0,0.05>,"key"];

if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  seat="bottom";
                   //llOwnerSay("Bottom going Up");
                    llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET , _getFreeSeat(seats_pos_bottom,agent), ZERO_ROTATION ]);
                   
              } else {
                   seat="top";
                     llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET,  , _getFreeSeat(seats_pos_top,agent), ZERO_ROTATION ]);
                
                 
                     return;
                  }
              }

  Hugs D

Edited by VirtualKitten
Link to comment
Share on other sites

1 hour ago, VirtualKitten said:

That ridiculous so as the seat is deleted how can avatar be hanging on to it ?

That's not ridiculoues, it's just how the platform works. The platform has certain capabilities, and certain limits. It doesn't matter if we like, or dislike some of those. We have to work with what is possible. Sometimes it might take cumbersome workarounds to achieve certain tasks. Other things we would like to do may not within the platforms capabilities, though. That's just the way it is. Complaining about what is not working as we would like it to be working doesn't help much.

51 minutes ago, VirtualKitten said:

so are you suggesting  this below  and clearing the seat wen the avatar get up to top or bottom wit llSetLinkPrimitiveParamsFast(top_seat,[ PRIM_SIT_TARGET, TRUE,<0.00,0.0,0.00>,<0.0, 0.0, 0.0, 1.0> ]) and removing item from list usage; ant like wise for bottom?

No, what I have in mind is a separate object for each seat. First of all I'm just guessing what you are trying to achieve. From waht I understood so far, you are making some kind of rope climbing thing. Where more than one avatar can climb in one direction at the same time.

If this is the scenario, I would make a seat rezzer script. initially rezzing one seat at the top, one at the bottom.
Now an AV takes the bottom seat. Climbs up the rope. Sending a message to the top seat to disable/delete that top seat object.
Sending another message to the rezzer that a bottom seat is been in use.
Rezzer counts bottom_seat += 1;
If (bottom_seat < 5 ) rez next bottom seat.
If that is taken as well, send the messages as before.
Rezzer counts bottom_seat += 1; (makes bottom_seat = 2)

Now someone on the rope stands up, sends a message to the rezzer that's it's going to delete itself.
Rezzer counts bottom_seat -= 1;
and so on.

If (bottom_seat == 0)  // nobody on the rope anymore
rez top seat.

You may have to do some checks if there is already an un-used seat rezzed. That can be done by keeping track of the key of the last rezzed bottom seat which you get in object_rez(key id) event.

if (llList2Vector(llGetObjectDetails(gkLast_bottom_seat_key, [OBJECT_POS], 0) != bottom_seat_rez_pos)
Rez new seat;
else
Say(already a seat out there).

Also I would delay the next seat rez a few seconds (timer) to make sure there is room enough between the climbers.

If that's not the scenario, I'm afraid we will need more context.
 

Edited by arton Rotaru
  • Like 1
  • Sad 1
Link to comment
Share on other sites

I thought this might be better to store the seat in the table I already have  and then get a new seat from other list 

vector _getFreeSeat(list seats_pos_bottom, key agent) {
    integer e = llListFindList(llList2ListStrided(seats_pos_bottom,2,20,2),["key"]);
    if(e != -1){
        // Found empty slot in e 
        return llList2Vector(llList2ListStrided(seats_pos_bottom,2,20,2),e);
        
    } 
    return ZERO_VECTOR;
}

list _removeseat(list l_seats ,key agent) {
      integer e = llListFindList(llList2ListStrided(l_seats,2,20,2),["key"]);
     if(e!=-1) {
         return llListReplaceList(l_seats,["key"],e,e);
     }
     return [];
}

list seats_pos_bottom = [<0.00,0.0,0.01>,"key",<0.00,0.0,0.02>,"key",<0.00,0.0,0.03>,"key",<0.00,0.0,0.04>,"key",<0.00,0.0,0.05>,"key"];

if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],"bottom");
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"vloc"],(string)llList2Vector( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0));
                  vector current_seat = llList2Vector( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,_getFreeSeat(seats_pos_bottom,agent),<0.0, 0.0, 0.0, 1.0> ]);
       
              

And to clear it with a system call to clear this when clear to a key when got up that way a new set is created after first seat .

Edited by VirtualKitten
Link to comment
Share on other sites

35 minutes ago, VirtualKitten said:

That wont work ta a multiseat what is returned in above

PRIM_SIT_TARGET

 

is it a vector

What I have laid out are unlinked individual objects. Which move on it's own when someone sits on. That vector check is just to be aware if there is an un-used seat already rezzed, before rezzing a new one.

I still don't know what it actually is what you are building, and what those seats are supposed to do.

  • Like 1
  • Sad 1
Link to comment
Share on other sites

Sorry arton I thought I explained that ., Its a multi eat animated rope . I had a frustrating time yesterday all my textures  in my model setting vanished and my script crashed which has done something funny to avatar positions placing them 0.5 of the rope . which I haven't  solved it was all working in a previous 1 seat version so I have to work out what's changed the scripts snippits should work but am wondering if its getting a linden seat at all now as its falling into my error trap codes for not returning seat keys.

Hugs

Link to comment
Share on other sites

Well I tried the following

 if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  seat ="bottom";
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],seat);
                  string v = llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llOwnerSay("************************* v:" +(string)llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]));
                  //SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"vloc"],(string)v);
                  vector current_seat = llList2Vector( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,_getFreeSeat(seats_pos_bottom,agent),<0.0, 0.0, 0.0, 1.0> ]);
              }

Disabling SEATS_data above ,  to see what was being put into it. This is what (string)llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET])); had in it as I was climbing which is odd all 0's and not my seat vector

[03:30] VK seat: ************************* v:1<0.000000, 0.000000, 0.010000><0.000000, 0.000000, 0.000000, 1.000000>01<0.000000, 0.000000, 0.010000><0.000000, 0.000000, 0.000000, 1.000000>

Further more  even more oddly the second seat does not get set up I ran my scripts second one on original post and it reported 

[03:31] VK  seat: LData:0|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|0|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.010000>|<0.000000, 0.000000, 0.000000, 1.000000>|0|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>
[03:31] VK  with 1 seat: Hello, !3|4

Clearly I expected three seats. What is going wrong ?

Hugs D

 

 

Link to comment
Share on other sites

j is fin Molly , thank you for joining us :)

 integer j =  llGetNumberOfPrims()-1;

was better

if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  seat ="bottom";
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],seat);
                  quaternion v = (quaternion)llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"vloc"],(string)v);
                  quaternion  current_seat =(quaternion) llList2String( llGetLinkPrimitiveParams(bottom_seat, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llOwnerSay("current_seat:"+(string)current_seat);
                  llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,_getFreeSeat(seats_pos_bottom,agent),(quaternion)current_seat ]);
              }

 

Edited by VirtualKitten
Link to comment
Share on other sites

check the runtime value: llOwnerSay( (string)j ) ;

edit:

i had a quick look into llGet... PRIM_SIT_TARGET

i might be wrong but it seems Get isn't implemented. Seems to always returns ZERO_ values, at least when do it the wiki documented way

if this is not wrong then you going to have manage the sit targets yourself

crossed out bit is wrong.  See below

Edited by Mollymews
  • Like 1
Link to comment
Share on other sites

7 hours ago, VirtualKitten said:

Its a multi eat animated rope

Ok. So is that rope itself animated? Is it moving? Are just the avatars animated? Are both animated, the rope and the avatars? Are the Avatars just hanging on the rope? Or are they supposed to move up or down?

I mean, why so secretive? We are not going to steal anything from you. But we aren't mind readers.
 

7 hours ago, VirtualKitten said:

it was all working in a previous 1 seat version

Which raises the question, why using a multi seat script in a single seat application?
Don't get me wrong, but that one prim multi seat script from the wiki, you are basing this of, is primarily a demonstration of how JSON can be used with LSL. It's by no means the #1 goto  script when it comes to seating avatars.

Using that for anything serious is just asking for trouble for the sake of saving a prim or 2.

Link to comment
Share on other sites

2 hours ago, Mollymews said:

i had a quick look into llGet... PRIM_SIT_TARGET

i might be wrong but it seems Get isn't implemented. Seems to always returns ZERO_ values, at least when do it the wiki documented way

It returns ZERO_ values when the sit target is removed/deactivated. On an active sit target it returns [status, pos, rot].

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

5 hours ago, arton Rotaru said:

It returns ZERO_ values when the sit target is removed/deactivated. On an active sit target it returns [status, pos, rot].

yes this is true

i was  a bit too hasty with my testing. Is working as expected this morning

  • Like 1
Link to comment
Share on other sites

Molly thank you for your help . I saw that too . The main problem was the

quaternion

I was expecting vector I am going to print it and have more detailed look. I did notice one of the other prims was moving. So I added an extra key check' 'llObtainLinkFromKey(l_key); but have not had time to test it yesterday.

My textures were got back something had cleared their settings  but it all good now . I did have a major script crash in week . I wonder if it was that  .This is what I have? at present I still don't know why my avatar animation position has now moved and is 0.5m out .its hard coded  for some reason I could not upload mesh yesterday. I am hoping that is just secondlife update. 

Just to be clear this is a multi-seat using JSON which I tested as far as one seat before it gave errors  on two  and more this was because of the non release of seat, when the seat was not free, despite it being disabled  when my stuff took over.

I am having to implement more seat handling to create an extra seat when first avatar sits  to ensure that a new seat is available as I said above and track them in my seat JSON handler. Its a lot ore complicated to track.

Hugs D.

 

Edited by VirtualKitten
Link to comment
Share on other sites

with a rope climb then I recommend not to use sit targets

i recommend treating each agent/avatar that sits on the rope as a linked prim

for example. The basics of a multi-agent climb up rope

changed(integer change)
{
   if(change & CHANGED_LINK)
   {
     .. an agent either sat on the rope or agent got off the rope
     ..
     .. if (list agents count on rope is 1 AND previous count was 0) start the timer
     .. else if (agents on rope is 0) stop the timer
     .. else do nothing
   }
}

timer()
{
   ... loop thru list agents on the rope (from bottom spot on rope to top spot)
       ... request animation permission for each agent on the rope
}

run_time_permissions(integer perm)
{
   if (perm & PERMISSION_TRIGGER_ANIMATION)
   {
      if (agent is at bottom of rope) play(LinkPos, LinkRot, MountRopeAnimation)
      
      ... move agent up one spot on the rope. play(LinkPos, LinkRot, ClimbUpRopeAnimation)
      
      if (agent is at top of rope) play (LinkPos, LinkRot, DismountRopeAnimation). Unsit agent
   }
}

 

a climb down rope is done in the reverse order to climb up


when we are tempted to say: How about a rope that is both climb up and climb down ?

my answer is to not bother. Have a climb down rope and a climb up rope side by side. This way on the occasion there are multiple agents wanting to go and down at the same time then nobody has to wait

Link to comment
Share on other sites

Thank molly i now have this 

if(llAvatarOnLinkSitTarget(bottom_seat)== agent) {
                  seat ="bottom";
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],seat);
                  quaternion v = (quaternion)llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"vloc"],(string)v);
                  quaternion  current_seat =(quaternion) llList2String( llGetLinkPrimitiveParams(bottom_seat, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llOwnerSay("current_seat:"+(string)current_seat);
                  llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,_getFreeSeat(seats_pos_bottom,agent),(quaternion)current_seat ]);
                   list climb =  find_anyone_up_or_down( agent);
                  if(llGetListLength(climb)!=0) {
                     llUnSit(agent);
                     llSay(0, "There are other forest folk comming down the rope please wait for them before climbing the rope , then please try again.");
                     return;
                  }
              } else {
                  seat="top";
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],seat);
                  quaternion  v = (quaternion)llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"vloc"],(string)v);
                  quaternion  current_seat =(quaternion) llList2String( llGetLinkPrimitiveParams(bottom_seat, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);
                  llOwnerSay("current_seat:"+(string)current_seat);
                  llSetLinkPrimitiveParamsFast(bottom_seat,[ PRIM_SIT_TARGET, TRUE,_getFreeSeat(seats_pos_bottom,agent),(quaternion)current_seat ]);
                  list climb =  find_anyone_up_or_down( agent);
                  if(llGetListLength(climb)!=0) {
                     llUnSit(agent);
                     llSay(0, "There are other forest folk comming up the rope please wait for them before descending the rope , then please try again.");
                     return;
                  }
              }

 

 

Link to comment
Share on other sites

Quote
quaternion v = (quaternion)llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET,j, PRIM_SIT_TARGET]),0);

 

llGet... PRIM_SIT_TARGET returns  a list. [integer status, vector pos, rotation rot]. So to get the rotation you have to get the third entry (2).
 

quaternion v = (quaternion)llList2String( llGetLinkPrimitiveParams(j, [PRIM_SIT_TARGET]), 2);

Also pay attention to the number of arguments you have in a llGLPP call. Yours likely will throw script errors.

Link to comment
Share on other sites

What does tis mean

 

c7ea353d76e48a25fe2e82ac1df183ec.png

 

I so had to turn this off which didnt work

   if (perm & PERMISSION_CONTROL_CAMERA)
        {
            /*llClearCameraParams(); // reset camera to default
            llSetCameraParams([
            CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE)
            CAMERA_POSITION, <0,0,0>, // region relative position
            CAMERA_ACTIVE, TRUE, // 1 is active, 0 is inactive
            CAMERA_BEHINDNESS_ANGLE, 30.0, // (0 to 180) degrees
            CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds
            CAMERA_DISTANCE, 10.0, // ( 0.5 to 10) meters
            //CAMERA_FOCUS, <0,0,5>, // region relative position
            CAMERA_FOCUS_LAG, 0.05 , // (0 to 3) seconds
            CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE)
            CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
            CAMERA_PITCH, 10.0, // (-45 to 80) degrees
            CAMERA_POSITION, <0,0,0>, // region relative position
            CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds
            CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE)
            CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters
            CAMERA_FOCUS_OFFSET, <2.0, 2.0, 0.0> // <-10,-10,-10> to <10,10,10> meters
        ]);
        */

Edited by VirtualKitten
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 774 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...