From 9e84d1f95799a1c1e7c5c25ff5b43eeeafb21b7b Mon Sep 17 00:00:00 2001 From: Jon Cundill Date: Thu, 21 Jul 2011 22:34:15 +0100 Subject: [PATCH] fixed up repo --- README | 100 ------------------------------------------- osboids/Flocking.dll | Bin 28672 -> 0 bytes 2 files changed, 100 deletions(-) delete mode 100755 README delete mode 100755 osboids/Flocking.dll diff --git a/README b/README deleted file mode 100755 index e4baf6d..0000000 --- a/README +++ /dev/null @@ -1,100 +0,0 @@ -Region Module - ability to control flocks within an OpenSim scene - - -To build from source - -Add osboids source tree under opensim/addon-modules - -./runprebuild.sh against opensim root to build this module into the solution -then xbuild, or build within Visual Studio / Monodevelop to produce the binaries - -osboids has no external dependencies other than the dlls currently included in opensim. -The project generates a single dll - Flocking.dll which is copied into opensim/bin as part of the build step - - -Configuration - -To become active, the module needs to be both referenced and enabled in the ini files. Otherwise it does nothing on startup - -Entry is as follows: - - -[Boids] - enabled = true - - -removing the Boids group or setting enabled = false will switch off the module - -In addition various config parameters are available to control the flock dynamics - - flock-size = 100 the number of Boids to flock - max-speed = 3 how far each boid can travel per update - max-force = 0.25 the maximum acceleration allowed to the current velocity of the boid - neighbour-dist = 25 max distance for other boids to be considered in the same flock as us - desired-separation = 20 how far away from other boids we would like to stay - tolerance = 5 how close to the edges of things can we get without being worried - - -By default the module will create a flock of plain wooden spheres, however this can be overridden - - boid-prim = fish01 names the prim to use to represent each boid in the flock - currently this prim needs to already exist in the scene - i.e. be rezzed in the region. - Eventually this will be an inventory lookup - - -Various runtime commands control the flocking module behaviour - described below. These can either be invoked -from the Console or in world by directing them to a chat channel. To specify which channel to use: - - chat-channel = 118 the chat channel to listen for boid commands on - - - -Runtime Commands - -The following commands, which can either be issued on the Console, or via a chat channel in-world, control the behaviour -of the flock at runtime - - flock-stop or /118 stop in chat - stop all flocking and remove boids from the region - flock-start or /118 start - start the flocking simulation - flock-size or /118 size - change the size of the flock - flock-prim or /118 prim - change the boid prim to that passed in - must be rezzed in the scene - flock-framerate or /118 framerate - only update the flock positions every frames - only really useful - - for photography and debugging boid behaviour - - -Boid prims - -Any, currently rezzed in scene, object can be used as the boid prim. However fps is very much affected by the -complexity of the entity to use. It is easier to throw a single prim (or sculpty) around the scene than it is to -throw the constituent parts of a 200 linked prim dragon. - -Tests show that <= 500 single prims can be flocked effectively - depending on system and network -However maybe <= 300 simple linksets can perform as well. - -I intend to allow inventory items and UUIDs to represent the boids - this is not written yet however. - - - - -Prebuilt binaries etc.. to follow - - -Please Note - -This module is currently only tested against opensim master. If it is found to work against a stable release, -then that behaviour ought to be considered as a bug - which I will attempt to fix in the next git push. - - -Status - -probably made it to alpha by now ... - - -Next Steps - -I want to improve the ability of the boids to avoid obstacles within the scene. Current avoidance is pretty basic, and -only functions correctly about fifty percent of the time. Need to improve this without increasing computational cost. - - - -Licence: all files released under a BSD licence diff --git a/osboids/Flocking.dll b/osboids/Flocking.dll deleted file mode 100755 index fe1459f00dce4eb48742bb3e92b701939c411e56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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

4w;_RPhI;0wwMcDk?aScT8G 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