aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs18
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/EventManager.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs123
6 files changed, 100 insertions, 57 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 0c9759d..e060c05 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -183,7 +183,7 @@ namespace OpenSim.Region.Framework.Scenes
183 public event ScriptChangedEvent OnScriptChangedEvent; 183 public event ScriptChangedEvent OnScriptChangedEvent;
184 public delegate void ScriptChangedEvent(uint localID, uint change); 184 public delegate void ScriptChangedEvent(uint localID, uint change);
185 185
186 public delegate void ScriptControlEvent(uint localID, UUID item, UUID avatarID, uint held, uint changed); 186 public delegate void ScriptControlEvent(UUID item, UUID avatarID, uint held, uint changed);
187 public event ScriptControlEvent OnScriptControlEvent; 187 public event ScriptControlEvent OnScriptControlEvent;
188 188
189 public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos); 189 public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos);
@@ -1619,7 +1619,7 @@ namespace OpenSim.Region.Framework.Scenes
1619 } 1619 }
1620 } 1620 }
1621 1621
1622 internal void TriggerControlEvent(uint p, UUID scriptUUID, UUID avatarID, uint held, uint _changed) 1622 internal void TriggerControlEvent(UUID scriptUUID, UUID avatarID, uint held, uint _changed)
1623 { 1623 {
1624 ScriptControlEvent handlerScriptControlEvent = OnScriptControlEvent; 1624 ScriptControlEvent handlerScriptControlEvent = OnScriptControlEvent;
1625 if (handlerScriptControlEvent != null) 1625 if (handlerScriptControlEvent != null)
@@ -1628,7 +1628,7 @@ namespace OpenSim.Region.Framework.Scenes
1628 { 1628 {
1629 try 1629 try
1630 { 1630 {
1631 d(p, scriptUUID, avatarID, held, _changed); 1631 d(scriptUUID, avatarID, held, _changed);
1632 } 1632 }
1633 catch (Exception e) 1633 catch (Exception e)
1634 { 1634 {
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index e51d9ee..5ac7755 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -61,7 +61,6 @@ namespace OpenSim.Region.Framework.Scenes
61 struct ScriptControllers 61 struct ScriptControllers
62 { 62 {
63 public UUID itemID; 63 public UUID itemID;
64 public uint objID;
65 public ScriptControlled ignoreControls; 64 public ScriptControlled ignoreControls;
66 public ScriptControlled eventControls; 65 public ScriptControlled eventControls;
67 } 66 }
@@ -3945,7 +3944,6 @@ Console.WriteLine("Scripted Sit ofset {0}", m_pos);
3945 obj.eventControls = ScriptControlled.CONTROL_ZERO; 3944 obj.eventControls = ScriptControlled.CONTROL_ZERO;
3946 3945
3947 obj.itemID = Script_item_UUID; 3946 obj.itemID = Script_item_UUID;
3948 obj.objID = Obj_localID;
3949 if (pass_on == 0 && accept == 0) 3947 if (pass_on == 0 && accept == 0)
3950 { 3948 {
3951 IgnoredControls |= (ScriptControlled)controls; 3949 IgnoredControls |= (ScriptControlled)controls;
@@ -4088,7 +4086,7 @@ Console.WriteLine("Scripted Sit ofset {0}", m_pos);
4088 if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO) 4086 if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO)
4089 { 4087 {
4090 // only send if still pressed or just changed 4088 // only send if still pressed or just changed
4091 m_scene.EventManager.TriggerControlEvent(scriptControlData.objID, scriptUUID, UUID, (uint)localHeld, (uint)localChange); 4089 m_scene.EventManager.TriggerControlEvent(scriptUUID, UUID, (uint)localHeld, (uint)localChange);
4092 } 4090 }
4093 } 4091 }
4094 } 4092 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index f996ff4..5492266 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -518,7 +518,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
518 518
519 public LSL_Vector llVecNorm(LSL_Vector v) 519 public LSL_Vector llVecNorm(LSL_Vector v)
520 { 520 {
521 m_host.AddScriptLPS(1); 521 m_host.AddScriptLPS(1);
522 return LSL_Vector.Norm(v); 522 return LSL_Vector.Norm(v);
523 } 523 }
524 524
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
index 01141ee..c9049e2 100644
--- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
@@ -259,15 +259,15 @@ namespace OpenSim.Region.ScriptEngine.Shared
259 return Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z); 259 return Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
260 } 260 }
261 261
262 public static Vector3 Norm(Vector3 vector) 262 public static Vector3 Norm(Vector3 vector)
263 { 263 {
264 double mag = Mag(vector); 264 double mag = Mag(vector);
265 if (mag > 0.0) 265 if (mag > 0.0)
266 { 266 {
267 double invMag = 1.0 / mag; 267 double invMag = 1.0 / mag;
268 return vector * invMag; 268 return vector * invMag;
269 } 269 }
270 return new Vector3(0, 0, 0); 270 return new Vector3(0, 0, 0);
271 } 271 }
272 272
273 #endregion 273 #endregion
diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
index 09b79d0..0ac8b5c 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
@@ -356,9 +356,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
356 // timer: not handled here 356 // timer: not handled here
357 // listen: not handled here 357 // listen: not handled here
358 358
359 public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change) 359 public void control(UUID itemID, UUID agentID, uint held, uint change)
360 { 360 {
361 myScriptEngine.PostObjectEvent(localID, new EventParams( 361 myScriptEngine.PostScriptEvent(itemID, new EventParams(
362 "control",new object[] { 362 "control",new object[] {
363 new LSL_Types.LSLString(agentID.ToString()), 363 new LSL_Types.LSLString(agentID.ToString()),
364 new LSL_Types.LSLInteger(held), 364 new LSL_Types.LSLInteger(held),
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index a6ab5e9..d4c1727 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -1425,10 +1425,12 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1425 1425
1426 try 1426 try
1427 { 1427 {
1428 FileStream tfs = File.Open(assemName + ".text", 1428 using (FileStream tfs = File.Open(assemName + ".text",
1429 FileMode.Open, FileAccess.Read); 1429 FileMode.Open, FileAccess.Read))
1430 tfs.Read(tdata, 0, tdata.Length); 1430 {
1431 tfs.Close(); 1431 tfs.Read(tdata, 0, tdata.Length);
1432 tfs.Close();
1433 }
1432 1434
1433 assem = new System.Text.ASCIIEncoding().GetString(tdata); 1435 assem = new System.Text.ASCIIEncoding().GetString(tdata);
1434 } 1436 }
@@ -1448,9 +1450,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1448 1450
1449 try 1451 try
1450 { 1452 {
1451 FileStream fs = File.Open(assemName, FileMode.Open, FileAccess.Read); 1453 using (FileStream fs = File.Open(assemName, FileMode.Open, FileAccess.Read))
1452 fs.Read(data, 0, data.Length); 1454 {
1453 fs.Close(); 1455 fs.Read(data, 0, data.Length);
1456 fs.Close();
1457 }
1454 1458
1455 assem = System.Convert.ToBase64String(data); 1459 assem = System.Convert.ToBase64String(data);
1456 } 1460 }
@@ -1466,13 +1470,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1466 1470
1467 if (File.Exists(fn + ".map")) 1471 if (File.Exists(fn + ".map"))
1468 { 1472 {
1469 FileStream mfs = File.Open(fn + ".map", FileMode.Open, FileAccess.Read); 1473 using (FileStream mfs = File.Open(fn + ".map", FileMode.Open, FileAccess.Read))
1470 StreamReader msr = new StreamReader(mfs); 1474 {
1471 1475 using (StreamReader msr = new StreamReader(mfs))
1472 map = msr.ReadToEnd(); 1476 {
1473 1477 map = msr.ReadToEnd();
1474 msr.Close(); 1478 msr.Close();
1475 mfs.Close(); 1479 }
1480 mfs.Close();
1481 }
1476 } 1482 }
1477 1483
1478 XmlElement assemblyData = doc.CreateElement("", "Assembly", ""); 1484 XmlElement assemblyData = doc.CreateElement("", "Assembly", "");
@@ -1560,30 +1566,59 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1560 { 1566 {
1561 Byte[] filedata = Convert.FromBase64String(base64); 1567 Byte[] filedata = Convert.FromBase64String(base64);
1562 1568
1563 FileStream fs = File.Create(path); 1569 try
1564 fs.Write(filedata, 0, filedata.Length); 1570 {
1565 fs.Close(); 1571 using (FileStream fs = File.Create(path))
1566 1572 {
1567 fs = File.Create(path + ".text"); 1573 fs.Write(filedata, 0, filedata.Length);
1568 StreamWriter sw = new StreamWriter(fs); 1574 fs.Close();
1569 1575 }
1570 sw.Write(base64); 1576 }
1571 1577 catch (IOException ex)
1572 sw.Close(); 1578 {
1573 fs.Close(); 1579 // if there already exists a file at that location, it may be locked.
1580 m_log.ErrorFormat("[XEngine]: File {0} already exists! {1}", path, ex.Message);
1581 }
1582 try
1583 {
1584 using (FileStream fs = File.Create(path + ".text"))
1585 {
1586 using (StreamWriter sw = new StreamWriter(fs))
1587 {
1588 sw.Write(base64);
1589 sw.Close();
1590 }
1591 fs.Close();
1592 }
1593 }
1594 catch (IOException ex)
1595 {
1596 // if there already exists a file at that location, it may be locked.
1597 m_log.ErrorFormat("[XEngine]: File {0} already exists! {1}", path, ex.Message);
1598 }
1574 } 1599 }
1575 } 1600 }
1576 1601
1577 string statepath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString()); 1602 string statepath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString());
1578 statepath = Path.Combine(statepath, itemID.ToString() + ".state"); 1603 statepath = Path.Combine(statepath, itemID.ToString() + ".state");
1579 1604
1580 FileStream sfs = File.Create(statepath); 1605 try
1581 StreamWriter ssw = new StreamWriter(sfs); 1606 {
1582 1607 using (FileStream sfs = File.Create(statepath))
1583 ssw.Write(stateE.OuterXml); 1608 {
1584 1609 using (StreamWriter ssw = new StreamWriter(sfs))
1585 ssw.Close(); 1610 {
1586 sfs.Close(); 1611 ssw.Write(stateE.OuterXml);
1612 ssw.Close();
1613 }
1614 sfs.Close();
1615 }
1616 }
1617 catch (IOException ex)
1618 {
1619 // if there already exists a file at that location, it may be locked.
1620 m_log.ErrorFormat("[XEngine]: File {0} already exists! {1}", statepath, ex.Message);
1621 }
1587 1622
1588 XmlNodeList mapL = rootE.GetElementsByTagName("LineMap"); 1623 XmlNodeList mapL = rootE.GetElementsByTagName("LineMap");
1589 if (mapL.Count > 0) 1624 if (mapL.Count > 0)
@@ -1593,13 +1628,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1593 string mappath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString()); 1628 string mappath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString());
1594 mappath = Path.Combine(mappath, mapE.GetAttribute("Filename")); 1629 mappath = Path.Combine(mappath, mapE.GetAttribute("Filename"));
1595 1630
1596 FileStream mfs = File.Create(mappath); 1631 try
1597 StreamWriter msw = new StreamWriter(mfs); 1632 {
1598 1633 using (FileStream mfs = File.Create(mappath))
1599 msw.Write(mapE.InnerText); 1634 {
1600 1635 using (StreamWriter msw = new StreamWriter(mfs))
1601 msw.Close(); 1636 {
1602 mfs.Close(); 1637 msw.Write(mapE.InnerText);
1638 msw.Close();
1639 }
1640 mfs.Close();
1641 }
1642 }
1643 catch (IOException ex)
1644 {
1645 // if there already exists a file at that location, it may be locked.
1646 m_log.ErrorFormat("[XEngine]: File {0} already exists! {1}", statepath, ex.Message);
1647 }
1603 } 1648 }
1604 1649
1605 return true; 1650 return true;