public ChangeWeaponMaterialLogic(VfxAction.ChangeWeaponMaterialVfx config, float timeToLive, Character caster, Environment environment) { this.config = config; this.timeToLive = timeToLive; this.caster = caster; this.environment = environment; Entity entity = caster.GameObject().GetComponent <EntityReference>().Entity; CustomizeVisualComponent cvc = entity.GetComponent <CustomizeVisualComponent>(); EquipmentCollectData equipmentCollectData = cvc.EquipmentCollectData; if (equipmentCollectData == null) { material = environment.FindDefaultMaterialById( caster.CharacterId(), config.id ); } else { material = environment.FindMaterialById( caster.CharacterId(), equipmentCollectData.EquipmentConfigId.VisualId, config.id ); } if (material == null) { Interrupt(); return; } EntityGameObjectComponent egoc = entity .GetComponent <EntityGameObjectComponent>(); affectedRenderer = ((GameObjectComponent)egoc).WeaponRenderer; if (material != null) { originalMaterials = new SsarTuple <Material, Material[]>(affectedRenderer.material, affectedRenderer.materials); affectedRenderer.material = material; List <Material> materials = new List <Material>(); materials.Add(material); for (int kIndex = 0; kIndex < config.valueModifiers.Count; kIndex++) { VfxAction.MaterialValueModifier mvm = config.valueModifiers[kIndex]; valueModifiers.Add(new ValueModifier(mvm, materials)); } for (int kIndex = 0; kIndex < config.colorModifiers.Count; kIndex++) { VfxAction.MaterialColorModifier mcm = config.colorModifiers[kIndex]; colorModifiers.Add(new ColorModifier(mcm, materials)); } } }
public bool IsGateExisted(int gateId) { for (int kIndex = 0; kIndex < gateAndId.Count; kIndex++) { SsarTuple <int, GameObject> tuple = gateAndId[kIndex]; if (tuple.Element1 == gateId) { return(true); } } return(false); }
public SsarTuple <AnimMix, PlayMethod, float> FindAnimMixing(AnimMix mix) { for (int i = 0; i < animationMixingTable.Length; i++) { SsarTuple <AnimMix, PlayMethod, float> m = animationMixingTable[i]; if (m.Element1 == mix) { return(m); } } throw new Exception("Missing AnimationMixing for " + mix); }
public GameObject GetGateById(int gateId) { for (int kIndex = 0; kIndex < gateAndId.Count; kIndex++) { SsarTuple <int, GameObject> tuple = gateAndId[kIndex]; if (tuple.Element1 == gateId) { return(tuple.Element2); } } throw new Exception(string.Format( "Cannot find gate of id '{0}'", gateId )); }
public void SetCookies(IEnumerable <string> cookies) { notNullReference.Check(cookies, "cookies"); monsterId = new CharacterId(cookies.ElementAt(0)); monsterCount = Convert.ToInt32(cookies.ElementAt(1)); spawnInterval = Convert.ToSingle(cookies.ElementAt(2)); spawnCount = Convert.ToInt32(cookies.ElementAt(3)); spawnX = Convert.ToSingle(cookies.ElementAt(4)); spawnY = Convert.ToSingle(cookies.ElementAt(5)); spawnZ = Convert.ToSingle(cookies.ElementAt(6)); xAxisAmplitude = Convert.ToSingle(cookies.ElementAt(7)); xAxisDensity = Convert.ToInt32(cookies.ElementAt(8)); facingDirection = (Direction)Enum.Parse(typeof(Direction), cookies.ElementAt(9)); spawnSkillLevelPool = DungeonSpawnConfig.Spawn.ParseSkillLevelPool(cookies.ElementAt(10)); monsterLevel = Convert.ToInt32(cookies.ElementAt(11)); elapsedTimeSinceLastSpawn = spawnInterval; monsterCountSoFar = monsterCount * spawnCount; monsterIdAndSpawnCount = new SsarTuple <CharacterId, int>(monsterId, monsterCountSoFar); group = hamc.FindBasicStats(monsterId).team; }
protected override void OnUpdate(float dt) { justChanged = false; if (IsFinish()) { return; } if (attachType != ModifierAttachType.Main) { return; } elapsed += dt; stateElapsed += dt; if (state == State.Peaking) { if (stateElapsed >= knockdownInfo.TimeToPeak) { state = State.Floating; stateElapsed -= knockdownInfo.TimeToPeak; } } if (state == State.Floating) { if (stateElapsed >= knockdownInfo.FloatingDur) { state = State.Grounding; SsarTuple <AnimMix, PlayMethod, float> mix = knockdownInfo.FindAnimMixing(AnimMix.UpperToFallLoop); targetAnimation.PlayAnimation(AnimName().FallLoop, 1, mix.Element2, mix.Element3); stateElapsed -= knockdownInfo.FloatingDur; } } if (state == State.Grounding) { if (character.IsOnGround()) { justChanged = true; state = State.Lying; stateElapsed -= knockdownInfo.TimeToGround; SsarTuple <AnimMix, PlayMethod, float> mix = knockdownInfo.FindAnimMixing(AnimMix.FallLoopToLie); targetAnimation.PlayAnimation(AnimName().FallToLie, 1, mix.Element2, mix.Element3); character.QueueAnimation(AnimName().LieLoop); TriggerEvents(); } } if (state == State.Lying) { float extraLyingDuration = 0; if (extraLyingDurationStats != null) { extraLyingDuration += extraLyingDurationStats.BakedFloatValue; } if (stateElapsed >= knockdownInfo.LieDuration + extraLyingDuration) { justChanged = true; state = State.LieToIdle; stateElapsed -= (knockdownInfo.LieDuration + extraLyingDuration); if (target.GetComponent <HealthComponent>().IsAlive()) { character.PlayAnimation(AnimName().LieToIdle); } targetMovementComponent.MovingDirection = targetMovementComponent.FacingDirection.ToNormalizedVector2(); targetDefaultUserInput.SetRunDirection(targetMovementComponent.FacingDirection); } } if (state == State.LieToIdle) { if (stateElapsed >= knockdownInfo.LieToIdleDuration) { lifetime.End(); } } if (vfxLogic != null) { vfxLogic.Update(dt); } }