public override void Apply() { if (m_task == null) { m_task = LogicTask.Create <ComponentCommonTaskWithLastingTime>(); } EffectDefinitionComponent definition_component = ((Effect)ParentObject).GetDefinitionComponent(); Entity entity = GetLogicWorld().GetEntityManager().GetObject(definition_component.SourceEntityID); if (entity != null) { PositionComponent position_component = entity.GetComponent(PositionComponent.ID) as PositionComponent; if (position_component != null) { m_direction = position_component.Facing3D; } } m_task.Construct(this, m_time); var schedeler = GetLogicWorld().GetTaskScheduler(); schedeler.Schedule(m_task, GetCurrentTime(), LOGIC_UPDATE_INTERVAL, LOGIC_UPDATE_INTERVAL); #if COMBAT_CLIENT LocomoteRenderMessage msg = RenderMessage.Create <LocomoteRenderMessage>(); msg.ConstructAsStartMoving(GetOwnerEntityID(), true, LocomoteRenderMessage.NotLocomotion); GetLogicWorld().AddRenderMessage(msg); #endif }
public override void Inflict(FixPoint start_time) { Skill owner_skill = GetOwnerSkill(); SkillDefinitionComponent definition_component = owner_skill.GetDefinitionComponent(); m_actual_distance = m_distance; if (m_distance == FixPoint.Zero) { if (definition_component.ExternalDataType == SkillDefinitionComponent.NeedExternalOffset) { m_actual_distance = definition_component.ExternalVector.Length(); } } m_actual_time = m_time; if (definition_component.NormalAttack) { m_actual_time = m_time / owner_skill.GetSkillManagerComponent().AttackSpeedRate; } if (m_task == null) { m_task = LogicTask.Create <ComponentCommonTaskWithLastingTime>(); } m_task.Construct(this, m_actual_time); var schedeler = GetLogicWorld().GetTaskScheduler(); schedeler.Schedule(m_task, GetCurrentTime(), LOGIC_UPDATE_INTERVAL, LOGIC_UPDATE_INTERVAL); #if COMBAT_CLIENT LocomoteRenderMessage msg = RenderMessage.Create <LocomoteRenderMessage>(); msg.ConstructAsStartMoving(GetOwnerEntityID(), true, LocomoteRenderMessage.NotLocomotion); GetLogicWorld().AddRenderMessage(msg); #endif if (m_enable_hide) { GetLogicWorld().AddSimpleRenderMessage(RenderMessageType.Hide, GetOwnerEntityID()); } }