aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2012-03-06Go back to setting appearance directly in NPCModule.SetAppearance() to fix ↵Justin Clark-Casey (justincc)1-8/+12
mantis 5914 The part reverted is from commit 2ebb421. Unfortunately, IAvatarFactoryModule.SetAppearance() does not transfer attachments. I'm not sure how to do this separately, unfortunately I'll need to leave it to Dan :) Regression test added for this case. Mantis ref: http://opensimulator.org/mantis/view.php?id=5914
2012-02-16Fix some logic mistakes where firstly osNpcCreate() without options was ↵Justin Clark-Casey (justincc)1-2/+2
creating npcs sensed as agents and secondly the OS_NPC_SENSE_AS_AGENT option was having the opposite effect. Hopefully makes progress on addressing http://opensimulator.org/mantis/view.php?id=5872
2012-02-14Refactor appearance saving for NPC to use AvatarFactoryModule interface.Dan Lake1-6/+6
2012-02-09If NPCModule.CreateNPC() fails to create the required ScenePresence (which ↵Justin Clark-Casey (justincc)1-8/+7
should in theory never happen), don't add the NPC to the npc list but return UUID.Zero instead.
2012-02-09minor: put in commented out logging statements for future reuseJustin Clark-Casey (justincc)1-0/+3
2012-02-03Extend m_avatars lock in NpcModule.CreateNPC over both creation of NPC scene ↵Justin Clark-Casey (justincc)1-14/+16
presence and population of m_avatars. This is required to stop a race where the SensorRepeat module can detect an NPC avatar before m_avatars is populated. Extending the lock is the easiest to understand solution rather than getting complicated with null checks. Hopefully resolves http://opensimulator.org/mantis/view.php?id=5872
2012-01-28Add OS_NPC_SENSE_AS_AGENT option to osNpcCreate().Justin Clark-Casey (justincc)1-2/+19
This allows NPCs to be sensed as agents by LSL sensors rather than as a specific NPC type (which is currently an OpenSimulator-only extension). Wiki doc on this and other recent NPC functions will follow soon
2012-01-12Add permissions checks for owned avatars to all other osNpc* functions.Justin Clark-Casey (justincc)1-4/+1
This is being done outside the npc module since the check is meaningless for region module callers, who can fake any id that they like.
2012-01-12refactor: Move existing npc owner checks to NPCModule.CheckPermissions() ↵Justin Clark-Casey (justincc)1-13/+36
methods and expose on interface for external calls.
2012-01-06Add osNpcCreateOwned to create an owned NPC. Those can be sensed only by the ↵Melanie1-5/+23
owner, can be destroyed only by the owner and only the owner can save their appearance. Added "NPC" as a flag to llSensor to sense NPCs and exclude them from "AGENT" results.
2011-11-05Fix NPC sitting for prims without a sit target.Justin Clark-Casey (justincc)1-1/+1
This is to partially address http://opensimulator.org/mantis/view.php?id=5769 We don't need to call SP.HandleAgentSit() again if we are within 10m since the autopilot won't trigger. By calling it twice, the position of the sitting NPC was wrongly adjusted, ending up near <0,0,0>. However, this change does mean that NPCs further than 10m away will not attempt to autopilot to the prim, though this code was broken anyway (is actually a different mechanism to normal NPC movmeent). Hopefully this can be addressed soon.
2011-10-19Renamed and rearranged AvatarFactoryModule to eliminate redundant lookups of ↵Dan Lake1-1/+1
scene presence by client ID.
2011-10-17Implement osNpcStand(<npc-id>)Justin Clark-Casey (justincc)1-0/+17
Allows you to stand an NPC that has sat.
2011-10-17Implement osNpcSit(). This is still in development so don't trust itJustin Clark-Casey (justincc)1-0/+18
Format is osNpcSit(<npc-uuid>, <target-uuid>, OS_NPC_SIT_IMMEDIATE) e.g. osNpcSit(npc, llGetKey(), OS_NPC_SIT_IMMEDIATE); At the moment, sit only succeeds if the part has a sit target set. NPC immediately sits on the target even if miles away - they do not walk up to it. This method is in development - it may change so please don't trust it yet. Standing will follow shortly since that's kind of important once you're sitting :)
2011-09-22Reinstate option to land an npc when it reaches a target.Justin Clark-Casey (justincc)1-69/+3
This is moved into ScenePresence for now as a general facility
2011-09-21Move code which handles NPC movement into Scene so that this can also be ↵Justin Clark-Casey (justincc)1-1/+1
used by Autopilot coming from the client side. I thought that I had implemented this but must have accidentally removed it. Adds a regression test to detect if this happens again. Temporarily disables automatic landing of NPC at a target. Will be fixed presently.
2011-08-31move common code into AttachmentsModule.DeleteAttachmentsFromScene()Justin Clark-Casey (justincc)1-5/+1
2011-08-31Make SP.Attachments available as sp.GetAttachments() instead.Justin Clark-Casey (justincc)1-7/+3
The approach here, as in other parts of OpenSim, is to return a copy of the list rather than the attachments list itself This prevents callers from forgetting to lock the list when they read it, as was happening in various parts of the codebase. It also improves liveness. This might improve attachment anomolies when performing region crossings.
2011-08-30refactor: Move ScenePresence.RezAttachments() into AttachmentsModuleJustin Clark-Casey (justincc)1-1/+1
This adds an incomplete IScenePresence to match ISceneEntity
2011-08-18Don't try to save changed attachment states when an NPC with attachments is ↵Justin Clark-Casey (justincc)1-1/+1
removed from the scene. This is done by introducing a PresenceType enum into ScenePresence which currently has two values, User and Npc. This seems better than a SaveAttachments flag in terms of code comprehension, though I'm still slightly uneasy about introducing these semantics to core objects
2011-08-17Fix issue where loading a new appearance onto an NPC would not remove the ↵Justin Clark-Casey (justincc)1-0/+10
previous attachments from the scene. Addresses http://opensimulator.org/mantis/view.php?id=5636
2011-08-12minor: On "login disable/enable" always tell the user the final login ↵Justin Clark-Casey (justincc)1-3/+3
status, rather than remaining silent if it was already on/off
2011-08-11add regression test for osNpcCreate when cloning an in-region avatarJustin Clark-Casey (justincc)1-26/+3
2011-08-11eliminate the rotation parameter from SP.HandleMoveToTargetUpdate(). This ↵Justin Clark-Casey (justincc)1-1/+6
can just use the currently set Rotation looks like I spoke to soon about eliminating jerkiness on "go here"/autopilot. It's still there.
2011-08-11instead of setting avatar rotation twice in SP.HandleAgentUpdate(), ↵Justin Clark-Casey (justincc)1-1/+1
eliminate the second setting in AddNewMovement()
2011-08-11Get NPCs to revert to the correct 'resting' animation (e.g. stand or hover) ↵Justin Clark-Casey (justincc)1-5/+3
after finishing their movement. This also fixes judder after an avatar has finished "go here"/autopilot movement in a viewer. This meant reseting the SP.AgentControlFlags since the Animator uses these to determine the correct default animation.
2011-08-10Add a OS_NPC_LAND_AT_TARGET option to osMoveToTarget()Justin Clark-Casey (justincc)1-11/+22
Default for this function is now not to automatically land. This allows better control by scripts when an avatar is going to be landing on a prim rather than the ground. Stopping the avatar involves faking a collision, to avoid the pid controller making it overshoot. A better approach would be to gradually slow the avatar as we near the target
2011-08-10early code to allow scripts to force npcs not to fly when moving to targetJustin Clark-Casey (justincc)1-2/+2
this is to allow walking on prims. it will be up to the script writer to be sure that there is a continuous path. currently implemented in osNpcMoveToTarget(), but none of this is final.
2011-08-10Stop trying to deregister caps or close child agents when an NPC is removedJustin Clark-Casey (justincc)1-1/+1
2011-08-10implement osNpcStopMoveTo() to cancel any current move targetJustin Clark-Casey (justincc)1-3/+34
2011-08-09When an NPC appearance is loaded, rez the attachments tooJustin Clark-Casey (justincc)1-0/+1
2011-08-09When an NPC is created, stop telling neighbouring regions to expect a child ↵Justin Clark-Casey (justincc)1-7/+1
agent
2011-08-09Implement first draft functions for saving and loading NPC appearance from ↵Justin Clark-Casey (justincc)1-0/+29
storage. This works by serializing and deserializing NPC AvatarAppearance to a notecard in the prim inventory and making the required baked textures permanent. By using notecards, we avoid lots of awkward, technical and user-unfriendly issues concerning retaining asset references and creating a new asset type. Notecards also allow different appearances to be swapped and manipulated easily. This also allows stored NPC appearances to work transparently with OARs/IARs since the UUID scan will pick up and store the necessary references from the notecard text. This works in my basic test but is not at all ready for user use or bug reporting yet.
2011-08-04if an NPC target is set to a ground location, then automatically land them ↵Justin Clark-Casey (justincc)1-1/+12
when they get there. This doesn't help where the target is a prim surface. In these situations, it might be better to provide manual overrides so the script can control whethre an avatar flys there/lands, etc.
2011-08-04if an NPC move to target is above the terrain then make it fly to destinationJustin Clark-Casey (justincc)1-3/+7
2011-08-04move bAllowUpdateMoveToPosition switch outside of HandleMoveToTargetUpdate()Justin Clark-Casey (justincc)1-1/+1
2011-08-04move reset code out of HandleMoveToTargetUpdate() so that we only call it ↵Justin Clark-Casey (justincc)1-1/+1
where needed instead of passing in a flag
2011-08-04Make SIGNIFICANT_MOVEMENT SP constant a top-level property so that other ↵Justin Clark-Casey (justincc)1-1/+1
classes can use it.
2011-08-04When the NPC reaches within the SIGNIFICANT_CLIENT_MOVEMENT distance of the ↵Justin Clark-Casey (justincc)1-2/+3
target, move it directly to the target. This makes the movement exact. Regression test changed to check avatar reaches exact target. Also has the nice side effect of making NPC animations continue to work after the first movement (which wasn't working). However, avatar still pauses in mid-stride
2011-08-04Rename HandleMoveToPositionUpdate() to HandleMoveToTargetUpdate() for ↵Justin Clark-Casey (justincc)1-1/+1
consistency. Improve method doc.
2011-08-03rename NPC.Autopilot to NPC.MoveToTarget internally. Add method doc to ↵Justin Clark-Casey (justincc)1-1/+1
INPCModule
2011-08-03refactor: rename the move to position methods to move to target to be ↵Justin Clark-Casey (justincc)1-3/+3
consistent with terminology used by scene object part and elsewhere
2011-08-03get rid of vestigal move to parametersJustin Clark-Casey (justincc)1-1/+1
2011-08-03Put config to enable disable [NPC] module.Justin Clark-Casey (justincc)1-4/+7
Default is disabled. You will need to explicitly enable to toy with this.
2011-08-03Do a partial fix/implementation of OSSL osNpcMoveTo()Justin Clark-Casey (justincc)1-11/+48
Avatar moves and stops. However, will stop in mid stride. And if the move to position is in the air, avatar will continue to make vain and quite hilarious attempts to take off (but never doing so). Clearly more work is needed.
2011-08-02Partially fix autopilot/go hereJustin Clark-Casey (justincc)1-1/+10
This now works again except that it requires a click or avatar mvmt to get going This is because the ScenePresence.HandleAgentUpdate() method doesn't trigger until the client does something significant, at which point autopilot takes over. Even clicking is enough to trigger. This will be improved presently.
2011-08-02Get rid of AvatarAppearance.Owner to simplify the code.Justin Clark-Casey (justincc)1-1/+0
This is not used for anything - appearances are always properties of objects with ids (ScenePresence, AgentCircuitData) and just has the potential to get out of sync when the appearance is cloned.
2011-08-01Get osNpcCreate appearance working with avatars that are currently in the scene.Justin Clark-Casey (justincc)1-5/+20
Had to stop using AvatarService for now since it doesn't store baked texture IDs (which is why this was failing). Also failing because cloning appearance was also cloning the AvatarApperance.Owner field, which we weren't then changing. Extended TestCreate() to check this.
2011-07-02Create a very basic initial test which just creates an 'npc' and tests that ↵Justin Clark-Casey (justincc)1-2/+1
the scene presence exists
2011-07-02refactor: simplify existing npc code by creating them directly rather than ↵Justin Clark-Casey (justincc)1-102/+37
indirectly via a timer no obvious reason for doing this asynchonously, especially as the caller was sleeping in order to pick up the response anyway!