VP_EVENT_TELEPORT

From Virtual Paradise Wiki
Revision as of 04:37, 25 August 2013 by Roy Curtis (talk | contribs) (added example (please check for c correctness))
Jump to navigation Jump to search
Event set and handler snippet

vp_event_set(instance, VP_EVENT_TELEPORT, event_teleport);

void event_teleport(VPInstance instance) { }

A request for the receiving client to teleport to a location, sent to the client from a vp_teleport() call.

Attributes

Attribute Usage
VP_AVATAR_SESSION Source session ID of the teleport request
VP_TELEPORT_X Destination X coordinate
VP_TELEPORT_Y Destination Y coordinate
VP_TELEPORT_Z Destination Z coordinate
VP_TELEPORT_PITCH Destination pitch rotation
VP_TELEPORT_YAW Destination yaw rotation
VP_TELEPORT_WORLD Destination world

Behavior

  • If VP_TELEPORT_WORLD is a blank string, it should be assumed that the client use its current world
  • This event is only broadcasted to the target session; no other sessions will see it
  • The teleport is not enforced by the server; the client may ignore the event

Examples

This is a minimal program example which contains no error checking

<c>

  1. include <vpsdk/VP.h>
  2. include <stdio.h>
  3. include <stdlib.h>
  1. define Username "User"
  2. define Password "1234"
  3. define World "VP-Build"

VPInstance sdk;

int main(int argc, char ** argv) {

   vp_init(VPSDK_VERSION);
   sdk = vp_create();
   vp_connect_universe(sdk, "universe.virtualparadise.org", 57000);    
   vp_login(sdk, Username, Password, "VPBot");
   vp_enter(sdk, World);
   vp_state_change(sdk);
   vp_event_set(sdk, VP_EVENT_TELEPORT, on_teleport);
   
   while(vp_wait(sdk, 1000) == 0){}
   return 0;

}

void event_teleport(VPInstance sdk) {

   // Only teleports to given coordinates and rotation, not world
   // To teleport, we need to set our MY_* attributes to given teleport
   // attributes and change state
   vp_float_set(sdk, VP_MY_X, vp_float(sdk, VP_TELEPORT_X));
   vp_float_set(sdk, VP_MY_Y, vp_float(sdk, VP_TELEPORT_Y));
   vp_float_set(sdk, VP_MY_Z, vp_float(sdk, VP_TELEPORT_Z));
   vp_float_set(sdk, VP_MY_PITCH, vp_float(sdk, VP_TELEPORT_PITCH));
   vp_float_set(sdk, VP_MY_YAW, vp_float(sdk, VP_TELEPORT_YAW));
   vp_state_change(sdk);

} </c>