void Retarget() { TargetGatheringManager manager = GetLogicWorld().GetTargetGatheringManager(); manager.BuildTargetList(GetOwnerEntity(), m_target_gathering_param, m_targets); if (m_targets.Count == 0) { return; } Entity new_enemy = m_targets[0].GetEntity(GetLogicWorld()); ClearTargets(); if (new_enemy == m_current_enemy) { return; } if (m_current_enemy != null) { m_current_enemy.RemoveListener(SignalType.Die, m_listener_context.ID); m_current_enemy = null; } m_current_enemy = new_enemy; m_current_enemy.AddListener(SignalType.Die, m_listener_context); m_targeting_component.StartTargeting(m_current_enemy); }
public virtual void Initialize(IOutsideWorld outside_world, int world_seed, bool need_render_message) { #if ALLOW_UPDATE AddComponent <LogicWorldEveryFrameUpdater>(true); #endif m_outside_world = outside_world; m_random_generator_int = new RandomGeneratorI(world_seed); m_random_generator_fp = new RandomGeneratorFP(world_seed); m_need_render_message = need_render_message; if (m_need_render_message) { m_render_messages = new List <RenderMessage>(); } m_scheduler = new TaskScheduler <LogicWorld>(this); m_signal_listener_id_generator = new IDGenerator(IDGenerator.SIGNAL_LISTENER_FIRST_ID); m_attribute_modifier_id_generator = new IDGenerator(IDGenerator.ATTRIBUTE_MODIFIER_FIRST_ID); m_damage_modifier_id_generator = new IDGenerator(IDGenerator.DAMAGE_MODIFIER_FIRST_ID); m_behavior_tree_id_generator = new IDGenerator(IDGenerator.BEHAVIOR_TREE_FIRST_ID); m_player_manager = new PlayerManager(this); m_entity_manager = new EntityManager(this); m_skill_manager = new SkillManager(this); m_effect_manager = new EffectManager(this); m_faction_manager = new FactionManager(this); m_target_gathering_manager = new TargetGatheringManager(this); m_region_callback_manager = new RegionCallbackManager(this); m_command_handler = CreateCommandHandler(); PostInitialize(); }
public void BuildSkillTargets(TargetGatheringParam target_gathering_param) { ClearTargets(); TargetGatheringManager target_gathering_manager = GetLogicWorld().GetTargetGatheringManager(); target_gathering_manager.BuildTargetList(GetOwnerEntity(), target_gathering_param, m_skill_targets); }
public void BuildSkillTargets() { ClearTargets(); if (m_definition_component.m_target_gathering_param.m_type == TargetGatheringType.SpecifiedTarget) { if (m_definition_component.ExternalDataType == SkillDefinitionComponent.NeedExternalTarget) { int specified_target_id = m_definition_component.ExternalID; if (specified_target_id > 0) { Target target = RecyclableObject.Create <Target>(); target.Construct(); target.SetEntityTarget(specified_target_id); m_skill_targets.Add(target); } } else if (m_definition_component.ExternalDataType == SkillDefinitionComponent.NeedExternalOffset) { PositionComponent position_component = GetOwnerEntity().GetComponent(PositionComponent.ID) as PositionComponent; Target target = RecyclableObject.Create <Target>(); target.Construct(); target.SetPositionTarget(position_component.CurrentPosition + m_definition_component.ExternalVector); m_skill_targets.Add(target); } } else { TargetGatheringManager target_gathering_manager = GetLogicWorld().GetTargetGatheringManager(); target_gathering_manager.BuildTargetList(GetOwnerEntity(), m_definition_component.m_target_gathering_param, m_skill_targets); } }
public virtual void Destruct() { m_collapsing = true; m_scheduler.Destruct(); m_scheduler = null; m_random_generator_int.Destruct(); m_random_generator_int = null; m_random_generator_fp.Destruct(); m_random_generator_fp = null; m_signal_listener_id_generator.Destruct(); m_signal_listener_id_generator = null; m_attribute_modifier_id_generator.Destruct(); m_attribute_modifier_id_generator = null; m_damage_modifier_id_generator.Destruct(); m_damage_modifier_id_generator = null; m_behavior_tree_id_generator.Destruct(); m_behavior_tree_id_generator = null; m_entity_manager.Destruct(); m_entity_manager = null; m_player_manager.Destruct(); m_player_manager = null; m_skill_manager.Destruct(); m_skill_manager = null; m_effect_manager.Destruct(); m_effect_manager = null; m_faction_manager.Destruct(); m_faction_manager = null; m_target_gathering_manager.Destruct(); m_target_gathering_manager = null; m_region_callback_manager.Destruct(); m_region_callback_manager = null; m_command_handler.Destruct(); m_command_handler = null; m_active_behavior_trees.Clear(); DestroyAllGeneralComponent(); }
protected override void OnActionUpdate(FixPoint delta_time) { TargetGatheringManager target_gathering_manager = GetLogicWorld().GetTargetGatheringManager(); target_gathering_manager.BuildTargetList(GetOwnerEntity(), m_target_gathering_param, m_targets); int current_target_id = 0; if (m_targets.Count > 0) { current_target_id = m_targets[0].GetEntityID(); m_status = BTNodeStatus.True; } else { m_status = BTNodeStatus.False; } m_context.SetData(BTContextKey.CurrentTargetID, (FixPoint)current_target_id); ClearTargets(); }
public void OnUpdate() { if (!m_active) { return; } TargetGatheringManager target_gathering_manager = m_manager.GetLogicWorld().GetTargetGatheringManager(); if (target_gathering_manager == null) { return; } if (m_binding_object != null) { target_gathering_manager.BuildTargetList(m_binding_object, m_target_gathering_param, m_current_entered_entities); } else { target_gathering_manager.BuildTargetList(m_partition, null, m_fixed_position, m_fixed_facing, m_target_gathering_param, m_current_entered_entities); } for (int i = 0; i < m_previous_entered_entities.Count; ++i) { if (!m_current_entered_entities.Contains(m_previous_entered_entities[i])) { m_callback.OnEntityExit(m_previous_entered_entities[i]); } } for (int i = 0; i < m_current_entered_entities.Count; ++i) { if (!m_previous_entered_entities.Contains(m_current_entered_entities[i])) { m_callback.OnEntityEnter(m_current_entered_entities[i]); } } List <int> temp = m_previous_entered_entities; m_previous_entered_entities = m_current_entered_entities; m_current_entered_entities = temp; m_current_entered_entities.Clear(); }