mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 19:03:43 +00:00
The client keeps the scene under the player loaded, the scenes the zone file's transitions connect to it, and the global scene (Zone::StreamScenesAroundPosition 0x0108a3f0, TerrainManager::GetSceneAtPos 0x01069010, the connected scenes at 0x01066500; transitions naming a missing scene dropped as Zone::FixupInvalidTransitions 0x010842e0 does). - ZoneScenes (dCommon): the terrain's scene map lookup and the scene graph, shared by the world server and the dashboard. - Objects remember the scene they were placed in (spawners pass theirs on). - ghosting_scenes=1 (world config, off by default): players get the objects of their loaded scenes instead of the ones within the ghosting distances; objects from no scene go by the scene under them. Zones without a scene map keep distance ghosting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
773 B
C++
43 lines
773 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include "dCommonVars.h"
|
|
#include "NiPoint3.h"
|
|
#include "NiQuaternion.h"
|
|
#include "LDFFormat.h"
|
|
|
|
class Spawner;
|
|
|
|
struct EntityInfo {
|
|
EntityInfo() {
|
|
spawner = nullptr;
|
|
spawnerID = 0;
|
|
hasSpawnerNodeID = false;
|
|
spawnerNodeID = 0;
|
|
id = 0;
|
|
lot = LOT_NULL;
|
|
pos = { 0,0,0 };
|
|
rot = { 0,0,0,0 };
|
|
settings = {};
|
|
networkSettings = {};
|
|
scale = 1.0f;
|
|
}
|
|
|
|
Spawner* spawner;
|
|
LWOOBJID spawnerID;
|
|
|
|
bool hasSpawnerNodeID;
|
|
uint32_t spawnerNodeID;
|
|
|
|
LWOOBJID id;
|
|
LOT lot;
|
|
NiPoint3 pos;
|
|
NiQuaternion rot = QuatUtils::IDENTITY;
|
|
LwoNameValue settings;
|
|
LwoNameValue networkSettings;
|
|
float scale;
|
|
// The zone scene (its scene id) the object was placed in, for scene ghosting; -1: none (spawned at run time)
|
|
int32_t scene = -1;
|
|
};
|