From 45fd724e56c648ada62efc16fe498f3672032240 Mon Sep 17 00:00:00 2001 From: Jak Daniels Date: Fri, 2 Jan 2015 15:11:06 +0000 Subject: [PATCH] Only launch a prims script(s) when adding the prim, not on every update. Rename Bird prims to OpenSimBirdsN where N is 0-birdcount. --- Module/BirdsModule/FlockingModel.cs | 6 +++--- Module/BirdsModule/FlockingView.cs | 22 ++++++++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Module/BirdsModule/FlockingModel.cs b/Module/BirdsModule/FlockingModel.cs index 9a9f458..3ba8494 100644 --- a/Module/BirdsModule/FlockingModel.cs +++ b/Module/BirdsModule/FlockingModel.cs @@ -40,7 +40,7 @@ namespace Flocking private float m_neighbourDistance; private float m_desiredSeparation; private float m_tolerance; - private float m_border; + private float m_border; private string m_name; private Random m_rnd = new Random(Environment.TickCount); @@ -56,7 +56,7 @@ namespace Flocking } } - public FlockingModel(string moduleName, float maxSpeed, float maxForce, float neighbourDistance, float desiredSeparation, float tolerance, float border) { + public FlockingModel(string moduleName, float maxSpeed, float maxForce, float neighbourDistance, float desiredSeparation, float tolerance, float border) { m_name = moduleName; m_maxSpeed = maxSpeed; m_maxForce = maxForce; @@ -111,7 +111,7 @@ namespace Flocking { m_flowMap = flowMap; for (int i = 0; i < num; i++) { - AddBird ("Bird"+i ); + AddBird (m_name + i ); } } diff --git a/Module/BirdsModule/FlockingView.cs b/Module/BirdsModule/FlockingView.cs index 2a42e21..2434ebe 100644 --- a/Module/BirdsModule/FlockingView.cs +++ b/Module/BirdsModule/FlockingView.cs @@ -87,31 +87,29 @@ namespace Flocking SceneObjectGroup sog; SceneObjectPart rootPart; - if (existing == null) { - SceneObjectGroup group = findByName (m_birdPrim); + if (existing == null) { + m_log.InfoFormat("[{0}]: Adding prim {1} from region {2}", m_name, bird.Id, m_scene.RegionInfo.RegionName); + SceneObjectGroup group = findByName (m_birdPrim); sog = CopyPrim (group, bird.Id); rootPart = sog.RootPart; //set prim to phantom sog.UpdatePrimFlags(rootPart.LocalId, false, false, true, false); m_sogMap [bird.Id] = sog; - m_log.InfoFormat("[{0}]: Adding prim {1} from region {2}", m_name, bird.Id, m_scene.RegionInfo.RegionName); - m_scene.AddNewSceneObject (sog, false); + m_scene.AddNewSceneObject (sog, false); + // Fire script on_rez + sog.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 1); + rootPart.ParentGroup.ResumeScripts(); + rootPart.ScheduleFullUpdate(); } else { sog = existing.ParentGroup; m_sogMap[bird.Id] = sog; - //m_log.InfoFormat("[{0}]: Reusing prim {1} from region {2}", m_name, bird.Id, m_scene.RegionInfo.RegionName); - rootPart = sog.RootPart; + //rootPart = sog.RootPart; //set prim to phantom - sog.UpdatePrimFlags(rootPart.LocalId, false, false, true, false); + //sog.UpdatePrimFlags(rootPart.LocalId, false, false, true, false); } Quaternion rotation = CalcRotationToEndpoint (sog, sog.AbsolutePosition, bird.Location); sog.UpdateGroupRotationPR( bird.Location, rotation); - - // Fire script on_rez - sog.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 1); - rootPart.ParentGroup.ResumeScripts(); - rootPart.ScheduleFullUpdate(); } private static Quaternion CalcRotationToEndpoint (SceneObjectGroup copy, Vector3 sv, Vector3 ev)