45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
"""
|
|
Demonstrates item creation as well as bodypart / clothing upload
|
|
"""
|
|
|
|
from hippolyzer.lib.base.datatypes import UUID
|
|
from hippolyzer.lib.base.templates import WearableType, Permissions
|
|
from hippolyzer.lib.base.wearables import Wearable, VISUAL_PARAMS
|
|
from hippolyzer.lib.proxy.addon_utils import BaseAddon
|
|
from hippolyzer.lib.proxy.commands import handle_command
|
|
from hippolyzer.lib.proxy.region import ProxiedRegion
|
|
from hippolyzer.lib.proxy.sessions import Session
|
|
|
|
|
|
class ShapeCreatorAddon(BaseAddon):
|
|
@handle_command()
|
|
async def create_shape(self, session: Session, region: ProxiedRegion):
|
|
"""Make a shape with pre-set parameters and place it in the body parts folder"""
|
|
|
|
wearable = Wearable.make_default(WearableType.SHAPE)
|
|
# Max out the jaw jut param
|
|
jaw_param = VISUAL_PARAMS.by_name("Jaw Jut")
|
|
wearable.parameters[jaw_param.id] = jaw_param.value_max
|
|
wearable.name = "Cool Shape"
|
|
|
|
# A unique transaction ID is needed to tie the item creation to the following asset upload.
|
|
transaction_id = UUID.random()
|
|
item = await session.inventory.create_item(
|
|
UUID.ZERO, # This will place it in the default folder for the type
|
|
name=wearable.name,
|
|
type=wearable.wearable_type.asset_type,
|
|
inv_type=wearable.wearable_type.asset_type.inventory_type,
|
|
wearable_type=wearable.wearable_type,
|
|
next_mask=Permissions.MOVE | Permissions.MODIFY | Permissions.COPY | Permissions.TRANSFER,
|
|
transaction_id=transaction_id,
|
|
)
|
|
print(f"Created {item!r}")
|
|
await region.xfer_manager.upload_asset(
|
|
wearable.wearable_type.asset_type,
|
|
wearable.to_str(),
|
|
transaction_id=transaction_id,
|
|
)
|
|
|
|
|
|
addons = [ShapeCreatorAddon()]
|