private static void PlayEffect(string effectName, string spellId, string creatureId, float lifeTime, float enlargeTimeSeconds, float secondsDelayStart, float shrinkTime, SpellLocation location, float rotationDegrees, bool isMoveable) { if (secondsDelayStart > 0) { Log.Debug($"QueueEffect \"{effectName}\" for {secondsDelayStart} seconds..."); QueueEffect(new WaitingToCast(location, secondsDelayStart, effectName, spellId, creatureId, enlargeTimeSeconds, lifeTime, null, shrinkTime, rotationDegrees, isMoveable)); return; } CreatureBoardAsset creatureBoardAsset = Minis.GetCreatureBoardAsset(creatureId); if (creatureBoardAsset == null) { Log.Error($"CreatureBoardAsset matching id {creatureId} not found!"); return; } GameObject spell = GetSpell(effectName, spellId, lifeTime, enlargeTimeSeconds, shrinkTime, rotationDegrees, isMoveable); if (spell == null) { Log.Error($"Spell name \"{effectName}\" not found!"); return; } GameObject creatureBase = creatureBoardAsset.GetBase(); if (location == SpellLocation.CreatureCastSpell) { Log.Vector("creatureBoardAsset.HookSpellCast.position", creatureBoardAsset.HookSpellCast.position); spell.transform.position = creatureBoardAsset.HookSpellCast.position; } else // Default to base position... { spell.transform.position = creatureBase.transform.position; } float creatureRotationDegrees = creatureBoardAsset.GetRotationDegrees(); spell.transform.Rotate(Vector3.up, creatureRotationDegrees); //spell.transform.localEulerAngles = new Vector3(spell.transform.localEulerAngles.x, rotationDegrees, spell.transform.localEulerAngles.z); //Log.Vector("spell.transform.localEulerAngles", spell.transform.localEulerAngles); //spell.transform.Rotate(creatureBoardAsset.GetRotation()); //Log.Vector("spell.transform.localEulerAngles2", spell.transform.localEulerAngles); if (isMoveable) { Log.Warning($"EffectParameters.ApplyAfterPositioning(spell) on moveable effect {effectName}"); } EffectParameters.ApplyAfterPositioning(spell, isMoveable); }
public static void SetRotationLocked(CreatureBoardAsset creatureBoardAsset, bool locked) { //Log.Debug($"SetRotationLocked - locked: {locked}"); IOldPersistentEffect persistentEffect = creatureBoardAsset.GetPersistentEffect(); if (persistentEffect == null) { Log.Error($"persistentEffect == null"); return; } //Log.Debug($"SetRotationLocked - IsVisible: {creatureBoardAsset.IsVisible}"); SetSpinLockVisible(creatureBoardAsset, locked && creatureBoardAsset.IsVisible); persistentEffect.RotationIsLocked = locked; if (locked) { persistentEffect.LockedRotation = creatureBoardAsset.GetRotationDegrees(); } creatureBoardAsset.SavePersistentEffect(persistentEffect); }