Mob deleted clientside along with scene object?

This commit is contained in:
spoogemonster
2011-05-14 02:19:48 +00:00
parent b582ca8d94
commit 674441a824
4 changed files with 52 additions and 3 deletions

View File

@@ -44,6 +44,9 @@ namespace SS3D.Modules.Mobs
case MobMessage.InterpolationPacket:
HandleInterpolationPacket(message);
break;
case MobMessage.DeleteMob:
HandleDeleteMob(message);
break;
default:
break;
}
@@ -242,6 +245,18 @@ namespace SS3D.Modules.Mobs
}
#endregion
#region Mob Deletion
private void HandleDeleteMob(NetIncomingMessage msg)
{
string mobName = msg.ReadString();
ushort mobID = msg.ReadUInt16();
if (!mobDict.Keys.Contains(mobID))
return;
mobDict.Remove(mobID);
}
#endregion
}

View File

@@ -9,11 +9,13 @@ namespace SS3D_shared
{
public class Player : Mob
{
public Player(SceneManager sceneManager, Mogre.Vector3 position, ushort ID)
private SceneManager sceneManager;
public Player(SceneManager sceneManager, Mogre.Vector3 position, ushort ID)
: base()
{
name = "Mob" + ID;
this.sceneManager = sceneManager;
string entityName = name;
if (sceneManager.HasEntity(entityName))
{
@@ -46,5 +48,17 @@ namespace SS3D_shared
serverInfo.rotY = 0;
}
public void Delete()
{
if (sceneManager.HasEntity(name))
{
sceneManager.DestroyEntity(name);
}
if (sceneManager.HasSceneNode(name))
{
sceneManager.DestroySceneNode(name);
}
}
}
}

View File

@@ -25,7 +25,8 @@ public enum ItemMessage
public enum MobMessage
{
CreateMob = 0,
InterpolationPacket
InterpolationPacket,
DeleteMob
}
public enum GameType

View File

@@ -109,6 +109,23 @@ namespace SS3d_server.Modules.Mobs
Console.WriteLine("mob sent with ID: " + mobID);
}
private void SendDeleteMob(ushort mobID)
{
if (!mobDict.Keys.Contains(mobID))
return;
NetOutgoingMessage message = netServer.netServer.CreateMessage();
message.Write((byte)NetMessage.MobMessage);
message.Write((byte)MobMessage.DeleteMob);
message.Write(mobDict[mobID].name);
message.Write(mobID);
netServer.SendMessageToAll(message);
}
private void SendmobUpdate(ushort mobID)
{
if (!mobDict.Keys.Contains(mobID))
@@ -163,6 +180,8 @@ namespace SS3d_server.Modules.Mobs
public void DeletePlayer(NetConnection netConnection)
{
ushort mobID = netServer.clientList[netConnection].mobID;
SendDeleteMob(mobID);
mobDict.Remove(mobID);
}
}