Files
DarkflameServer/dGame/dEntity/EntityInfo.h
Aaron Kimbrell 83b87744c1 feat: scene ghosting, as the client streams a zone's scenes
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>
2026-09-28 22:31:17 -05:00

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;
};