diff options
author | lbsa71 | 2007-12-28 08:34:38 +0000 |
---|---|---|
committer | lbsa71 | 2007-12-28 08:34:38 +0000 |
commit | 8cd72beb86d2a563bdaf88b20aa76d9bafa6b971 (patch) | |
tree | 8eaac3b70eb4b62db89cdfc7b854e85fa2430255 /OpenSim/Framework | |
parent | * Patch from Melanie. Thanks Melanie! (diff) | |
download | opensim-SC-8cd72beb86d2a563bdaf88b20aa76d9bafa6b971.zip opensim-SC-8cd72beb86d2a563bdaf88b20aa76d9bafa6b971.tar.gz opensim-SC-8cd72beb86d2a563bdaf88b20aa76d9bafa6b971.tar.bz2 opensim-SC-8cd72beb86d2a563bdaf88b20aa76d9bafa6b971.tar.xz |
* Moved PrimitiveBaseShape subclasses into factory methods - the subclassing scheme won't hold for serialization
* Extracted out the 'old' AddNewPrimitive that places an object at an exact pos, without the raytracing
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/Data.MySQL/MySQLDataStore.cs | 4 | ||||
-rw-r--r-- | OpenSim/Framework/PrimitiveBaseShape.cs | 106 |
2 files changed, 50 insertions, 60 deletions
diff --git a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs index fcf8c6f..3c25533 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs | |||
@@ -203,7 +203,7 @@ namespace OpenSim.Framework.Data.MySQL | |||
203 | { | 203 | { |
204 | MainLog.Instance.Notice( | 204 | MainLog.Instance.Notice( |
205 | "No shape found for prim in storage, so setting default box shape"); | 205 | "No shape found for prim in storage, so setting default box shape"); |
206 | prim.Shape = BoxShape.Default; | 206 | prim.Shape = PrimitiveBaseShape.Default; |
207 | } | 207 | } |
208 | group.AddPart(prim); | 208 | group.AddPart(prim); |
209 | group.RootPart = prim; | 209 | group.RootPart = prim; |
@@ -223,7 +223,7 @@ namespace OpenSim.Framework.Data.MySQL | |||
223 | { | 223 | { |
224 | MainLog.Instance.Notice( | 224 | MainLog.Instance.Notice( |
225 | "No shape found for prim in storage, so setting default box shape"); | 225 | "No shape found for prim in storage, so setting default box shape"); |
226 | prim.Shape = BoxShape.Default; | 226 | prim.Shape = PrimitiveBaseShape.Default; |
227 | } | 227 | } |
228 | createdObjects[new LLUUID(objID)].AddPart(prim); | 228 | createdObjects[new LLUUID(objID)].AddPart(prim); |
229 | } | 229 | } |
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index 66511e6..1424395 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -112,22 +112,22 @@ namespace OpenSim.Framework | |||
112 | 112 | ||
113 | public ProfileShape ProfileShape | 113 | public ProfileShape ProfileShape |
114 | { | 114 | { |
115 | get { return (ProfileShape) (ProfileCurve & 0xf); } | 115 | get { return (ProfileShape)(ProfileCurve & 0xf); } |
116 | set | 116 | set |
117 | { | 117 | { |
118 | byte oldValueMasked = (byte) (ProfileCurve & 0xf0); | 118 | byte oldValueMasked = (byte)(ProfileCurve & 0xf0); |
119 | ProfileCurve = (byte) (oldValueMasked | (byte) value); | 119 | ProfileCurve = (byte)(oldValueMasked | (byte)value); |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | [XmlIgnore] | 123 | [XmlIgnore] |
124 | public HollowShape HollowShape | 124 | public HollowShape HollowShape |
125 | { | 125 | { |
126 | get { return (HollowShape) (ProfileCurve & 0xf0); } | 126 | get { return (HollowShape)(ProfileCurve & 0xf0); } |
127 | set | 127 | set |
128 | { | 128 | { |
129 | byte oldValueMasked = (byte) (ProfileCurve & 0x0f); | 129 | byte oldValueMasked = (byte)(ProfileCurve & 0x0f); |
130 | ProfileCurve = (byte) (oldValueMasked | (byte) value); | 130 | ProfileCurve = (byte)(oldValueMasked | (byte)value); |
131 | } | 131 | } |
132 | } | 132 | } |
133 | 133 | ||
@@ -145,7 +145,7 @@ namespace OpenSim.Framework | |||
145 | 145 | ||
146 | public PrimitiveBaseShape() | 146 | public PrimitiveBaseShape() |
147 | { | 147 | { |
148 | PCode = (byte) PCodeEnum.Primitive; | 148 | PCode = (byte)PCodeEnum.Primitive; |
149 | ExtraParams = new byte[1]; | 149 | ExtraParams = new byte[1]; |
150 | Textures = m_defaultTexture; | 150 | Textures = m_defaultTexture; |
151 | } | 151 | } |
@@ -156,86 +156,76 @@ namespace OpenSim.Framework | |||
156 | return shape; | 156 | return shape; |
157 | } | 157 | } |
158 | 158 | ||
159 | //void returns need to change of course | 159 | public static PrimitiveBaseShape CreateBox() |
160 | public virtual void GetMesh() | ||
161 | { | 160 | { |
162 | } | 161 | PrimitiveBaseShape shape = Create(); |
163 | 162 | ||
164 | public PrimitiveBaseShape Copy() | 163 | shape.PathCurve = (byte)Extrusion.Straight; |
165 | { | 164 | shape.ProfileShape = ProfileShape.Square; |
166 | return (PrimitiveBaseShape) MemberwiseClone(); | 165 | shape.PathScaleX = 100; |
167 | } | 166 | shape.PathScaleY = 100; |
168 | } | ||
169 | 167 | ||
170 | public class GenericShape : PrimitiveBaseShape | 168 | return shape; |
171 | { | ||
172 | public GenericShape() | ||
173 | : base() | ||
174 | { | ||
175 | } | 169 | } |
176 | } | ||
177 | 170 | ||
178 | public class BoxShape : PrimitiveBaseShape | 171 | public static PrimitiveBaseShape CreateCylinder() |
179 | { | ||
180 | public BoxShape() | ||
181 | : base() | ||
182 | { | 172 | { |
183 | PathCurve = (byte) Extrusion.Straight; | 173 | PrimitiveBaseShape shape = Create(); |
184 | ProfileShape = ProfileShape.Square; | ||
185 | PathScaleX = 100; | ||
186 | PathScaleY = 100; | ||
187 | } | ||
188 | 174 | ||
189 | public BoxShape(float side) | 175 | shape.PathCurve = (byte)Extrusion.Curve1; |
190 | : this() | 176 | shape.ProfileShape = ProfileShape.Square; |
191 | { | ||
192 | SetSide(side); | ||
193 | } | ||
194 | 177 | ||
195 | public void SetSide(float side) | 178 | shape.PathScaleX = 100; |
196 | { | 179 | shape.PathScaleY = 100; |
197 | Scale = new LLVector3(side, side, side); | 180 | |
181 | return shape; | ||
198 | } | 182 | } |
199 | 183 | ||
200 | public static BoxShape Default | 184 | public static PrimitiveBaseShape Default |
201 | { | 185 | { |
202 | get | 186 | get |
203 | { | 187 | { |
204 | BoxShape boxShape = new BoxShape(); | 188 | PrimitiveBaseShape boxShape = CreateBox(); |
205 | 189 | ||
206 | boxShape.SetSide(0.5f); | 190 | boxShape.SetScale(0.5f); |
207 | 191 | ||
208 | return boxShape; | 192 | return boxShape; |
209 | } | 193 | } |
210 | } | 194 | } |
211 | } | ||
212 | 195 | ||
213 | public class CylinderShape : PrimitiveBaseShape | 196 | public void SetScale(float side) |
214 | { | ||
215 | public CylinderShape() | ||
216 | : base() | ||
217 | { | 197 | { |
218 | PathCurve = (byte) Extrusion.Straight; | 198 | Scale = new LLVector3(side, side, side); |
219 | ProfileShape = ProfileShape.Circle; | ||
220 | PathScaleX = 100; | ||
221 | PathScaleY = 100; | ||
222 | } | 199 | } |
223 | 200 | ||
224 | public CylinderShape(float radius, float heigth) | 201 | public void SetHeigth(float heigth) |
225 | : this() | ||
226 | { | 202 | { |
227 | SetRadius(radius); | 203 | Scale.Z = heigth; |
228 | SetHeigth(heigth); | ||
229 | } | 204 | } |
230 | 205 | ||
231 | private void SetHeigth(float heigth) | 206 | public void SetRadius(float radius) |
207 | { | ||
208 | Scale.X = Scale.Y = radius * 2f; | ||
209 | } | ||
210 | |||
211 | //void returns need to change of course | ||
212 | public virtual void GetMesh() | ||
232 | { | 213 | { |
233 | Scale.Z = heigth; | ||
234 | } | 214 | } |
235 | 215 | ||
236 | private void SetRadius(float radius) | 216 | public PrimitiveBaseShape Copy() |
237 | { | 217 | { |
238 | Scale.X = Scale.Y = radius*2f; | 218 | return (PrimitiveBaseShape)MemberwiseClone(); |
219 | } | ||
220 | |||
221 | public static PrimitiveBaseShape CreateCylinder(float radius, float heigth) | ||
222 | { | ||
223 | PrimitiveBaseShape shape = CreateCylinder( ); | ||
224 | |||
225 | shape.SetHeigth( heigth ); | ||
226 | shape.SetRadius( radius ); | ||
227 | |||
228 | return shape; | ||
239 | } | 229 | } |
240 | } | 230 | } |
241 | } | 231 | } |