SubWorlds

Revision as of 18:57, 4 June 2008 by Lontahv (Talk | contribs) (Use)

Note: This tutorial has been made in preparation for an upcoming release of PyPrp, it will only work with the newest (unreleased version). This is currently unsupported (we won't help you with something if you get stuck).


SubWorlds

About

SubWorlds are objects that make your avatar stand still relative to them. They are used to simulate normal inertia(the transferal of motion to another object) in Uru. A prime example is the Er'Cana harvester.


Use

To use SubWorlds in PyPrp you need a few things; a entrance-region, a exit region, the SubWorld its self and (if you don't want to fall though the floor) some objects that you can interact with while you are in the SubWorld eg. elevator floor.

Note: Both of the next two regions need to have "Bounds" set.

The entrance-region should be placed where you want to enter the SubWorld, say the inside-threshold of the elevator and should carry this AlcScript:

<object>:
    type: region
    regiontype: subworld
    region:
        subworld: <subworld-object name>

The exit-region should be on the outer-threshhold of your elevator (if you have an elevator) and should have the AlcScript:

<object>:
    type: region
    regiontype: subworld
    physical:
        subworld: <subworld-object name>

Alternatively, your exit region can encompass the walkable area of the subworld, and have a slightly different script:

<object>:
    type: region
    regiontype: subworld
    region:
        onexit: 1
    physical:
        subworld: <subworld-object name>

The onexit parameter indicates that the region should be triggered when the avatar leaves it. This way, whenever you step off your subworld platform, you will be returned to the normal world.

The SubWorld should be an empty representing the coordinate system of the subworld, and it's script should look like this:

<object>:
    type: subworld

Here's the most important part; The SubWorld colliders:

For anything you're going to collide against in the non-SubWorld you have as a collider... right? For everything you're going collide with in the SubWorld you need a collider with this AlcScript:

<object>:
   physical:
       subworld: <subworld-object name>

This is why the exit-region needed to have the physical.subworld code attached, it's because regions are a kind of collider, and if you can't collide, you can't trigger it. You should also set this for all regions that are expected to be triggered while you are in the SubWorld eg. elevator click-regions.


That just about wraps up everything you need to know. :)