From 0a42b8077283e0ee5822d9d8214e77f05f383ee5 Mon Sep 17 00:00:00 2001 From: AlessandroCH Date: Wed, 28 May 2025 17:45:23 +0200 Subject: [PATCH] scene manager "test" --- Campofinale/Game/SceneManager.cs | 66 +++++++++++-------- Campofinale/Packets/Cs/HandleCsLogin.cs | 5 +- .../Cs/HandleCsSceneSetLevelScriptActive.cs | 6 +- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/Campofinale/Game/SceneManager.cs b/Campofinale/Game/SceneManager.cs index d66768f..d1148f2 100644 --- a/Campofinale/Game/SceneManager.cs +++ b/Campofinale/Game/SceneManager.cs @@ -279,6 +279,7 @@ namespace Campofinale.Game { return entities.FindAll(c => c is not EntityCharacter); } + public void Unload() { List guids = new(); @@ -375,6 +376,7 @@ namespace Campofinale.Game // e.spawned = true; // GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { e })); }); + UpdateShowEntities(); @@ -393,38 +395,50 @@ namespace Campofinale.Game SpawnEntity(e); } - GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { en})); + GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { en })); } public void UpdateShowEntities() { - - foreach(Entity en in GetEntityExcludingChar()) + List 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() { 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() { en.guid })); + en.Position=en.BornPos; + en.Rotation = en.Rotation; + } + } + }*/ } public Player GetOwner() diff --git a/Campofinale/Packets/Cs/HandleCsLogin.cs b/Campofinale/Packets/Cs/HandleCsLogin.cs index 6d19e02..d21c0f2 100644 --- a/Campofinale/Packets/Cs/HandleCsLogin.cs +++ b/Campofinale/Packets/Cs/HandleCsLogin.cs @@ -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)); diff --git a/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs b/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs index 8c90662..ce2ff2e 100644 --- a/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs +++ b/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs @@ -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); - + }