/*
* Copyright (c) 2006-2014, openmetaverse.org
* All rights reserved.
*
* - Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* - Neither the name of the openmetaverse.org nor the names
* of its contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
using System;
namespace OpenMetaverse
{
///
/// Identifier code for primitive types
///
public enum PCode : byte
{
/// None
None = 0,
/// A Primitive
Prim = 9,
/// A Avatar
Avatar = 47,
/// Linden grass
Grass = 95,
/// Linden tree
NewTree = 111,
/// A primitive that acts as the source for a particle stream
ParticleSystem = 143,
/// A Linden tree
Tree = 255
}
///
/// Primary parameters for primitives such as Physics Enabled or Phantom
///
[Flags]
public enum PrimFlags : uint
{
/// Deprecated
None = 0,
/// Whether physics are enabled for this object
Physics = 0x00000001,
///
CreateSelected = 0x00000002,
///
ObjectModify = 0x00000004,
///
ObjectCopy = 0x00000008,
///
ObjectAnyOwner = 0x00000010,
///
ObjectYouOwner = 0x00000020,
///
Scripted = 0x00000040,
/// Whether this object contains an active touch script
Touch = 0x00000080,
///
ObjectMove = 0x00000100,
/// Whether this object can receive payments
Money = 0x00000200,
/// Whether this object is phantom (no collisions)
Phantom = 0x00000400,
///
InventoryEmpty = 0x00000800,
///
JointHinge = 0x00001000,
///
JointP2P = 0x00002000,
///
JointLP2P = 0x00004000,
/// Deprecated
JointWheel = 0x00008000,
///
AllowInventoryDrop = 0x00010000,
///
ObjectTransfer = 0x00020000,
///
ObjectGroupOwned = 0x00040000,
/// Deprecated
ObjectYouOfficer = 0x00080000,
///
CameraDecoupled = 0x00100000,
///
AnimSource = 0x00200000,
///
CameraSource = 0x00400000,
///
CastShadows = 0x00800000,
/// Server flag, will not be sent to clients. Specifies that
/// the object is destroyed when it touches a simulator edge
DieAtEdge = 0x01000000,
/// Server flag, will not be sent to clients. Specifies that
/// the object will be returned to the owner's inventory when it
/// touches a simulator edge
ReturnAtEdge = 0x02000000,
/// Server flag, will not be sent to clients.
Sandbox = 0x04000000,
/// Server flag, will not be sent to client. Specifies that
/// the object is hovering/flying
Flying = 0x08000000,
///
ObjectOwnerModify = 0x10000000,
///
TemporaryOnRez = 0x20000000,
///
Temporary = 0x40000000,
///
ZlibCompressed = 0x80000000
}
///
/// Sound flags for sounds attached to primitives
///
[Flags]
public enum SoundFlags : byte
{
///
None = 0,
///
Loop = 0x01,
///
SyncMaster = 0x02,
///
SyncSlave = 0x04,
///
SyncPending = 0x08,
///
Queue = 0x10,
///
Stop = 0x20
}
public enum ProfileCurve : byte
{
Circle = 0x00,
Square = 0x01,
IsoTriangle = 0x02,
EqualTriangle = 0x03,
RightTriangle = 0x04,
HalfCircle = 0x05
}
public enum HoleType : byte
{
Same = 0x00,
Circle = 0x10,
Square = 0x20,
Triangle = 0x30
}
public enum PathCurve : byte
{
Line = 0x10,
Circle = 0x20,
Circle2 = 0x30,
Test = 0x40,
Flexible = 0x80
}
///
/// Material type for a primitive
///
public enum Material : byte
{
///
Stone = 0,
///
Metal,
///
Glass,
///
Wood,
///
Flesh,
///
Plastic,
///
Rubber,
///
Light
}
///
/// Used in a helper function to roughly determine prim shape
///
public enum PrimType
{
Unknown,
Box,
Cylinder,
Prism,
Sphere,
Torus,
Tube,
Ring,
Sculpt,
Mesh
}
///
/// Extra parameters for primitives, these flags are for features that have
/// been added after the original ObjectFlags that has all eight bits
/// reserved already
///
[Flags]
public enum ExtraParamType : ushort
{
/// Whether this object has flexible parameters
Flexible = 0x10,
/// Whether this object has light parameters
Light = 0x20,
/// Whether this object is a sculpted prim
Sculpt = 0x30,
/// Whether this object is a light image map
LightImage = 0x40,
/// Whether this object is a mesh
Mesh = 0x60,
}
///
///
///
public enum JointType : byte
{
///
Invalid = 0,
///
Hinge = 1,
///
Point = 2,
//
//[Obsolete]
//LPoint = 3,
//[Obsolete]
//Wheel = 4
}
///
///
///
public enum SculptType : byte
{
///
None = 0,
///
Sphere = 1,
///
Torus = 2,
///
Plane = 3,
///
Cylinder = 4,
///
Mesh = 5,
///
Invert = 64,
///
Mirror = 128
}
///
///
///
public enum FaceType : ushort
{
///
PathBegin = 0x1 << 0,
///
PathEnd = 0x1 << 1,
///
InnerSide = 0x1 << 2,
///
ProfileBegin = 0x1 << 3,
///
ProfileEnd = 0x1 << 4,
///
OuterSide0 = 0x1 << 5,
///
OuterSide1 = 0x1 << 6,
///
OuterSide2 = 0x1 << 7,
///
OuterSide3 = 0x1 << 8
}
///
///
///
public enum ObjectCategory
{
///
Invalid = -1,
///
None = 0,
///
Owner,
///
Group,
///
Other,
///
Selected,
///
Temporary
}
///
/// Attachment points for objects on avatar bodies
///
///
/// Both InventoryObject and InventoryAttachment types can be attached
///
public enum AttachmentPoint : byte
{
/// Right hand if object was not previously attached
[EnumInfo(Text = "Default")]
Default = 0,
/// Chest
[EnumInfo(Text = "Chest")]
Chest = 1,
/// Skull
[EnumInfo(Text = "Head")]
Skull,
/// Left shoulder
[EnumInfo(Text = "Left Shoulder")]
LeftShoulder,
/// Right shoulder
[EnumInfo(Text = "Right Shoulder")]
RightShoulder,
/// Left hand
[EnumInfo(Text = "Left Hand")]
LeftHand,
/// Right hand
[EnumInfo(Text = "Right Hand")]
RightHand,
/// Left foot
[EnumInfo(Text = "Left Foot")]
LeftFoot,
/// Right foot
[EnumInfo(Text = "Right Foot")]
RightFoot,
/// Spine
[EnumInfo(Text = "Back")]
Spine,
/// Pelvis
[EnumInfo(Text = "Pelvis")]
Pelvis,
/// Mouth
[EnumInfo(Text = "Mouth")]
Mouth,
/// Chin
[EnumInfo(Text = "Chin")]
Chin,
/// Left ear
[EnumInfo(Text = "Left Ear")]
LeftEar,
/// Right ear
[EnumInfo(Text = "Right Ear")]
RightEar,
/// Left eyeball
[EnumInfo(Text = "Left Eye")]
LeftEyeball,
/// Right eyeball
[EnumInfo(Text = "Right Eye")]
RightEyeball,
/// Nose
[EnumInfo(Text = "Nose")]
Nose,
/// Right upper arm
[EnumInfo(Text = "Right Upper Arm")]
RightUpperArm,
/// Right forearm
[EnumInfo(Text = "Right Lower Arm")]
RightForearm,
/// Left upper arm
[EnumInfo(Text = "Left Upper Arm")]
LeftUpperArm,
/// Left forearm
[EnumInfo(Text = "Left Lower Arm")]
LeftForearm,
/// Right hip
[EnumInfo(Text = "Right Hip")]
RightHip,
/// Right upper leg
[EnumInfo(Text = "Right Upper Leg")]
RightUpperLeg,
/// Right lower leg
[EnumInfo(Text = "Right Lower Leg")]
RightLowerLeg,
/// Left hip
[EnumInfo(Text = "Left Hip")]
LeftHip,
/// Left upper leg
[EnumInfo(Text = "Left Upper Leg")]
LeftUpperLeg,
/// Left lower leg
[EnumInfo(Text = "Left Lower Leg")]
LeftLowerLeg,
/// Stomach
[EnumInfo(Text = "Belly")]
Stomach,
/// Left pectoral
[EnumInfo(Text = "Left Pec")]
LeftPec,
/// Right pectoral
[EnumInfo(Text = "Right Pec")]
RightPec,
/// HUD Center position 2
[EnumInfo(Text = "HUD Center 2")]
HUDCenter2,
/// HUD Top-right
[EnumInfo(Text = "HUD Top Right")]
HUDTopRight,
/// HUD Top
[EnumInfo(Text = "HUD Top Center")]
HUDTop,
/// HUD Top-left
[EnumInfo(Text = "HUD Top Left")]
HUDTopLeft,
/// HUD Center
[EnumInfo(Text = "HUD Center 1")]
HUDCenter,
/// HUD Bottom-left
[EnumInfo(Text = "HUD Bottom Left")]
HUDBottomLeft,
/// HUD Bottom
[EnumInfo(Text = "HUD Bottom")]
HUDBottom,
/// HUD Bottom-right
[EnumInfo(Text = "HUD Bottom Right")]
HUDBottomRight,
/// Neck
[EnumInfo(Text = "Neck")]
Neck,
/// Avatar Center
[EnumInfo(Text = "Avatar Center")]
Root,
}
///
/// Tree foliage types
///
public enum Tree : byte
{
/// Pine1 tree
Pine1 = 0,
/// Oak tree
Oak,
/// Tropical Bush1
TropicalBush1,
/// Palm1 tree
Palm1,
/// Dogwood tree
Dogwood,
/// Tropical Bush2
TropicalBush2,
/// Palm2 tree
Palm2,
/// Cypress1 tree
Cypress1,
/// Cypress2 tree
Cypress2,
/// Pine2 tree
Pine2,
/// Plumeria
Plumeria,
/// Winter pinetree1
WinterPine1,
/// Winter Aspen tree
WinterAspen,
/// Winter pinetree2
WinterPine2,
/// Eucalyptus tree
Eucalyptus,
/// Fern
Fern,
/// Eelgrass
Eelgrass,
/// Sea Sword
SeaSword,
/// Kelp1 plant
Kelp1,
/// Beach grass
BeachGrass1,
/// Kelp2 plant
Kelp2
}
///
/// Grass foliage types
///
public enum Grass : byte
{
///
Grass0 = 0,
///
Grass1,
///
Grass2,
///
Grass3,
///
Grass4,
///
Undergrowth1
}
///
/// Action associated with clicking on an object
///
public enum ClickAction : byte
{
/// Touch object
Touch = 0,
/// Sit on object
Sit = 1,
/// Purchase object or contents
Buy = 2,
/// Pay the object
Pay = 3,
/// Open task inventory
OpenTask = 4,
/// Play parcel media
PlayMedia = 5,
/// Open parcel media
OpenMedia = 6
}
///
/// Type of physics representation used for this prim in the simulator
///
public enum PhysicsShapeType : byte
{
/// Use prim physics form this object
Prim = 0,
/// No physics, prim doesn't collide
None,
/// Use convex hull represantion of this prim
ConvexHull
}
}