本文整理汇总了C#中OpenSim.Region.Framework.Scenes.ScenePresence.HandleAgentUpdate方法的典型用法代码示例。如果您正苦于以下问题:C# ScenePresence.HandleAgentUpdate方法的具体用法?C# ScenePresence.HandleAgentUpdate怎么用?C# ScenePresence.HandleAgentUpdate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.ScenePresence
的用法示例。
在下文中一共展示了ScenePresence.HandleAgentUpdate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateAgentUpdated
// Some presence property has changed. Generate a call into the scene presence
// so the new values are evaluated (like AgentControlFlags).
// The ScenePresence will trigger OnScenePresenceUpdated and we rely on the
// fact that the values will all be equal to supress the generation of a
// new outgoing property update message.
private void GenerateAgentUpdated(ScenePresence sp)
{
// The call for the change of these values comes out of the client view
// which has an OnAgentUpdate event that the scene presence connects to.
// We can't use the OnAgentUpdate event subscription (we're not derived
// from client view) so we fake the reception of a presenece changing
// message by building up the parameter block and directly calling the
// ScenePresence's handling routine.
AgentUpdateArgs aua = new AgentUpdateArgs();
aua.AgentID = sp.UUID;
aua.BodyRotation = sp.Rotation;
aua.CameraAtAxis = sp.CameraAtAxis;
aua.CameraCenter = sp.CameraPosition;
aua.CameraLeftAxis = sp.CameraLeftAxis;
aua.CameraUpAxis = sp.CameraUpAxis;
aua.ClientAgentPosition = sp.AbsolutePosition;
aua.ControlFlags = sp.AgentControlFlags;
aua.Far = sp.DrawDistance;
aua.Flags = 0;
aua.HeadRotation = sp.Rotation; // this is wrong but the only thing we can do
aua.State = sp.State;
aua.UseClientAgentPosition = true;
sp.HandleAgentUpdate(null, aua);
}
示例2: OnBotAgentUpdate
public void OnBotAgentUpdate(ScenePresence presence, Vector3 toward, uint controlFlag, Quaternion bodyRotation, bool isMoving)
{
if (m_controller.Bot.Frozen && isMoving)
{
var pa = presence.PhysicsActor;
bool fly = pa != null && pa.Flying;
StopMoving(presence, fly, false);
return;
}
if (isMoving)
m_hasStoppedMoving = false;
AgentUpdateArgs pack = new AgentUpdateArgs { ControlFlags = controlFlag, BodyRotation = bodyRotation };
presence.HandleAgentUpdate(presence.ControllingClient, pack);
}