aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
diff options
context:
space:
mode:
authorMelanie2012-03-15 10:24:40 +0100
committerMelanie2012-03-15 10:24:40 +0100
commitb4adf652e70173775e3de01e2a556badb9fed8b4 (patch)
tree9d1a32d51ee3f96acf6f6a06b20dc9dcbd062429 /OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
parentMerge branch 'master' into careminster (diff)
parentPlaying with object costs CAPS ... (diff)
downloadopensim-SC_OLD-b4adf652e70173775e3de01e2a556badb9fed8b4.zip
opensim-SC_OLD-b4adf652e70173775e3de01e2a556badb9fed8b4.tar.gz
opensim-SC_OLD-b4adf652e70173775e3de01e2a556badb9fed8b4.tar.bz2
opensim-SC_OLD-b4adf652e70173775e3de01e2a556badb9fed8b4.tar.xz
Merge branch 'ubitwork'
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs86
1 files changed, 72 insertions, 14 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index a68b3eb..f188e8d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -986,7 +986,11 @@ namespace OpenSim.Region.Framework.Scenes
986 public PrimitiveBaseShape Shape 986 public PrimitiveBaseShape Shape
987 { 987 {
988 get { return m_shape; } 988 get { return m_shape; }
989 set { m_shape = value;} 989 set
990 {
991 m_shape = value;
992 m_physicsShapeType = DefaultPhysicsShapeType();
993 }
990 } 994 }
991 995
992 /// <summary> 996 /// <summary>
@@ -1377,31 +1381,68 @@ namespace OpenSim.Region.Framework.Scenes
1377 { 1381 {
1378 if (value >= 0 && value <= (byte)SOPMaterialData.MaxMaterial) 1382 if (value >= 0 && value <= (byte)SOPMaterialData.MaxMaterial)
1379 { 1383 {
1380 m_material = (Material)value; 1384 bool update = false;
1381 m_friction = SOPMaterialData.friction(m_material); 1385
1382 m_bounce = SOPMaterialData.bounce(m_material); 1386 if (m_material != (Material)value)
1383 if (PhysActor != null)
1384 { 1387 {
1385 PhysActor.SetMaterial((int)value); 1388 update = true;
1389 m_material = (Material)value;
1390 }
1391
1392 if (m_friction != SOPMaterialData.friction(m_material))
1393 {
1394 update = true;
1395 m_friction = SOPMaterialData.friction(m_material);
1396 }
1397
1398 if (m_bounce != SOPMaterialData.bounce(m_material))
1399 {
1400 update = true;
1401 m_bounce = SOPMaterialData.bounce(m_material);
1402 }
1403
1404 if (update)
1405 {
1406 if (PhysActor != null)
1407 {
1408 PhysActor.SetMaterial((int)value);
1409 }
1410 if(ParentGroup != null)
1411 ParentGroup.HasGroupChanged = true;
1412 ScheduleFullUpdateIfNone();
1386 } 1413 }
1387 } 1414 }
1388 } 1415 }
1389 } 1416 }
1390 1417
1418 // not a propriety to move to methods place later
1419 public byte DefaultPhysicsShapeType()
1420 {
1421 byte type;
1422
1423 if (Shape != null && (Shape.SculptType == (byte)SculptType.Mesh))
1424 type = (byte)PhysShapeType.convex;
1425 else
1426 type = (byte)PhysShapeType.prim;
1427
1428 return type;
1429 }
1430
1391 public byte PhysicsShapeType 1431 public byte PhysicsShapeType
1392 { 1432 {
1393 get { return m_physicsShapeType; } 1433 get { return m_physicsShapeType; }
1394 set 1434 set
1395 { 1435 {
1396 if (value < 0 || value >= (byte)PhysShapeType.convex) 1436 if (value >= 0 && value <= (byte)PhysShapeType.convex)
1397 value = (byte)PhysShapeType.prim; //convex not supported ?
1398
1399 else if (value == (byte)PhysShapeType.none)
1400 { 1437 {
1401 if (ParentGroup == null || ParentGroup.RootPart == this) 1438 if (value == (byte)PhysShapeType.none && ParentGroup != null && ParentGroup.RootPart == this)
1402 value = (byte)PhysShapeType.prim; 1439 m_physicsShapeType = DefaultPhysicsShapeType();
1440 else
1441 m_physicsShapeType = value;
1442 ScheduleFullUpdateIfNone();
1403 } 1443 }
1404 m_physicsShapeType = value; 1444 else
1445 m_physicsShapeType = DefaultPhysicsShapeType();
1405 } 1446 }
1406 } 1447 }
1407 1448
@@ -1413,6 +1454,7 @@ namespace OpenSim.Region.Framework.Scenes
1413 if (value >=1 && value <= 22587.0) 1454 if (value >=1 && value <= 22587.0)
1414 { 1455 {
1415 m_density = value; 1456 m_density = value;
1457 ScheduleFullUpdateIfNone();
1416 } 1458 }
1417 } 1459 }
1418 } 1460 }
@@ -1423,6 +1465,7 @@ namespace OpenSim.Region.Framework.Scenes
1423 set 1465 set
1424 { if( value >= -1 && value <=28.0f) 1466 { if( value >= -1 && value <=28.0f)
1425 m_gravitymod = value; 1467 m_gravitymod = value;
1468 ScheduleFullUpdateIfNone();
1426 } 1469 }
1427 } 1470 }
1428 1471
@@ -1434,6 +1477,7 @@ namespace OpenSim.Region.Framework.Scenes
1434 if (value >= 0 && value <= 255.0f) 1477 if (value >= 0 && value <= 255.0f)
1435 { 1478 {
1436 m_friction = value; 1479 m_friction = value;
1480 ScheduleFullUpdateIfNone();
1437 } 1481 }
1438 } 1482 }
1439 } 1483 }
@@ -1446,6 +1490,7 @@ namespace OpenSim.Region.Framework.Scenes
1446 if (value >= 0 && value <= 1.0f) 1490 if (value >= 0 && value <= 1.0f)
1447 { 1491 {
1448 m_bounce = value; 1492 m_bounce = value;
1493 ScheduleFullUpdateIfNone();
1449 } 1494 }
1450 } 1495 }
1451 } 1496 }
@@ -2942,6 +2987,19 @@ namespace OpenSim.Region.Framework.Scenes
2942 APIDTarget = Quaternion.Identity; 2987 APIDTarget = Quaternion.Identity;
2943 } 2988 }
2944 2989
2990
2991
2992 public void ScheduleFullUpdateIfNone()
2993 {
2994 if (ParentGroup == null)
2995 return;
2996
2997// ??? ParentGroup.HasGroupChanged = true;
2998
2999 if (UpdateFlag != UpdateRequired.FULL)
3000 ScheduleFullUpdate();
3001 }
3002
2945 /// <summary> 3003 /// <summary>
2946 /// Schedules this prim for a full update 3004 /// Schedules this prim for a full update
2947 /// </summary> 3005 /// </summary>
@@ -4672,7 +4730,7 @@ namespace OpenSim.Region.Framework.Scenes
4672 ParentGroup.HasGroupChanged = true; 4730 ParentGroup.HasGroupChanged = true;
4673 ScheduleFullUpdate(); 4731 ScheduleFullUpdate();
4674 } 4732 }
4675 4733
4676// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags); 4734// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags);
4677 } 4735 }
4678 4736