mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Mob deleted clientside along with scene object?
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ public enum ItemMessage
|
||||
public enum MobMessage
|
||||
{
|
||||
CreateMob = 0,
|
||||
InterpolationPacket
|
||||
InterpolationPacket,
|
||||
DeleteMob
|
||||
}
|
||||
|
||||
public enum GameType
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user