protected override void PostInitializeComponent() { m_target_gathering_param = new TargetGatheringParam(); m_target_gathering_param.m_type = TargetGatheringType.SurroundingRing; m_target_gathering_param.m_param1 = m_guard_range; m_target_gathering_param.m_faction = FactionRelation.Enemy; m_targeting_component = ParentObject.GetComponent(TargetingComponent.ID) as TargetingComponent; if (m_targeting_component == null) { return; } m_listener_context = SignalListenerContext.CreateForEntityComponent(GetLogicWorld().GenerateSignalListenerID(), ParentObject.ID, m_component_type_id); Schedule(); }
protected override void OnDestruct() { m_targeting_component = null; SignalListenerContext.Recycle(m_listener_context); m_listener_context = null; if (m_task != null) { m_task.Cancel(); LogicTask.Recycle(m_task); m_task = null; } ClearTargets(); m_current_enemy = null; }
bool HandleEntityMove(EntityMoveCommand cmd) { Entity entity = m_logic_world.GetEntityManager().GetObject(cmd.m_entity_id); if (entity == null) { return(false); } LocomotorComponent locomotor_component = entity.GetComponent(LocomotorComponent.ID) as LocomotorComponent; if (locomotor_component == null) { return(false); } if (cmd.m_move_type != EntityMoveCommand.StopMoving) { TargetingComponent targeting_component = entity.GetComponent(TargetingComponent.ID) as TargetingComponent; if (targeting_component != null) { targeting_component.StopTargeting(); } } if (cmd.m_move_type == EntityMoveCommand.DestinationType) { PathFindingComponent pathfinding_component = entity.GetComponent(PathFindingComponent.ID) as PathFindingComponent; if (pathfinding_component != null) { return(pathfinding_component.FindPath(cmd.m_vector)); } else { PositionComponent position_component = entity.GetComponent(PositionComponent.ID) as PositionComponent; List <Vector3FP> path = new List <Vector3FP>(); path.Add(position_component.CurrentPosition); path.Add(cmd.m_vector); locomotor_component.MoveAlongPath(path, true); } } else if (cmd.m_move_type == EntityMoveCommand.DirectionType) { locomotor_component.MoveByDirection(cmd.m_vector); } else if (cmd.m_move_type == EntityMoveCommand.StopMoving) { locomotor_component.StopMoving(true); } return(true); }
bool HandleEntityTarget(EntityTargetCommand cmd) { Entity entity = m_logic_world.GetEntityManager().GetObject(cmd.m_entity_id); if (entity == null) { return(false); } Entity target = m_logic_world.GetEntityManager().GetObject(cmd.m_target_entity_id); if (target == null) { return(false); } TargetingComponent targeting_component = entity.GetComponent(TargetingComponent.ID) as TargetingComponent; if (targeting_component == null) { return(false); } targeting_component.StartTargeting(target); return(true); }
bool GatherEntitySpecial(Entity source_entity, TargetGatheringParam param, List <Entity> targets) { int gathering_type = param.m_type; if (gathering_type == TargetGatheringType.Default) { TargetingComponent targeting_component = source_entity.GetComponent(TargetingComponent.ID) as TargetingComponent; if (targeting_component != null) { Entity entity = targeting_component.GetCurrentTarget(); if (entity != null) { targets.Add(entity); } } return(true); } else if (gathering_type == TargetGatheringType.Source) { targets.Add(source_entity); return(true); } return(false); }