<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://microsoft.com/wsdl/types/" />
  <xs:import namespace="http://www.w3.org/2001/XMLSchema" />
  <xs:element name="SceneObjectPart" nillable="true" type="SceneObjectPart" />
  <xs:complexType name="SceneObjectPart">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="LastOwnerID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="OwnerID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="GroupID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="OwnershipCost" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="ObjectSaleType" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="SalePrice" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="Category" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="CreationDate" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="ParentID" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="m_sitTargetAvatar" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="BaseMask" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="OwnerMask" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="GroupMask" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="EveryoneMask" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="NextOwnerMask" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="Flags" type="ObjectFlags" />
      <xs:element minOccurs="1" maxOccurs="1" name="CreatorID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="FolderID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="InventorySerial" type="xs:unsignedInt" />
      <xs:element minOccurs="0" maxOccurs="1" name="TaskInventory">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="xs:schema" />
            <xs:any />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="ObjectFlags" type="xs:unsignedInt" />
      <xs:element minOccurs="1" maxOccurs="1" name="UUID" type="LLUUID" />
      <xs:element minOccurs="1" maxOccurs="1" name="LocalId" type="xs:unsignedInt" />
      <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="Material" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="RegionHandle" type="xs:unsignedLong" />
      <xs:element minOccurs="1" maxOccurs="1" name="ScriptAccessPin" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="GroupPosition" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="OffsetPosition" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="RotationOffset" type="LLQuaternion" />
      <xs:element minOccurs="1" maxOccurs="1" name="Velocity" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="RotationalVelocity" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="AngularVelocity" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="Acceleration" type="LLVector3" />
      <xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="Color" type="Color" />
      <xs:element minOccurs="0" maxOccurs="1" name="Text" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="SitName" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="TouchName" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="LinkNum" type="xs:int" />
      <xs:element minOccurs="1" maxOccurs="1" name="ClickAction" type="xs:unsignedByte" />
      <xs:element minOccurs="0" maxOccurs="1" name="Shape" type="PrimitiveBaseShape" />
      <xs:element minOccurs="1" maxOccurs="1" name="Scale" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="UpdateFlag" type="xs:unsignedByte" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LLUUID">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="UUID" xmlns:q1="http://microsoft.com/wsdl/types/" type="q1:guid" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="ObjectFlags">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="None" />
          <xs:enumeration value="Physics" />
          <xs:enumeration value="CreateSelected" />
          <xs:enumeration value="ObjectModify" />
          <xs:enumeration value="ObjectCopy" />
          <xs:enumeration value="ObjectAnyOwner" />
          <xs:enumeration value="ObjectYouOwner" />
          <xs:enumeration value="Scripted" />
          <xs:enumeration value="Touch" />
          <xs:enumeration value="ObjectMove" />
          <xs:enumeration value="Money" />
          <xs:enumeration value="Phantom" />
          <xs:enumeration value="InventoryEmpty" />
          <xs:enumeration value="JointHinge" />
          <xs:enumeration value="JointP2P" />
          <xs:enumeration value="JointLP2P" />
          <xs:enumeration value="JointWheel" />
          <xs:enumeration value="AllowInventoryDrop" />
          <xs:enumeration value="ObjectTransfer" />
          <xs:enumeration value="ObjectGroupOwned" />
          <xs:enumeration value="ObjectYouOfficer" />
          <xs:enumeration value="CameraDecoupled" />
          <xs:enumeration value="AnimSource" />
          <xs:enumeration value="CameraSource" />
          <xs:enumeration value="CastShadows" />
          <xs:enumeration value="ObjectOwnerModify" />
          <xs:enumeration value="TemporaryOnRez" />
          <xs:enumeration value="Temporary" />
          <xs:enumeration value="ZlibCompressed" />
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>
  <xs:complexType name="LLVector3">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="X" type="xs:float" />
      <xs:element minOccurs="1" maxOccurs="1" name="Y" type="xs:float" />
      <xs:element minOccurs="1" maxOccurs="1" name="Z" type="xs:float" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LLQuaternion">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="X" type="xs:float" />
      <xs:element minOccurs="1" maxOccurs="1" name="Y" type="xs:float" />
      <xs:element minOccurs="1" maxOccurs="1" name="Z" type="xs:float" />
      <xs:element minOccurs="1" maxOccurs="1" name="W" type="xs:float" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Color" />
  <xs:complexType name="PrimitiveBaseShape">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="PathBegin" type="xs:unsignedShort" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathCurve" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathEnd" type="xs:unsignedShort" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathRadiusOffset" type="xs:byte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathRevolutions" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathScaleX" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathScaleY" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathShearX" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathShearY" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathSkew" type="xs:byte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathTaperX" type="xs:byte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PathTaperY" type="xs:byte" />
      <xs:element 
      <xs:element minOccurs="1" maxOccurs="1" name="PathTwistBegin" type="xs:byte" />
      <xs:element minOccurs="1" maxOccurs="1" name="PCode" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="ProfileBegin" type="xs:unsignedShort" />
      <xs:element minOccurs="1" maxOccurs="1" name="ProfileEnd" type="xs:unsignedShort" />
      <xs:element minOccurs="1" maxOccurs="1" name="ProfileHollow" type="xs:unsignedShort" />
      <xs:element minOccurs="1" maxOccurs="1" name="Scale" type="LLVector3" />
      <xs:element minOccurs="1" maxOccurs="1" name="State" type="xs:unsignedByte" />
      <xs:element minOccurs="1" maxOccurs="1" name="ProfileShape" type="ProfileShape" />
      <xs:element minOccurs="1" maxOccurs="1" name="HollowShape" type="HollowShape" />
      <xs:element minOccurs="1" maxOccurs="1" name="ProfileCurve" type="xs:unsignedByte" />
      <xs:element minOccurs="0" maxOccurs="1" name="TextureEntry" type="xs:base64Binary" />
      <xs:element minOccurs="0" maxOccurs="1" name="ExtraParams" type="xs:base64Binary" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="ProfileShape">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Circle" />
      <xs:enumeration value="Square" />
      <xs:enumeration value="IsometricTriangle" />
      <xs:enumeration value="EquilateralTriangle" />
      <xs:enumeration value="RightTriangle" />
      <xs:enumeration value="HalfCircle" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="HollowShape">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Same" />
      <xs:enumeration value="Circle" />
      <xs:enumeration value="Square" />
      <xs:enumeration value="Triangle" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>