Example #1
0
        /// <summary>
        /// gets the range information using the omen data
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public float Range(BattleCharacter spellCaster, out Vector3 center, Matrix44?forcedMatrix = null, float?forcedRange = null)
        {
            center = Vector3.Zero;
            try
            {
                var m4X4 = forcedMatrix ?? spellCaster.OmenMatrix;

                center = m4X4.Center();
                m4X4.Transform(One, out var edge);

                return(forcedRange ?? center.Distance2D(edge));
            }
            catch (Exception ex)
            {
                Logger.Warn(ex.ToString());
                return(spellCaster.SpellCastInfo.SpellData.EffectRange + spellCaster.CombatReach);
            }
        }
Example #2
0
        public static void Transform(this Matrix44 matrix, Vector3 from, out Vector3 transformed)
        {
            transformed = new Vector3();

            transformed.X = from.X * matrix.M00 +
                            from.Y * matrix.M10 +
                            from.Z * matrix.M20 +
                            matrix.M30;

            transformed.Y = from.X * matrix.M01 +
                            from.Y * matrix.M11 +
                            from.Z * matrix.M21 +
                            matrix.M31;

            transformed.Z = from.X * matrix.M02 +
                            from.Y * matrix.M12 +
                            from.Z * matrix.M22 +
                            matrix.M32;
        }