scene manager "test"

This commit is contained in:
AlessandroCH
2025-05-28 17:45:23 +02:00
parent 7c0a512ad6
commit 0a42b80772
3 changed files with 48 additions and 29 deletions

View File

@@ -279,6 +279,7 @@ namespace Campofinale.Game
{
return entities.FindAll(c => c is not EntityCharacter);
}
public void Unload()
{
List<ulong> guids = new();
@@ -375,6 +376,7 @@ namespace Campofinale.Game
// e.spawned = true;
// GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { e }));
});
UpdateShowEntities();
@@ -393,38 +395,50 @@ namespace Campofinale.Game
SpawnEntity(e);
}
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { en}));
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { en }));
}
public void UpdateShowEntities()
{
foreach(Entity en in GetEntityExcludingChar())
List<Entity> toSpawn = new();
foreach(Entity e in GetEntityExcludingChar())
{
float minDis = 100;
if(e.spawned==false && (activeScripts.Contains(e.belongLevelScriptId) || e.belongLevelScriptId==0))
{
toSpawn.Add(e);
e.spawned= true;
}
//todo new system
if (en.Position.DistanceXZ(GetOwner().position) < minDis)
{
if (!en.spawned)
{
SpawnEntity(en);
}
}
else
{
/*if (en.spawned)
{
en.spawned = false;
GetOwner().Send(new PacketScObjectLeaveView(GetOwner(), new List<ulong>() { en.guid }));
en.Position=en.BornPos;
en.Rotation = en.Rotation;
}*/
}
}
if(toSpawn.Count > 0)
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), toSpawn));
/* foreach(Entity en in GetEntityExcludingChar())
{
float minDis = 100;
//todo new system
if (en.Position.DistanceXZ(GetOwner().position) < minDis)
{
if (!en.spawned)
{
SpawnEntity(en);
}
}
else
{
/*if (en.spawned)
{
en.spawned = false;
GetOwner().Send(new PacketScObjectLeaveView(GetOwner(), new List<ulong>() { en.guid }));
en.Position=en.BornPos;
en.Rotation = en.Rotation;
}
}
}*/
}
public Player GetOwner()

View File

@@ -127,7 +127,10 @@ namespace Campofinale.Packets.Cs
return;
}
session.Send(new PacketScSyncBaseData(session));
session.Send(ScMsgId.ScSceneClientIdInfo, new ScSceneClientIdInfo()
{
});
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.Weapon));
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.WeaponGem));
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.Equip));

View File

@@ -26,12 +26,14 @@ namespace Campofinale.Packets.Cs
State = 3
};
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
if (!session.sceneManager.GetCurScene().activeScripts.Contains(req.ScriptId))
{
session.sceneManager.GetCurScene().activeScripts.Add(req.ScriptId);
session.sceneManager.GetCurScene().UpdateShowEntities();
}
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
}