//region Public Methods
public OSD GetOSD()
{
OSDMap path = new OSDMap(14);
path.put("begin", OSD.FromReal(PrimData.PathBegin));
path.put("curve", OSD.FromInteger((int)PrimData.PathCurve.getIndex()));
path.put("end", OSD.FromReal(PrimData.PathEnd));
path.put("radius_offset", OSD.FromReal(PrimData.PathRadiusOffset));
path.put("revolutions", OSD.FromReal(PrimData.PathRevolutions));
path.put("scale_x", OSD.FromReal(PrimData.PathScaleX));
path.put("scale_y", OSD.FromReal(PrimData.PathScaleY));
path.put("shear_x", OSD.FromReal(PrimData.PathShearX));
path.put("shear_y", OSD.FromReal(PrimData.PathShearY));
path.put("skew", OSD.FromReal(PrimData.PathSkew));
path.put("taper_x", OSD.FromReal(PrimData.PathTaperX));
path.put("taper_y", OSD.FromReal(PrimData.PathTaperY));
path.put("twist", OSD.FromReal(PrimData.PathTwist));
path.put("twist_begin", OSD.FromReal(PrimData.PathTwistBegin));
OSDMap profile = new OSDMap(4);
profile.put("begin", OSD.FromReal(PrimData.ProfileBegin));
profile.put("curve", OSD.FromInteger((int)PrimData.profileCurve));
profile.put("hole", OSD.FromInteger((int)PrimData.getProfileHole().getIndex()));
profile.put("end", OSD.FromReal(PrimData.ProfileEnd));
profile.put("hollow", OSD.FromReal(PrimData.ProfileHollow));
OSDMap volume = new OSDMap(2);
volume.put("path", path);
volume.put("profile", profile);
OSDMap prim = new OSDMap(20);
if (Properties != null)
{
prim.put("name", OSD.FromString(Properties.Name));
prim.put("description", OSD.FromString(Properties.Description));
}
else
{
prim.put("name", OSD.FromString("Object"));
prim.put("description", OSD.FromString(""));
}
prim.put("phantom", OSD.FromBoolean(((Flags & PrimFlags.Phantom.getIndex()) != 0)));
prim.put("physical", OSD.FromBoolean(((Flags & PrimFlags.Physics.getIndex()) != 0)));
prim.put("position", OSD.FromVector3(Position));
prim.put("rotation", OSD.FromQuaternion(Rotation));
prim.put("scale", OSD.FromVector3(Scale));
prim.put("pcode", OSD.FromInteger((int)PrimData.PCode.getIndex()));
prim.put("material", OSD.FromInteger((int)PrimData.Material.getIndex()));
prim.put("shadows", OSD.FromBoolean(((Flags & PrimFlags.CastShadows.getIndex()) != 0)));
prim.put("state", OSD.FromInteger(PrimData.State));
prim.put("id", OSD.FromUUID(ID));
prim.put("localid", OSD.FromLong(LocalID));
prim.put("parentid", OSD.FromLong(ParentID));
prim.put("volume", volume);
if (Textures != null)
prim.put("textures", Textures.GetOSD());
if (Light != null)
prim.put("light", Light.GetOSD());
if (Flexible != null)
prim.put("flex", Flexible.GetOSD());
if (Sculpt != null)
prim.put("sculpt", Sculpt.GetOSD());
return prim;
}