Some refactoring.

Sugilite
MW 2007-06-21 16:13:06 +00:00
parent 5688c67914
commit 596b3690fc
10 changed files with 565 additions and 397 deletions

View File

@ -55,6 +55,84 @@ Global
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
({683344D5-0000-0000-0000-000000000000}).1 = ({62CDF671-0000-0000-0000-000000000000})
({683344D5-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
({39BD9497-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).5 = ({E88EF749-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).6 = ({8BB20F0A-0000-0000-0000-000000000000})
({DA9A7391-0000-0000-0000-000000000000}).10 = ({8E81D43C-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).3 = ({683344D5-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).4 = ({1938EB12-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).7 = ({E88EF749-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).8 = ({79CED992-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).10 = ({196916AF-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).11 = ({632E1BFD-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).12 = ({8BB20F0A-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).13 = ({2270B8FE-0000-0000-0000-000000000000})
({438A9556-0000-0000-0000-000000000000}).16 = ({8E81D43C-0000-0000-0000-000000000000})
({1938EB12-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
({8ACA2445-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
({8ACA2445-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
({E88EF749-0000-0000-0000-000000000000}).0 = ({8ACA2445-0000-0000-0000-000000000000})
({546099CD-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
({546099CD-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
({B55C0B5D-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
({B55C0B5D-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
({B55C0B5D-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
({79CED992-0000-0000-0000-000000000000}).1 = ({683344D5-0000-0000-0000-000000000000})
({79CED992-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
({79CED992-0000-0000-0000-000000000000}).3 = ({DA9A7391-0000-0000-0000-000000000000})
({79CED992-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
({4F874463-0000-0000-0000-000000000000}).1 = ({8BE16150-0000-0000-0000-000000000000})
({8BE16150-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
({8BE16150-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
({988F0AC4-0000-0000-0000-000000000000}).1 = ({8BE16150-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).3 = ({683344D5-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).4 = ({1938EB12-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).7 = ({E88EF749-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).8 = ({8BE16150-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).10 = ({2270B8FE-0000-0000-0000-000000000000})
({196916AF-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).3 = ({1938EB12-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).6 = ({E88EF749-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).8 = ({196916AF-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).10 = ({2270B8FE-0000-0000-0000-000000000000})
({632E1BFD-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
({8BB20F0A-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
({8BB20F0A-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
({8BB20F0A-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
({EE9E5D96-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
({EE9E5D96-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
({E1B79ECF-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
({E1B79ECF-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
({6B20B603-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
({6B20B603-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).1 = ({683344D5-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).2 = ({1938EB12-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).5 = ({546099CD-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).6 = ({79CED992-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).7 = ({196916AF-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).8 = ({632E1BFD-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
({24B12448-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU

View File

@ -145,6 +145,9 @@
<Compile Include="Scenes\Entity.cs"> <Compile Include="Scenes\Entity.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Scenes\IScenePresenceBody.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Scenes\Primitive.cs"> <Compile Include="Scenes\Primitive.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
@ -166,10 +169,10 @@
<Compile Include="Scenes\ScenePresence.Animations.cs"> <Compile Include="Scenes\ScenePresence.Animations.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Scenes\ScenePresence.cs"> <Compile Include="Scenes\ScenePresence.Body.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Scenes\ScenePresence.Update.cs"> <Compile Include="Scenes\ScenePresence.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Scenes\scripting\IScriptContext.cs"> <Compile Include="Scenes\scripting\IScriptContext.cs">

View File

@ -14,6 +14,7 @@
<include name="EstateManager.cs" /> <include name="EstateManager.cs" />
<include name="ParcelManager.cs" /> <include name="ParcelManager.cs" />
<include name="Scenes/Entity.cs" /> <include name="Scenes/Entity.cs" />
<include name="Scenes/IScenePresenceBody.cs" />
<include name="Scenes/Primitive.cs" /> <include name="Scenes/Primitive.cs" />
<include name="Scenes/Scene.cs" /> <include name="Scenes/Scene.cs" />
<include name="Scenes/Scene.PacketHandlers.cs" /> <include name="Scenes/Scene.PacketHandlers.cs" />
@ -21,8 +22,8 @@
<include name="Scenes/SceneBase.cs" /> <include name="Scenes/SceneBase.cs" />
<include name="Scenes/SceneObject.cs" /> <include name="Scenes/SceneObject.cs" />
<include name="Scenes/ScenePresence.Animations.cs" /> <include name="Scenes/ScenePresence.Animations.cs" />
<include name="Scenes/ScenePresence.Body.cs" />
<include name="Scenes/ScenePresence.cs" /> <include name="Scenes/ScenePresence.cs" />
<include name="Scenes/ScenePresence.Update.cs" />
<include name="Scenes/scripting/IScriptContext.cs" /> <include name="Scenes/scripting/IScriptContext.cs" />
<include name="Scenes/scripting/IScriptEntity.cs" /> <include name="Scenes/scripting/IScriptEntity.cs" />
<include name="Scenes/scripting/IScriptHandler.cs" /> <include name="Scenes/scripting/IScriptHandler.cs" />

View File

@ -156,11 +156,11 @@ namespace OpenSim.Region.Scenes
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public virtual void addForces() public virtual void updateMovement()
{ {
foreach (Entity child in children) foreach (Entity child in children)
{ {
child.addForces(); child.updateMovement();
} }
} }

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Text;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.Physics.Manager;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
namespace OpenSim.Region.Scenes
{
public interface IScenePresenceBody
{
void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
void SendOurAppearance(IClientAPI OurClient);
void SendAppearanceToOtherAgent(ScenePresence avatarInfo);
}
}

View File

@ -175,7 +175,7 @@ namespace OpenSim.Region.Scenes
foreach (libsecondlife.LLUUID UUID in Entities.Keys) foreach (libsecondlife.LLUUID UUID in Entities.Keys)
{ {
Entities[UUID].addForces(); Entities[UUID].updateMovement();
} }
lock (this.m_syncRoot) lock (this.m_syncRoot)
@ -731,7 +731,7 @@ namespace OpenSim.Region.Scenes
{ {
if (this.Avatars.ContainsKey(agentID)) if (this.Avatars.ContainsKey(agentID))
{ {
this.Avatars[agentID].UpGradeAvatar(position); this.Avatars[agentID].MakeAvatar(position);
} }
} }
} }

View File

@ -0,0 +1,90 @@
/*
* Copyright (c) Contributors, http://www.openmetaverse.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.Physics.Manager;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
namespace OpenSim.Region.Scenes
{
partial class ScenePresence
{
public class Avatar : IScenePresenceBody
{
public Avatar()
{
}
public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
{
}
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{
}
public void SendOurAppearance(IClientAPI OurClient)
{
}
public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
{
}
}
public class ChildAgent : IScenePresenceBody //is a ghost
{
public ChildAgent()
{
}
public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
{
}
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{
}
public void SendOurAppearance(IClientAPI OurClient)
{
}
public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
{
}
}
}
}

View File

@ -1,212 +0,0 @@
/*
* Copyright (c) Contributors, http://www.openmetaverse.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.Physics.Manager;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
namespace OpenSim.Region.Scenes
{
partial class ScenePresence
{
/// <summary>
///
/// </summary>
public override void update()
{
if (this.childAvatar == false)
{
if (this.newForce)
{
this.SendTerseUpdateToALLClients();
_updateCount = 0;
}
else if (movementflag != 0)
{
_updateCount++;
if (_updateCount > 3)
{
this.SendTerseUpdateToALLClients();
_updateCount = 0;
}
}
this.CheckForBorderCrossing();
}
}
/// <summary>
///
/// </summary>
/// <param name="remoteAvatar"></param>
public void SendUpdateToOtherClient(ScenePresence remoteAvatar)
{
}
/// <summary>
///
/// </summary>
public void SendInitialPosition()
{
this.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos);
if (this.newAvatar)
{
this.m_world.InformClientOfNeighbours(this.ControllingClient);
this.newAvatar = false;
}
}
/// <summary>
///
/// </summary>
/// <param name="OurClient"></param>
public void SendOurAppearance(IClientAPI OurClient)
{
this.ControllingClient.SendWearables(this.Wearables);
}
/// <summary>
///
/// </summary>
/// <param name="avatarInfo"></param>
public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
{
}
/// <summary>
///
/// </summary>
/// <param name="texture"></param>
/// <param name="visualParam"></param>
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{
}
/// <summary>
///
/// </summary>
public void StopMovement()
{
}
/// <summary>
///
/// </summary>
/// <param name="animID"></param>
/// <param name="seq"></param>
public void SendAnimPack(LLUUID animID, int seq)
{
}
/// <summary>
///
/// </summary>
public void SendAnimPack()
{
}
/// <summary>
///
/// </summary>
protected void CheckForBorderCrossing()
{
LLVector3 pos2 = this.Pos;
LLVector3 vel = this.Velocity;
float timeStep = 0.2f;
pos2.X = pos2.X + (vel.X * timeStep);
pos2.Y = pos2.Y + (vel.Y * timeStep);
pos2.Z = pos2.Z + (vel.Z * timeStep);
if ((pos2.X < 0) || (pos2.X > 256))
{
this.CrossToNewRegion();
}
if ((pos2.Y < 0) || (pos2.Y > 256))
{
this.CrossToNewRegion();
}
}
/// <summary>
///
/// </summary>
protected void CrossToNewRegion()
{
LLVector3 pos = this.Pos;
LLVector3 newpos = new LLVector3(pos.X, pos.Y, pos.Z);
uint neighbourx = this.m_regionInfo.RegionLocX;
uint neighboury = this.m_regionInfo.RegionLocY;
if (pos.X < 2)
{
neighbourx -= 1;
newpos.X = 254;
}
if (pos.X > 253)
{
neighbourx += 1;
newpos.X = 1;
}
if (pos.Y < 2)
{
neighboury -= 1;
newpos.Y = 254;
}
if (pos.Y > 253)
{
neighboury += 1;
newpos.Y = 1;
}
LLVector3 vel = this.velocity;
ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury* 256));
RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle);
if (neighbourRegion != null)
{
this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos);
this.DownGradeAvatar();
this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, System.Net.IPAddress.Parse(neighbourRegion.IPListenAddr), (ushort)neighbourRegion.IPListenPort);
}
}
}
}

View File

@ -48,7 +48,6 @@ namespace OpenSim.Region.Scenes
public IClientAPI ControllingClient; public IClientAPI ControllingClient;
public LLUUID current_anim; public LLUUID current_anim;
public int anim_seq; public int anim_seq;
private static libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock AvatarTemplate;
private bool updateflag = false; private bool updateflag = false;
private byte movementflag = 0; private byte movementflag = 0;
private List<NewForce> forcesList = new List<NewForce>(); private List<NewForce> forcesList = new List<NewForce>();
@ -59,11 +58,31 @@ namespace OpenSim.Region.Scenes
private AvatarWearable[] Wearables; private AvatarWearable[] Wearables;
private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); private LLVector3 positionLastFrame = new LLVector3(0, 0, 0);
private ulong m_regionHandle; private ulong m_regionHandle;
private bool childAvatar = false; private bool childAgent = false;
private bool newForce = false; private bool newForce = false;
private bool newAvatar = false; private bool newAvatar = false;
private IScenePresenceBody m_body;
protected RegionInfo m_regionInfo; protected RegionInfo m_regionInfo;
#region Properties
/// <summary>
///
/// </summary>
public PhysicsActor PhysActor
{
set
{
this._physActor = value;
}
get
{
return _physActor;
}
}
#endregion
#region Constructor(s)
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@ -99,38 +118,25 @@ namespace OpenSim.Region.Scenes
ControllingClient.OnRequestWearables += this.SendOurAppearance; ControllingClient.OnRequestWearables += this.SendOurAppearance;
//ControllingClient.OnSetAppearance += new SetAppearance(this.SetAppearance); //ControllingClient.OnSetAppearance += new SetAppearance(this.SetAppearance);
ControllingClient.OnCompleteMovementToRegion += this.CompleteMovement; ControllingClient.OnCompleteMovementToRegion += this.CompleteMovement;
ControllingClient.OnCompleteMovementToRegion += this.SendInitialPosition; ControllingClient.OnCompleteMovementToRegion += this.SendInitialData;
ControllingClient.OnAgentUpdate += this.HandleAgentUpdate; ControllingClient.OnAgentUpdate += this.HandleAgentUpdate;
// ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack);
// ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
//ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
} }
#endregion
#region Status Methods
/// <summary> /// <summary>
/// /// Not Used, most likely can be deleted
/// </summary>
public PhysicsActor PhysActor
{
set
{
this._physActor = value;
}
get
{
return _physActor;
}
}
/// <summary>
///
/// </summary> /// </summary>
/// <param name="status"></param> /// <param name="status"></param>
public void ChildStatusChange(bool status) public void ChildStatusChange(bool status)
{ {
this.childAvatar = status; this.childAgent = status;
if (this.childAvatar == true) if (this.childAgent == true)
{ {
this.Velocity = new LLVector3(0, 0, 0); this.Velocity = new LLVector3(0, 0, 0);
this.Pos = new LLVector3(128, 128, 70); this.Pos = new LLVector3(128, 128, 70);
@ -142,18 +148,19 @@ namespace OpenSim.Region.Scenes
/// ///
/// </summary> /// </summary>
/// <param name="pos"></param> /// <param name="pos"></param>
public void UpGradeAvatar(LLVector3 pos) public void MakeAvatar(LLVector3 pos)
{ {
//this.childAvatar = false; //this.childAvatar = false;
this.Pos = pos; this.Pos = pos;
this.newAvatar = true; this.newAvatar = true;
this.childAgent = false;
} }
protected void DownGradeAvatar() protected void MakeChildAgent()
{ {
this.Velocity = new LLVector3(0, 0, 0); this.Velocity = new LLVector3(0, 0, 0);
this.Pos = new LLVector3(128, 128, 70); this.Pos = new LLVector3(128, 128, 70);
this.childAvatar = true; this.childAgent = true;
} }
/// <summary> /// <summary>
@ -169,46 +176,21 @@ namespace OpenSim.Region.Scenes
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public override void addForces() public void StopMovement()
{ {
newForce = false;
lock (this.forcesList)
{
if (this.forcesList.Count > 0)
{
for (int i = 0; i < this.forcesList.Count; i++)
{
NewForce force = this.forcesList[i];
this.updateflag = true;
this.Velocity = new LLVector3(force.X, force.Y, force.Z);
this.newForce = true;
}
for (int i = 0; i < this.forcesList.Count; i++)
{
this.forcesList.RemoveAt(0);
}
}
}
}
public void SendTerseUpdateToClient(IClientAPI RemoteClient)
{
LLVector3 pos = this.Pos;
LLVector3 vel = this.Velocity;
RemoteClient.SendAvatarTerseUpdate(this.m_regionHandle, 64096, this.LocalId, new LLVector3(pos.X, pos.Y, pos.Z), new LLVector3(vel.X, vel.Y, vel.Z));
} }
#endregion
#region Event Handlers
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public void SendTerseUpdateToALLClients() /// <param name="texture"></param>
/// <param name="visualParam"></param>
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{ {
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
for (int i = 0; i < avatars.Count; i++)
{
this.SendTerseUpdateToClient(avatars[i].ControllingClient);
}
} }
/// <summary> /// <summary>
@ -222,9 +204,9 @@ namespace OpenSim.Region.Scenes
look = new LLVector3(0.99f, 0.042f, 0); look = new LLVector3(0.99f, 0.042f, 0);
} }
this.ControllingClient.MoveAgentIntoRegion(m_regionInfo, Pos, look); this.ControllingClient.MoveAgentIntoRegion(m_regionInfo, Pos, look);
if (this.childAvatar) if (this.childAgent)
{ {
this.childAvatar = false; this.childAgent = false;
} }
} }
@ -274,6 +256,196 @@ namespace OpenSim.Region.Scenes
} }
} }
#endregion
#region Overridden Methods
/// <summary>
///
/// </summary>
public override void LandRenegerated()
{
}
/// <summary>
///
/// </summary>
public override void update()
{
if (this.childAgent == false)
{
if (this.newForce)
{
this.SendTerseUpdateToALLClients();
_updateCount = 0;
}
else if (movementflag != 0)
{
_updateCount++;
if (_updateCount > 3)
{
this.SendTerseUpdateToALLClients();
_updateCount = 0;
}
}
this.CheckForBorderCrossing();
}
}
#endregion
#region Update Client(s)
/// <summary>
///
/// </summary>
/// <param name="RemoteClient"></param>
public void SendTerseUpdateToClient(IClientAPI RemoteClient)
{
LLVector3 pos = this.Pos;
LLVector3 vel = this.Velocity;
RemoteClient.SendAvatarTerseUpdate(this.m_regionHandle, 64096, this.LocalId, new LLVector3(pos.X, pos.Y, pos.Z), new LLVector3(vel.X, vel.Y, vel.Z));
}
/// <summary>
///
/// </summary>
public void SendTerseUpdateToALLClients()
{
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
for (int i = 0; i < avatars.Count; i++)
{
this.SendTerseUpdateToClient(avatars[i].ControllingClient);
}
}
/// <summary>
///
/// </summary>
/// <param name="remoteAvatar"></param>
public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar)
{
remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos);
}
/// <summary>
///
/// </summary>
public void SendInitialData()
{
this.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos);
if (this.newAvatar)
{
this.m_world.InformClientOfNeighbours(this.ControllingClient);
this.newAvatar = false;
}
}
/// <summary>
///
/// </summary>
/// <param name="OurClient"></param>
public void SendOurAppearance(IClientAPI OurClient)
{
this.ControllingClient.SendWearables(this.Wearables);
}
/// <summary>
///
/// </summary>
/// <param name="avatarInfo"></param>
public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
{
}
/// <summary>
///
/// </summary>
/// <param name="animID"></param>
/// <param name="seq"></param>
public void SendAnimPack(LLUUID animID, int seq)
{
}
/// <summary>
///
/// </summary>
public void SendAnimPack()
{
}
#endregion
#region Border Crossing Methods
/// <summary>
///
/// </summary>
protected void CheckForBorderCrossing()
{
LLVector3 pos2 = this.Pos;
LLVector3 vel = this.Velocity;
float timeStep = 0.2f;
pos2.X = pos2.X + (vel.X * timeStep);
pos2.Y = pos2.Y + (vel.Y * timeStep);
pos2.Z = pos2.Z + (vel.Z * timeStep);
if ((pos2.X < 0) || (pos2.X > 256))
{
this.CrossToNewRegion();
}
if ((pos2.Y < 0) || (pos2.Y > 256))
{
this.CrossToNewRegion();
}
}
/// <summary>
///
/// </summary>
protected void CrossToNewRegion()
{
LLVector3 pos = this.Pos;
LLVector3 newpos = new LLVector3(pos.X, pos.Y, pos.Z);
uint neighbourx = this.m_regionInfo.RegionLocX;
uint neighboury = this.m_regionInfo.RegionLocY;
if (pos.X < 2)
{
neighbourx -= 1;
newpos.X = 254;
}
if (pos.X > 253)
{
neighbourx += 1;
newpos.X = 1;
}
if (pos.Y < 2)
{
neighboury -= 1;
newpos.Y = 254;
}
if (pos.Y > 253)
{
neighboury += 1;
newpos.Y = 1;
}
LLVector3 vel = this.velocity;
ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury * 256));
RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle);
if (neighbourRegion != null)
{
this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos);
this.MakeChildAgent();
this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, System.Net.IPAddress.Parse(neighbourRegion.IPListenAddr), (ushort)neighbourRegion.IPListenPort);
}
}
#endregion
/// <summary> /// <summary>
/// ///
@ -286,11 +458,28 @@ namespace OpenSim.Region.Scenes
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public override void LandRenegerated() public override void updateMovement()
{ {
newForce = false;
lock (this.forcesList)
{
if (this.forcesList.Count > 0)
{
for (int i = 0; i < this.forcesList.Count; i++)
{
NewForce force = this.forcesList[i];
this.updateflag = true;
this.Velocity = new LLVector3(force.X, force.Y, force.Z);
this.newForce = true;
}
for (int i = 0; i < this.forcesList.Count; i++)
{
this.forcesList.RemoveAt(0);
}
}
}
} }
public class NewForce public class NewForce
{ {

View File

@ -174,8 +174,8 @@ namespace OpenSim
mov.AgentData.SessionID = this.SessionID; mov.AgentData.SessionID = this.SessionID;
mov.AgentData.AgentID = this.AgentID; mov.AgentData.AgentID = this.AgentID;
mov.Data.RegionHandle = regInfo.RegionHandle; mov.Data.RegionHandle = regInfo.RegionHandle;
// TODO - dynamicalise this stuff mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this
mov.Data.Timestamp = 1172750370;
if (pos == null) if (pos == null)
{ {
mov.Data.Position = this.startpos; mov.Data.Position = this.startpos;