public void Init(EntitySpawnData data, int rendererLayer) { Type = data.objecttype; Direction = ((NpcDirection)data.PosDir[2]).ToDirection(); GID = data.GID; AID = data.AID; Status.name = data.name; Status.jobId = data.job; Status.sex = data.sex; Status.hair = (short)data.head; Status.walkSpeed = data.speed; Status.hp = data.HP; Status.max_hp = data.MaxHP; Status.char_id = GID; Status.account_id = AID; EquipInfo = new EntityEquipInfo { Weapon = (short)data.Weapon, Shield = (short)data.Shield, HeadTop = (short)data.Accessory2, HeadBottom = (short)data.Accessory, HeadMid = (short)data.Accessory3, Robe = (short)data.Robe }; gameObject.transform.position = new Vector3(data.PosDir[0], Core.PathFinding.GetCellHeight(data.PosDir[0], data.PosDir[1]), data.PosDir[1]); SetupViewer(EquipInfo, rendererLayer); }
private Entity SpawnMOB(EntitySpawnData data) { var mob = new GameObject(data.name); mob.layer = LayerMask.NameToLayer("Monsters"); mob.transform.localScale = Vector3.one; var entity = mob.AddComponent <Entity>(); entity.Init(data, LayerMask.NameToLayer("Monsters")); entityCache.Add(data.AID, entity); entity.SetReady(true); return(entity); }
private Entity SpawnNPC(EntitySpawnData data) { var npc = new GameObject(data.name); npc.layer = LayerMask.NameToLayer("NPC"); npc.transform.localScale = Vector3.one; var entity = npc.AddComponent <Entity>(); entity.Init(data, LayerMask.NameToLayer("NPC")); entityCache.Add(data.AID, entity); entity.SetReady(true); return(entity); }
/// <inheritdoc /> public void AddEntity(AddEntityPipelineOp addEntityOp) { if (!IsEntityTracked(addEntityOp.EntityId)) { knownEntities.Add(addEntityOp.EntityId); var spawnData = new EntitySpawnData(); entitiesToSpawn.Add(addEntityOp.EntityId, spawnData); spawnData.StalledOps.Enqueue(addEntityOp); metrics.IncrementGauge(EntityCountGaugeName); } else { Debug.LogErrorFormat("Trying to add the entity '{0}' that already exists.", addEntityOp.EntityId); } }
private Entity SpawnPC(EntitySpawnData data) { var player = new GameObject(data.name); player.layer = LayerMask.NameToLayer("Characters"); player.transform.localScale = Vector3.one; var entity = player.AddComponent <Entity>(); entity.Init(data, LayerMask.NameToLayer("Characters")); entityCache.Add(data.AID, entity); entity.SetReady(true); return(entity); }
public Entity Spawn(EntitySpawnData data) { switch (data.objecttype) { case EntityType.PC: entityCache.TryGetValue(data.GID, out var pc); pc?.gameObject.SetActive(true); return(pc ?? SpawnPC(data)); case EntityType.NPC: entityCache.TryGetValue(data.AID, out var npc); npc?.gameObject.SetActive(true); return(npc ?? SpawnNPC(data)); case EntityType.MOB: entityCache.TryGetValue(data.AID, out var mob); mob?.gameObject.SetActive(true); return(mob ?? SpawnMOB(data)); default: return(null); } }
public void Read(MemoryStreamReader br, int size) { entityData = new EntitySpawnData(); entityData.objecttype = (EntityType)br.ReadByte(); entityData.AID = br.ReadUInt(); entityData.GID = br.ReadUInt(); entityData.speed = br.ReadShort(); entityData.bodyState = br.ReadShort(); entityData.healthState = br.ReadShort(); entityData.effectState = br.ReadInt(); entityData.job = br.ReadShort(); entityData.head = br.ReadUShort(); entityData.Weapon = br.ReadUInt(); entityData.Accessory = br.ReadUShort(); entityData.moveStartTime = br.ReadUInt(); entityData.Shield = br.ReadUInt(); /** * might represent emblem/guild_id1/guild_id0 * rA clif.cpp #1102 */ entityData.Accessory2 = br.ReadUShort(); entityData.Accessory3 = br.ReadUShort(); entityData.HairColor = br.ReadShort(); entityData.ClothesColor = br.ReadShort(); entityData.headDir = br.ReadShort(); entityData.Robe = br.ReadUShort(); entityData.GUID = br.ReadUInt(); entityData.GEmblemVer = br.ReadShort(); entityData.honor = br.ReadShort(); entityData.virtue = br.ReadInt(); entityData.isPKModeON = (byte)br.ReadByte(); entityData.sex = (byte)br.ReadByte(); entityData.PosDir = br.ReadPos2(); entityData.xSize = (byte)br.ReadByte(); entityData.ySize = (byte)br.ReadByte(); entityData.state = (byte)br.ReadByte(); entityData.clevel = br.ReadShort(); entityData.font = br.ReadShort(); entityData.MaxHP = br.ReadInt(); entityData.HP = br.ReadInt(); entityData.isBoss = (byte)br.ReadByte(); entityData.body = br.ReadUShort(); entityData.name = br.ReadBinaryString(24); }