diff options
Diffstat (limited to 'OpenSim.RegionServer')
-rw-r--r-- | OpenSim.RegionServer/SimClient.cs | 26 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/World.cs | 63 |
2 files changed, 88 insertions, 1 deletions
diff --git a/OpenSim.RegionServer/SimClient.cs b/OpenSim.RegionServer/SimClient.cs index 58cc625..6c64731 100644 --- a/OpenSim.RegionServer/SimClient.cs +++ b/OpenSim.RegionServer/SimClient.cs | |||
@@ -436,6 +436,32 @@ namespace OpenSim | |||
436 | this.OutPacket(replytask); | 436 | this.OutPacket(replytask); |
437 | } | 437 | } |
438 | break; | 438 | break; |
439 | case PacketType.UpdateTaskInventory: | ||
440 | Console.WriteLine(Pack.ToString()); | ||
441 | UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack; | ||
442 | AgentInventory myinventory = this.m_inventoryCache.GetAgentsInventory(this.AgentID); | ||
443 | if (myinventory != null) | ||
444 | { | ||
445 | if (myinventory.InventoryItems[updatetask.InventoryData.ItemID] != null) | ||
446 | { | ||
447 | if (myinventory.InventoryItems[updatetask.InventoryData.ItemID].Type == 7) | ||
448 | { | ||
449 | LLUUID noteaid = myinventory.InventoryItems[updatetask.InventoryData.ItemID].AssetID; | ||
450 | AssetBase assBase = this.m_assetCache.GetAsset(noteaid); | ||
451 | if (assBase != null) | ||
452 | { | ||
453 | foreach (Entity ent in m_world.Entities.Values) | ||
454 | { | ||
455 | if (ent.localid == updatetask.UpdateData.LocalID) | ||
456 | { | ||
457 | this.m_world.AddScript(ent, Helpers.FieldToString(assBase.Data)); | ||
458 | } | ||
459 | } | ||
460 | } | ||
461 | } | ||
462 | } | ||
463 | } | ||
464 | break; | ||
439 | case PacketType.AgentAnimation: | 465 | case PacketType.AgentAnimation: |
440 | //Console.WriteLine(Pack.ToString()); | 466 | //Console.WriteLine(Pack.ToString()); |
441 | break; | 467 | break; |
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index 6bc485f..408f68d 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs | |||
@@ -32,18 +32,20 @@ namespace OpenSim.world | |||
32 | private int storageCount; | 32 | private int storageCount; |
33 | private Dictionary<uint, SimClient> m_clientThreads; | 33 | private Dictionary<uint, SimClient> m_clientThreads; |
34 | private Dictionary<LLUUID, ScriptHandler> m_scriptHandlers; | 34 | private Dictionary<LLUUID, ScriptHandler> m_scriptHandlers; |
35 | private Dictionary<string, Script> m_scripts; | ||
35 | private ulong m_regionHandle; | 36 | private ulong m_regionHandle; |
36 | private string m_regionName; | 37 | private string m_regionName; |
37 | private InventoryCache _inventoryCache; | 38 | private InventoryCache _inventoryCache; |
38 | private AssetCache _assetCache; | 39 | private AssetCache _assetCache; |
39 | 40 | ||
40 | public World(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, string regionName) | 41 | public World(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, string regionName) |
41 | { | 42 | { |
42 | m_clientThreads = clientThreads; | 43 | m_clientThreads = clientThreads; |
43 | m_regionHandle = regionHandle; | 44 | m_regionHandle = regionHandle; |
44 | m_regionName = regionName; | 45 | m_regionName = regionName; |
45 | 46 | ||
46 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); | 47 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); |
48 | m_scripts = new Dictionary<string, Script>(); | ||
47 | 49 | ||
48 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating new entitities instance"); | 50 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating new entitities instance"); |
49 | Entities = new Dictionary<libsecondlife.LLUUID, Entity>(); | 51 | Entities = new Dictionary<libsecondlife.LLUUID, Entity>(); |
@@ -55,6 +57,7 @@ namespace OpenSim.world | |||
55 | // Initialise this only after the world has loaded | 57 | // Initialise this only after the world has loaded |
56 | // Scripts = new ScriptEngine(this); | 58 | // Scripts = new ScriptEngine(this); |
57 | Avatar.LoadAnims(); | 59 | Avatar.LoadAnims(); |
60 | this.SetDefaultScripts(); | ||
58 | } | 61 | } |
59 | 62 | ||
60 | public void AddScript(Entity entity, Script script) | 63 | public void AddScript(Entity entity, Script script) |
@@ -63,6 +66,37 @@ namespace OpenSim.world | |||
63 | m_scriptHandlers.Add(scriptHandler.ScriptId, scriptHandler); | 66 | m_scriptHandlers.Add(scriptHandler.ScriptId, scriptHandler); |
64 | } | 67 | } |
65 | 68 | ||
69 | public void AddScript(Entity entity, string scriptData) | ||
70 | { | ||
71 | int scriptstart = 0; | ||
72 | int scriptend = 0; | ||
73 | string substring; | ||
74 | scriptstart = scriptData.LastIndexOf("<Script>"); | ||
75 | scriptend = scriptData.LastIndexOf("</Script>"); | ||
76 | substring = scriptData.Substring(scriptstart + 8, scriptend - scriptstart - 8); | ||
77 | substring = substring.Trim(); | ||
78 | Console.WriteLine("searching for script to add: " + substring); | ||
79 | if (this.m_scripts.ContainsKey(substring)) | ||
80 | { | ||
81 | Console.WriteLine("added script"); | ||
82 | this.AddScript(entity, this.m_scripts[substring]); | ||
83 | } | ||
84 | /*string delimStr = " "; | ||
85 | char[] delimiter = delimStr.ToCharArray(); | ||
86 | string[] line; | ||
87 | line = scriptData.Split(delimiter); | ||
88 | if (line.Length > 1) | ||
89 | { | ||
90 | if (line[0] == "script:") | ||
91 | { | ||
92 | if (this.m_scripts.ContainsKey(line[1])) | ||
93 | { | ||
94 | this.AddScript(entity, this.m_scripts[line[1]]); | ||
95 | } | ||
96 | } | ||
97 | }*/ | ||
98 | } | ||
99 | |||
66 | public InventoryCache InventoryCache | 100 | public InventoryCache InventoryCache |
67 | { | 101 | { |
68 | set | 102 | set |
@@ -521,6 +555,33 @@ namespace OpenSim.world | |||
521 | return true; | 555 | return true; |
522 | } | 556 | } |
523 | 557 | ||
558 | public void SetDefaultScripts() | ||
559 | { | ||
560 | this.m_scripts.Add("Test", new TestScript1()); | ||
561 | } | ||
562 | |||
524 | #endregion | 563 | #endregion |
525 | } | 564 | } |
565 | |||
566 | public class TestScript1 : Script | ||
567 | { | ||
568 | int toggle = 0; | ||
569 | |||
570 | public TestScript1() | ||
571 | : base(LLUUID.Random()) | ||
572 | { | ||
573 | OnFrame += MyOnFrame; | ||
574 | } | ||
575 | |||
576 | private void MyOnFrame(IScriptContext context) | ||
577 | { | ||
578 | toggle = 2 - toggle; | ||
579 | |||
580 | LLVector3 pos = context.GetPos(); | ||
581 | |||
582 | pos.X += (toggle - 1); | ||
583 | |||
584 | context.MoveTo(pos); | ||
585 | } | ||
586 | } | ||
526 | } | 587 | } |