public TeleportAroundTargetLogic(AroundTargetMode info, Character caster, Environment environment, Skill skill) { this.info = info; this.caster = caster; this.environment = environment; this.skill = skill; Entity entity = caster.GameObject().GetComponent <EntityReference>().Entity; movementComponent = entity.GetComponent <MovementComponent>(); StatsComponent statsComponent = entity.GetComponent <StatsComponent>(); invisibleStats = statsComponent.CharacterStats.FindStats(StatsType.Invisible); gameObjectComponent = (GameObjectComponent)entity.GetComponent <EntityGameObjectComponent>(); FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; delay = fasc.FramesToSeconds(info.delay); prepareDelay = fasc.FramesToSeconds(info.prepareDelay); prepareEndDelay = delay + info.duration - fasc.FramesToSeconds(info.endPreceding); if (delay == 0) { skill.TriggerEventWithId(info.prepareEventId); Perform(); isPrepareEventDispatched = true; prepareDispatchCount++; } if (prepareDelay == 0 && prepareDispatchCount < info.count) { skill.TriggerEventWithId(info.prepareEventId); isPrepareEventDispatched = true; prepareDispatchCount++; } }
public SpawnCharacter(SpawnCharacterAction config, EntitySpawner entitySpawner, Character caster, TemplateArgs args, Environment environment, SkillId skillId, HeroAndMonsterConfig hamc) { this.config = config; this.entitySpawner = entitySpawner; this.caster = caster; this.args = args; this.environment = environment; this.skillId = skillId; this.hamc = hamc; entityGroupOfCaster = caster.GameObject().GetComponent <EntityReference>().Entity.Group; FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; spawnDelay = fasc.FramesToSeconds(config.delay); vfxDelay = fasc.FramesToSeconds(config.vfxDelay); defaultEntityGroupOfMinion = hamc.FindBasicStats(new CharacterId(config.groupId, config.subId)).team; if (config.spawnCount > 0) { Vector3 spawnPosition = CalculateSpawnPosition(); spawnPositions.Add(spawnPosition); if (spawnDelay <= 0) { Spawn(spawnPosition); } if (vfxDelay <= 0) { PlayVfx(spawnPosition); } } }
public IkModifier(ModifierInfo mi, Entity casterEntity, Entity targetEntity, Environment environment, CollectionOfInteractions modifierInteractionCollection) : base(mi, casterEntity, targetEntity, environment, modifierInteractionCollection) { this.environment = environment; this.info = (IkInfo)mi; mapCollider = environment.MapColliders(); caster = casterEntity.GetComponent <SkillComponent>().Character; FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; aimAt = 0; aimDuration = fasc.FramesToSeconds(info.Config.aimDuration); aimLogicDuration = fasc.FramesToSeconds(info.Config.aimLogicDuration); aimInterpolationDuration = fasc.FramesToSeconds(info.Config.aimInterpolationDuration); startupAt = aimAt + aimDuration; startupDuration = fasc.FramesToSeconds(info.Config.startupDuration); activeAt = startupAt + startupDuration; activeDuration = fasc.FramesToSeconds(info.Config.activeDuration); recoveryAt = activeAt + activeDuration; recoveryDuration = fasc.FramesToSeconds(info.Config.recoveryDuration); totalDuration = recoveryAt + recoveryDuration; target = environment.FindNearbyCharacters( caster, Vector3.zero, 999, new[] { FindingFilter.ExcludeMe, FindingFilter.ExcludeDead, FindingFilter.ExcludeAllies } )[0]; fabrik = caster.GameObject().GetComponent <FABRIK>(); IKSolverFABRIK solverFabrik = (IKSolverFABRIK)fabrik.GetIKSolver(); ikJoint = solverFabrik.bones[solverFabrik.bones.Length - 1].transform; ikJointParent = solverFabrik.bones[solverFabrik.bones.Length - 2].transform; }
public DashShadowVfxLogic(VfxAction.DashShadowVfx dsv, Environment environment, Character caster) { this.dsv = dsv; this.environment = environment; this.caster = caster; GameObject go = caster.GameObject(); DashShadow ds = go.GetComponent <DashShadow>(); List <DashShadow.Illusion> pool = null; if (ds) { pool = ds.pool; GameObject.Destroy(ds); } ds = go.AddComponent <DashShadow>(); if (pool != null) { ds.pool = pool; } dashShadow = ds; FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; ds.prefab = dsv.ShowShadowPrefab(); ds.MaxInstances = dsv.maxShadow; ds.Rate = dsv.spawnRate; ds.InstanceLiveTime = fasc.FramesToSeconds(dsv.shadowTtl); ds.ReservedTime = fasc.FramesToSeconds(dsv.reservedTime); ds.material = dsv.ShowShadowMaterial(); ds.AlphaName = dsv.alphaName; ds.AlphaOverLifeTime = dsv.alphaOverLifetime; ds.frameDatas = new DashShadow.IllusionFrameData[dsv.frameDatas.Count]; for (int i = 0; i < ds.frameDatas.Length; i++) { DashShadow.IllusionFrameData ifd = new DashShadow.IllusionFrameData(); ifd.animationClip = new AnimationClip(); VfxAction.ShadowFrameData sfd = dsv.frameDatas[i]; ifd.animationClip.name = sfd.anim; ifd.startFrame = sfd.start; ifd.endFrame = sfd.end; ds.frameDatas[i] = ifd; } ds.changeBodyMaterial = dsv.bodyMat; ds.bodyRendererName = dsv.bodyRendererName; ds.changeHeadMaterial = dsv.headMat; ds.headRendererName = dsv.headRendererName; ds.changeWeaponMaterial = dsv.weaponMat; ds.weaponRendererName = dsv.weaponRendererName; ds.Start_(null, go.GetComponentInChildren <Animation>()); ds.SetReady(true); }
public TeleportKeepDistanceLogic(KeepDistanceMode info, Skill skill, Environment environment, Character caster) { this.info = info; this.skill = skill; this.environment = environment; this.caster = caster; FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; lockTargetAt = fasc.FramesToSeconds(info.targetLockOffset); teleportAt = fasc.FramesToSeconds(info.teleportOffset); notifyAt = fasc.FramesToSeconds(info.notiOffset); }
private static ModifierInfo CreateLockFrameInfo(Params p) { LockFrameModifierConfig lfmc = (LockFrameModifierConfig)p.baseModifierConfig; FrameAndSecondsConverter _30fps = FrameAndSecondsConverter._30Fps; return(new LockFrameInfo( Target.Target, lfmc.successRate, p.delayToApply, _30fps.FramesToSeconds(lfmc.delayInFramesForCaster), _30fps.FramesToSeconds(lfmc.delayInFramesForTarget), _30fps.FloatFramesToSeconds(lfmc.durationInFramesForCaster), _30fps.FloatFramesToSeconds(lfmc.durationInFramesForTarget), lfmc.lockGlobally, _30fps.FramesToSeconds(lfmc.delayInFramesForGlobal), _30fps.FramesToSeconds(lfmc.durationInFramesForGlobal), p.baseModifierConfig.ListEnabledVfx(), p.baseModifierConfig.lifetimes )); }
protected override void OnDelayedAttachAsMain(Character target) { // DLog.Log("debug RecastModifier:OnDelayedAttachAsMain()"); FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; AcceptWindow recastWindow = new AcceptWindow( fasc.FloatFramesToSeconds(info.Rmc.@from), fasc.FloatFramesToSeconds(info.Rmc.to) ); recastLifetime.EnableChecking(); SetRecastWindow(recastWindow); SetMaxRecastCountWindow(info.Rmc.max); if (recastLifetime.IsEnd()) { target.RemoveModifier(this); } }
public ModifierInfo CreateFrom(Skill parentSkill, BaseModifierConfig baseModifierConfig, Environment environment, float projectileAge = 0) { FrameAndSecondsConverter _30fps = FrameAndSecondsConverter._30Fps; float delayToApply = _30fps.FramesToSeconds(baseModifierConfig.delayToApplyInFrames); ModifierType modifierType = baseModifierConfig.ShowModifierType(); if (!subFactories.ContainsKey(modifierType)) { throw new Exception("Missing logic to create modifier info of type " + modifierType); } Params p = new Params( baseModifierConfig, delayToApply, projectileAge, parentSkill ); return(subFactories[modifierType](p)); }
/*private float playIdleAnimationAt; * private bool isIdleAnimationPlayed;*/ public SleepModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity, Environment environment, CollectionOfInteractions modifierInteractionCollection, Skill parentSkill) : base(info, casterEntity, targetEntity, environment, modifierInteractionCollection) { this.info = (SleepInfo)info; this.casterEntity = casterEntity; this.targetEntity = targetEntity; this.parentSkill = parentSkill; FrameAndSecondsConverter fasc = FrameAndSecondsConverter._30Fps; playLoopAt = fasc.FramesToSeconds(this.info.Smc.loopFrame); crossfadeDuration = fasc.FramesToSeconds(this.info.Smc.xfadeDur); targetAnimationComponent = targetEntity.GetComponent <AnimationComponent>(); targetMovementComponent = targetEntity.GetComponent <MovementComponent>(); targetCharacter = targetEntity.GetComponent <SkillComponent>().Character; targetStatsComponent = targetEntity.GetComponent <StatsComponent>(); casterStatsComponent = casterEntity.GetComponent <StatsComponent>(); /*float duration = FrameAndSecondsConverter._30Fps.FramesToSeconds(this.info.Smc.duration); * playIdleAnimationAt = Mathf.Max(0, duration - crossfadeDuration);*/ }