From a8a01e2bc7ed0c6f63694b562b93c4a991ded699 Mon Sep 17 00:00:00 2001 From: dahlia Date: Wed, 11 Nov 2009 02:54:58 -0800 Subject: add a ToOmvPrimitive() method to PrimitiveBaseShape --- OpenSim/Framework/PrimitiveBaseShape.cs | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'OpenSim/Framework/PrimitiveBaseShape.cs') diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index 5e4d175..f8dac06 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs @@ -1066,5 +1066,86 @@ namespace OpenSim.Framework return data; } + + + /// + /// Creates a OpenMetaverse.Primitive and populates it with converted PrimitiveBaseShape values + /// + /// + public Primitive ToOmvPrimitive() + { + // position and rotation defaults here since they are not available in PrimitiveBaseShape + return ToOmvPrimitive(new Vector3(0.0f, 0.0f, 0.0f), + new Quaternion(0.0f, 0.0f, 0.0f, 1.0f)); + } + + + /// + /// Creates a OpenMetaverse.Primitive and populates it with converted PrimitiveBaseShape values + /// + /// + /// + /// + public Primitive ToOmvPrimitive(Vector3 position, Quaternion rotation) + { + OpenMetaverse.Primitive prim = new OpenMetaverse.Primitive(); + prim.Scale = this.Scale; + prim.Position = position; + prim.Rotation = rotation; + + if (this.SculptEntry) + { + prim.Sculpt = new Primitive.SculptData(); + prim.Sculpt.Type = (OpenMetaverse.SculptType)this.SculptType; + prim.Sculpt.SculptTexture = this.SculptTexture; + + return prim; + } + + prim.PrimData.PathShearX = this.PathShearX < 128 ? (float)this.PathShearX * 0.01f : (float)(this.PathShearX - 256) * 0.01f; + prim.PrimData.PathShearY = this.PathShearY < 128 ? (float)this.PathShearY * 0.01f : (float)(this.PathShearY - 256) * 0.01f; + prim.PrimData.PathBegin = (float)this.PathBegin * 2.0e-5f; + prim.PrimData.PathEnd = 1.0f - (float)this.PathEnd * 2.0e-5f; + prim.PrimData.PathScaleX = (float)(this.PathScaleX - 100) * 0.01f; + prim.PrimData.PathScaleY = (float)(this.PathScaleY - 100) * 0.01f; + + prim.PrimData.ProfileBegin = (float)this.ProfileBegin * 2.0e-5f; + prim.PrimData.ProfileEnd = 1.0f - (float)this.ProfileEnd * 2.0e-5f; + prim.PrimData.ProfileHollow = (float)this.ProfileHollow * 2.0e-5f; + + prim.PrimData.profileCurve = this.ProfileCurve; + prim.PrimData.ProfileHole = (HoleType)this.HollowShape; + + prim.PrimData.PathTwistBegin = this.PathTwistBegin * 18 / 10; + prim.PrimData.PathTwist = this.PathTwist * 18 / 10; + + prim.PrimData.PathTaperX = this.PathTaperX * 0.01f; + prim.PrimData.PathTaperY = this.PathTaperY * 0.01f; + + if (this.FlexiEntry) + { + prim.Flexible = new Primitive.FlexibleData(); + prim.Flexible.Drag = this.FlexiDrag; + prim.Flexible.Force = new Vector3(this.FlexiForceX, this.FlexiForceY, this.FlexiForceZ); + prim.Flexible.Gravity = this.FlexiGravity; + prim.Flexible.Softness = this.FlexiSoftness; + prim.Flexible.Tension = this.FlexiTension; + prim.Flexible.Wind = this.FlexiWind; + } + + if (this.LightEntry) + { + prim.Light = new Primitive.LightData(); + prim.Light.Color = new Color4(this.LightColorR, this.LightColorG, this.LightColorB, this.LightColorA); + prim.Light.Cutoff = this.LightCutoff; + prim.Light.Falloff = this.LightFalloff; + prim.Light.Intensity = this.LightIntensity; + prim.Light.Radius = this.LightRadius; + } + + prim.Textures = new Primitive.TextureEntry(this.TextureEntry, 0, this.TextureEntry.Length); + + return prim; + } } } -- cgit v1.1 From 89a63c9a8bc97b3be6dcc2576af2e7aa9c3c7543 Mon Sep 17 00:00:00 2001 From: dahlia Date: Fri, 13 Nov 2009 01:18:52 -0800 Subject: Some corrections to PrimitiveBaseShape.ToOmvPrimitive() --- OpenSim/Framework/PrimitiveBaseShape.cs | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'OpenSim/Framework/PrimitiveBaseShape.cs') diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index f8dac06..97231ff 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs @@ -1089,6 +1089,7 @@ namespace OpenSim.Framework public Primitive ToOmvPrimitive(Vector3 position, Quaternion rotation) { OpenMetaverse.Primitive prim = new OpenMetaverse.Primitive(); + prim.Scale = this.Scale; prim.Position = position; prim.Rotation = rotation; @@ -1106,8 +1107,15 @@ namespace OpenSim.Framework prim.PrimData.PathShearY = this.PathShearY < 128 ? (float)this.PathShearY * 0.01f : (float)(this.PathShearY - 256) * 0.01f; prim.PrimData.PathBegin = (float)this.PathBegin * 2.0e-5f; prim.PrimData.PathEnd = 1.0f - (float)this.PathEnd * 2.0e-5f; - prim.PrimData.PathScaleX = (float)(this.PathScaleX - 100) * 0.01f; - prim.PrimData.PathScaleY = (float)(this.PathScaleY - 100) * 0.01f; + + prim.PrimData.PathScaleX = (200 - this.PathScaleX) * 0.01f; + prim.PrimData.PathScaleY = (200 - this.PathScaleY) * 0.01f; + + prim.PrimData.PathTaperX = this.PathTaperX * 0.01f; + prim.PrimData.PathTaperY = this.PathTaperY * 0.01f; + + prim.PrimData.PathTwistBegin = this.PathTwistBegin * 0.01f; + prim.PrimData.PathTwist = this.PathTwist * 0.01f; prim.PrimData.ProfileBegin = (float)this.ProfileBegin * 2.0e-5f; prim.PrimData.ProfileEnd = 1.0f - (float)this.ProfileEnd * 2.0e-5f; @@ -1116,11 +1124,13 @@ namespace OpenSim.Framework prim.PrimData.profileCurve = this.ProfileCurve; prim.PrimData.ProfileHole = (HoleType)this.HollowShape; - prim.PrimData.PathTwistBegin = this.PathTwistBegin * 18 / 10; - prim.PrimData.PathTwist = this.PathTwist * 18 / 10; + prim.PrimData.PathCurve = (PathCurve)this.PathCurve; + prim.PrimData.PathRadiusOffset = 0.01f * this.PathRadiusOffset; + prim.PrimData.PathRevolutions = 1.0f + 0.015f * this.PathRevolutions; + prim.PrimData.PathSkew = 0.01f * this.PathSkew; - prim.PrimData.PathTaperX = this.PathTaperX * 0.01f; - prim.PrimData.PathTaperY = this.PathTaperY * 0.01f; + prim.PrimData.PCode = OpenMetaverse.PCode.Prim; + prim.PrimData.State = 0; if (this.FlexiEntry) { @@ -1145,6 +1155,16 @@ namespace OpenSim.Framework prim.Textures = new Primitive.TextureEntry(this.TextureEntry, 0, this.TextureEntry.Length); + prim.Properties = new Primitive.ObjectProperties(); + prim.Properties.Name = "Primitive"; + prim.Properties.Description = ""; + prim.Properties.CreatorID = UUID.Zero; + prim.Properties.GroupID = UUID.Zero; + prim.Properties.OwnerID = UUID.Zero; + prim.Properties.Permissions = new Permissions(); + prim.Properties.SalePrice = 10; + prim.Properties.SaleType = new SaleType(); + return prim; } } -- cgit v1.1