private IActorRef CreateActor(WorldActorState state, CreatePlayerEntityActorMessage message) { //Create the actor and tell it to initialize. IActorRef actorRef = state.WorldActorFactory.ActorOf(Resolver.Create <DefaultPlayerEntityActor>(), message.EntityGuid.RawGuidValue.ToString()); DefaultPlayerEntityActor.InitializeActor(actorRef, new DefaultPlayerEntityActorState(EntityDataMappable.RetrieveEntity(message.EntityGuid), message.EntityGuid, InterestMappable.RetrieveEntity(message.EntityGuid), SendServiceMappable.RetrieveEntity(message.EntityGuid))); //Actors aren't removed from this //they are just replaced with nobody. if (ActorRefMappable.ContainsKey(message.EntityGuid)) { //If nobody, all good. Otherwise THIS SHOULD NEVER HAPPEN if (ActorRefMappable[message.EntityGuid].IsNobody()) { ActorRefMappable.ReplaceObject(message.EntityGuid, actorRef); } else { throw new InvalidOperationException($"World attempted to spawn multiple of the same player actor/"); //this will literally kill the world actor. } } else { ActorRefMappable.AddObject(message.EntityGuid, actorRef); } if (Logger.IsInfoEnabled) { Logger.Info($"Created Player Actor: {typeof(DefaultPlayerEntityActor)} for Entity: {message.EntityGuid}"); } return(actorRef); }
private void CreateActor(WorldActorState state, CreateGameObjectEntityActorMessage message) { //Even visual objects now get actors EntityActorCreationResult actorCreationData = EntityActorFactory.Create(message.EntityGuid); //Create the actor and tell it to initialize. IActorRef actorRef = state.WorldActorFactory.ActorOf(Resolver.Create(actorCreationData.DesiredActorType), message.EntityGuid.RawGuidValue.ToString()); actorRef.Tell(actorCreationData.InitializationMessage); ActorRefMappable.AddObject(message.EntityGuid, actorRef); if (Logger.IsInfoEnabled) { Logger.Info($"Created GameObject Actor: {actorCreationData.DesiredActorType} for Entity: {message.EntityGuid}"); } }
private void CreateActor(WorldActorState state, CreateCreatureEntityActorMessage message) { //Create the actor and tell it to initialize. IActorRef actorRef = state.WorldActorFactory.ActorOf(Resolver.Create <DefaultCreatureEntityActor>(), message.EntityGuid.RawGuidValue.ToString()); //TODO: Move to factory. CreatureInstanceModel instanceModel = CreatureInstanceMappable.RetrieveEntity(message.EntityGuid); CreatureTemplateModel templateModel = CreatureTemplateMappable.RetrieveEntity(message.EntityGuid); DefaultCreatureEntityActor.InitializeActor(actorRef, new DefaultCreatureActorState(EntityDataMappable.RetrieveEntity(message.EntityGuid), message.EntityGuid, instanceModel, templateModel, InterestMappable.RetrieveEntity(message.EntityGuid))); ActorRefMappable.AddObject(message.EntityGuid, actorRef); if (Logger.IsInfoEnabled) { Logger.Info($"Created Creature Actor: {typeof(DefaultCreatureEntityActor)} for Entity: {message.EntityGuid}"); } }