diff options
Diffstat (limited to 'OpenSim/Framework/PrimitiveBaseShape.cs')
-rw-r--r-- | OpenSim/Framework/PrimitiveBaseShape.cs | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index f03c6d0..23969fe 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -26,8 +26,10 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Reflection; | ||
29 | using System.Xml.Serialization; | 30 | using System.Xml.Serialization; |
30 | using libsecondlife; | 31 | using libsecondlife; |
32 | using log4net; | ||
31 | 33 | ||
32 | namespace OpenSim.Framework | 34 | namespace OpenSim.Framework |
33 | { | 35 | { |
@@ -70,6 +72,8 @@ namespace OpenSim.Framework | |||
70 | [Serializable] | 72 | [Serializable] |
71 | public class PrimitiveBaseShape | 73 | public class PrimitiveBaseShape |
72 | { | 74 | { |
75 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
76 | |||
73 | private static readonly LLObject.TextureEntry m_defaultTexture; | 77 | private static readonly LLObject.TextureEntry m_defaultTexture; |
74 | 78 | ||
75 | private byte[] m_textureEntry; | 79 | private byte[] m_textureEntry; |
@@ -89,14 +93,53 @@ namespace OpenSim.Framework | |||
89 | public sbyte PathTwist; | 93 | public sbyte PathTwist; |
90 | public sbyte PathTwistBegin; | 94 | public sbyte PathTwistBegin; |
91 | public byte PCode; | 95 | public byte PCode; |
92 | public ushort ProfileBegin; | 96 | public ushort ProfileBegin; |
93 | 97 | ||
94 | public byte ProfileCurve; | 98 | public byte ProfileCurve |
99 | { | ||
100 | get { return (byte)((byte)HollowShape | (byte)ProfileShape); } | ||
101 | |||
102 | set | ||
103 | { | ||
104 | // Handle hollow shape component | ||
105 | byte hollowShapeByte = (byte)(value & 0xf0); | ||
106 | |||
107 | if (!Enum.IsDefined(typeof(HollowShape), hollowShapeByte)) | ||
108 | { | ||
109 | m_log.WarnFormat( | ||
110 | "[SHAPE]: Attempt to set a ProfileCurve with a hollow shape value of {0}, which isn't a valid enum. Replacing with default shape.", | ||
111 | hollowShapeByte); | ||
112 | |||
113 | this.HollowShape = HollowShape.Same; | ||
114 | } | ||
115 | else | ||
116 | { | ||
117 | this.HollowShape = (HollowShape)hollowShapeByte; | ||
118 | } | ||
119 | |||
120 | // Handle profile shape component | ||
121 | byte profileShapeByte = (byte)(value & 0xf); | ||
122 | |||
123 | if (!Enum.IsDefined(typeof(ProfileShape), profileShapeByte)) | ||
124 | { | ||
125 | m_log.WarnFormat( | ||
126 | "[SHAPE]: Attempt to set a ProfileCurve with a profile shape value of {0}, which isn't a valid enum. Replacing with square.", | ||
127 | profileShapeByte); | ||
128 | |||
129 | this.ProfileShape = ProfileShape.Square; | ||
130 | } | ||
131 | else | ||
132 | { | ||
133 | this.ProfileShape = (ProfileShape)profileShapeByte; | ||
134 | } | ||
135 | } | ||
136 | } | ||
95 | 137 | ||
96 | public ushort ProfileEnd; | 138 | public ushort ProfileEnd; |
97 | public ushort ProfileHollow; | 139 | public ushort ProfileHollow; |
98 | public LLVector3 Scale; | 140 | public LLVector3 Scale; |
99 | public byte State; | 141 | public byte State; |
142 | |||
100 | // Sculpted | 143 | // Sculpted |
101 | [XmlIgnore] public LLUUID SculptTexture = LLUUID.Zero; | 144 | [XmlIgnore] public LLUUID SculptTexture = LLUUID.Zero; |
102 | [XmlIgnore] public byte SculptType = (byte)0; | 145 | [XmlIgnore] public byte SculptType = (byte)0; |
@@ -154,25 +197,9 @@ namespace OpenSim.Framework | |||
154 | set { m_textureEntry = value; } | 197 | set { m_textureEntry = value; } |
155 | } | 198 | } |
156 | 199 | ||
157 | public ProfileShape ProfileShape | 200 | public ProfileShape ProfileShape; |
158 | { | 201 | |
159 | get { return (ProfileShape) (ProfileCurve & 0xf); } | 202 | public HollowShape HollowShape; |
160 | set | ||
161 | { | ||
162 | byte oldValueMasked = (byte) (ProfileCurve & 0xf0); | ||
163 | ProfileCurve = (byte) (oldValueMasked | (byte) value); | ||
164 | } | ||
165 | } | ||
166 | |||
167 | public HollowShape HollowShape | ||
168 | { | ||
169 | get { return (HollowShape) (ProfileCurve & 0xf0); } | ||
170 | set | ||
171 | { | ||
172 | byte oldValueMasked = (byte) (ProfileCurve & 0x0f); | ||
173 | ProfileCurve = (byte) (oldValueMasked | (byte) value); | ||
174 | } | ||
175 | } | ||
176 | 203 | ||
177 | public static PrimitiveBaseShape Default | 204 | public static PrimitiveBaseShape Default |
178 | { | 205 | { |
@@ -186,7 +213,6 @@ namespace OpenSim.Framework | |||
186 | } | 213 | } |
187 | } | 214 | } |
188 | 215 | ||
189 | |||
190 | public static PrimitiveBaseShape Create() | 216 | public static PrimitiveBaseShape Create() |
191 | { | 217 | { |
192 | PrimitiveBaseShape shape = new PrimitiveBaseShape(); | 218 | PrimitiveBaseShape shape = new PrimitiveBaseShape(); |