From a04602d9c136b882a6c72d4c3c09c3ca0d526c37 Mon Sep 17 00:00:00 2001 From: MW Date: Sat, 14 Jul 2007 13:18:02 +0000 Subject: Added AddPreCompiledScript method to ScriptManager. Done some work on lbsa71's simpleApp(hope he doesn't mind): now have the avatar showing up and the terrain and his pulsating box (well except its not a box, as there seems to be something wrong with our PrimitiveBaseShape..DefaultBox() settings). Also noticed a few other problems that I had to work around, so these need looking into. --- OpenSim/Region/Examples/SimpleApp/MyWorld.cs | 50 ++++++++++++++++++++++- OpenSim/Region/Examples/SimpleApp/Program.cs | 14 +++++-- OpenSim/Region/Examples/SimpleApp/PulseScript.cs | 52 ++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 OpenSim/Region/Examples/SimpleApp/PulseScript.cs (limited to 'OpenSim/Region/Examples') diff --git a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs index 39666fb..1f40052 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs @@ -7,12 +7,14 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Types; using OpenSim.Region.Caches; using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Terrain; using Avatar=OpenSim.Region.Environment.Scenes.ScenePresence; namespace SimpleApp { public class MyWorld : Scene { + private bool firstlogin = true; private List m_avatars; public MyWorld(ClientManager clientManager, RegionInfo regionInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, BaseHttpServer httpServer) @@ -21,6 +23,7 @@ namespace SimpleApp m_avatars = new List(); } + /* public override void SendLayerData(IClientAPI remoteClient) { float[] map = new float[65536]; @@ -34,6 +37,22 @@ namespace SimpleApp } remoteClient.SendLayerData(map); + }*/ + + public override void LoadWorldMap() + { + float[] map = new float[65536]; + + for (int i = 0; i < 65536; i++) + { + int x = i % 256; + int y = i / 256; + + map[i] = 25f; + } + + this.Terrain.setHeights1D(map); + this.CreateTerrainTexture(); } #region IWorld Members @@ -41,6 +60,8 @@ namespace SimpleApp override public void AddNewClient(IClientAPI client, bool child) { + NewLoggin(); + LLVector3 pos = new LLVector3(128, 128, 128); client.OnRegionHandShakeReply += SendLayerData; @@ -66,8 +87,33 @@ namespace SimpleApp client.SendRegionHandshake(m_regInfo); - CreateAndAddScenePresence(client); - + ScenePresence avatar =CreateAndAddScenePresence(client); + avatar.Pos = new LLVector3(128, 128, 26); + } + + public void NewLoggin() + { + if (firstlogin) + { + this.StartTimer(); + + scriptManager.AddPreCompiledScript(new PulseScript()); + + PrimitiveBaseShape shape = PrimitiveBaseShape.DefaultBox(); + shape.Scale = new LLVector3(0.5f, 0.5f, 0.5f); + LLVector3 pos1 = new LLVector3(129, 129, 27); + AddNewPrim(LLUUID.Random(), pos1, shape); + firstlogin = false; + } + } + + public override void Update() + { + foreach (LLUUID UUID in Entities.Keys) + { + Entities[UUID].update(); + } + eventManager.TriggerOnFrame(); } #endregion diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index e5e2234..3723c3d 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs @@ -21,6 +21,7 @@ namespace SimpleApp private LogBase m_log; AuthenticateSessionsBase m_circuitManager; uint m_localId; + public MyWorld world; private void Run() { @@ -57,8 +58,9 @@ namespace SimpleApp RegionInfo regionInfo = new RegionInfo( 1000, 1000, internalEndPoint, "127.0.0.1" ); - MyWorld world = new MyWorld(packetServer.ClientManager, regionInfo, m_circuitManager, communicationsManager, assetCache, httpServer); + world = new MyWorld(packetServer.ClientManager, regionInfo, m_circuitManager, communicationsManager, assetCache, httpServer); world.PhysScene = physManager.GetPhysicsScene("basicphysics"); //PhysicsScene.Null; + world.LoadWorldMap(); udpServer.LocalWorld = world; httpServer.Start(); @@ -66,13 +68,16 @@ namespace SimpleApp m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit."); m_log.ReadLine(); + + /* PrimitiveBaseShape shape = PrimitiveBaseShape.DefaultBox(); - shape.Scale = new LLVector3(10, 10, 10); + shape.Scale = new LLVector3(0.5f, 0.5f, 0.5f); - LLVector3 pos = new LLVector3(128,128,72); + LLVector3 pos = new LLVector3(129,130,25); - world.AddNewPrim( LLUUID.Zero, pos, shape ); + world.AddNewPrim( LLUUID.Random(), pos, shape ); + */ } @@ -129,6 +134,7 @@ namespace SimpleApp Program app = new Program(); app.Run(); + } } } diff --git a/OpenSim/Region/Examples/SimpleApp/PulseScript.cs b/OpenSim/Region/Examples/SimpleApp/PulseScript.cs new file mode 100644 index 0000000..01a9bda --- /dev/null +++ b/OpenSim/Region/Examples/SimpleApp/PulseScript.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Region.Scripting; +using OpenSim.Region.Environment.Scenes; +namespace SimpleApp +{ + public class PulseScript :IScript + { + ScriptInfo script; + + private libsecondlife.LLVector3 pulse = new libsecondlife.LLVector3(0.1f, 0.1f, 0.1f); + public string getName() + { + return "pulseScript 0.1"; + } + + public void Initialise(ScriptInfo scriptInfo) + { + script = scriptInfo; + script.events.OnFrame += new EventManager.OnFrameDelegate(events_OnFrame); + script.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence); + } + + void events_OnNewPresence(ScenePresence presence) + { + script.logger.Verbose("Hello " + presence.firstname.ToString() + "!"); + } + + void events_OnFrame() + { + foreach(EntityBase ent in this.script.world.Entities.Values) + { + if (ent is SceneObject) + { + SceneObject prim = (SceneObject)ent; + if ((prim.rootPrimitive.Scale.X > 1) && (prim.rootPrimitive.Scale.Y > 1) && (prim.rootPrimitive.Scale.Z > 1)) + { + this.pulse = new libsecondlife.LLVector3(-0.1f, -0.1f, -0.1f); + } + else if ((prim.rootPrimitive.Scale.X < 0.2f) && (prim.rootPrimitive.Scale.Y < 0.2f) && (prim.rootPrimitive.Scale.Z < 0.2f)) + { + pulse = new libsecondlife.LLVector3(0.1f, 0.1f, 0.1f); + } + + prim.rootPrimitive.ResizeGoup( prim.rootPrimitive.Scale + pulse); + } + } + } + + } +} -- cgit v1.1