Esempio n. 1
0
        private static Vector3[] CreatePositions()
        {
            var left = new Vector3(-0.5f, -0.5f, 0f);
            var middle = new Vector3(0f, 0.5f, 0f);
            var right = new Vector3(0.5f, -0.5f, 0f);

            return new[] { left, middle, right };
        }
Esempio n. 2
0
        private static Vector3[] CreatePositions()
        {
            var bottomLeft = new Vector3(-0.5f, -0.5f, 0f);
            var topLeft = new Vector3(-0.5f, 0.5f, 0f);
            var bottomRight = new Vector3(0.5f, -0.5f, 0f);
            var topRight = new Vector3(0.5f, 0.5f, 0f);

            return new[] { bottomLeft, topLeft, bottomRight, topRight };
        }
Esempio n. 3
0
        /// <summary>
        /// Calculates the view matrix.
        /// </summary>
        /// <param name="position">The position.</param>
        /// <param name="direction">The direction.</param>
        /// <param name="up">The up direction.</param>
        /// <returns>The calculated view matrix.</returns>
        public static Matrix CalculateViewMatrix(Vector3 position, Vector3 direction, Vector3 up)
        {
            var n = -direction.Normalized();
            var u = up.Cross(n).Normalized();
            var v = n.Cross(u);
            var e = -position;

            return new Matrix(
                u.X, u.Y, u.Z, u.Dot(e),
                v.X, v.Y, v.Z, v.Dot(e),
                n.X, n.Y, n.Z, n.Dot(e),
                0, 0, 0, 1);
        }
Esempio n. 4
0
        private static Vector3[] CreatePositions()
        {
            var frontbottomLeft = new Vector3(-0.5f, -0.5f, 0.5f);
            var fronttopLeft = new Vector3(-0.5f, 0.5f, 0.5f);
            var frontbottomRight = new Vector3(0.5f, -0.5f, 0.5f);
            var fronttopRight = new Vector3(0.5f, 0.5f, 0.5f);

            var backbottomLeft = new Vector3(-0.5f, -0.5f, -0.5f);
            var backtopLeft = new Vector3(-0.5f, 0.5f, -0.5f);
            var backbottomRight = new Vector3(0.5f, -0.5f, -0.5f);
            var backtopRight = new Vector3(0.5f, 0.5f, -0.5f);

            return new[] { frontbottomLeft, fronttopLeft, frontbottomRight, fronttopRight, backbottomRight, backtopRight, backbottomLeft, backtopLeft };
        }
Esempio n. 5
0
        public Sphere(Device device, float radius = 1, int rings = 50, int columns = 50)
            : base(device)
        {
            var positionCount = (rings + 1) * (columns + 1);
            var positions = new Vector3[positionCount];
            var normals = new Vector3[positionCount];
            var colors = new Vector4[positionCount];
            var indices = new uint[2 * rings * (columns + 1)];

            var deltaRingAngle = Constants.PI / rings;
            var deltaColumnAngle = 2 * Constants.PI / columns;
            uint vertexIndex = 0;
            for (uint ring = 0; ring < rings + 1; ring++)
            {
                var r0 = Functions.Sin(ring * deltaRingAngle);
                var y0 = Functions.Cos(ring * deltaRingAngle);

                for (uint column = 0; column < columns + 1; column++)
                {
                    var normal = new Vector3(r0 * Functions.Sin(column * deltaColumnAngle), y0,
                        r0 * Functions.Cos(column * deltaColumnAngle));
                    //var uv = new Vector2(column / (float) columns, 1 - ring / (float) rings);

                    var index = ring * (columns + 1) + column;
                    positions[index] = normal * radius;
                    normals[index] = normal;
                    colors[index] = new Vector4(System.Math.Abs(normal.X), System.Math.Abs(normal.Y),
                        System.Math.Abs(normal.Z), 1);

                    if (ring < rings)
                    {
                        indices[vertexIndex * 2] = vertexIndex + (uint) columns + 1;
                        indices[vertexIndex * 2 + 1] = vertexIndex;
                        ++vertexIndex;
                    }
                }
            }

            CreateVertexStream(StreamUsage.Position, positions);
            CreateIndexStream(indices, PrimitiveTopology.TriangleStrip);
            CreateVertexStream(StreamUsage.Normal, normals);
            CreateVertexStream(StreamUsage.Color, colors);
            //CreateVertexStream(StreamUsage.Color, ArrayHelper.Create(positions.Count, new Vector4(0.5f, 0.5f, 1, 1)));
        }
Esempio n. 6
0
        /// <summary>
        ///     Returns a list of predicted minion positions.
        /// </summary>
        /// <param name="minions">
        ///     Given Minion List
        /// </param>
        /// <param name="delay">
        ///     Skill-shot Delay
        /// </param>
        /// <param name="width">
        ///     Skill-shot Width
        /// </param>
        /// <param name="speed">
        ///     Skill-shot Speed
        /// </param>
        /// <param name="from">
        ///     The From
        /// </param>
        /// <param name="range">
        ///     Skill-shot Range
        /// </param>
        /// <param name="collision">
        ///     Has Collision Flag
        /// </param>
        /// <param name="stype">
        ///     Skill-shot Type
        /// </param>
        /// <param name="rangeCheckFrom">
        ///     Range check from Vector3 source
        /// </param>
        /// <returns>
        ///     List of Points in <see cref="Vector2" /> type
        /// </returns>
        public static List<Vector2> GetMinionsPredictedPositions(
            List<Obj_AI_Base> minions, 
            float delay, 
            float width, 
            float speed, 
            Vector3 from, 
            float range, 
            bool collision, 
            SkillshotType stype, 
            Vector3 rangeCheckFrom = default(Vector3))
        {
            from = from.ToVector2().IsValid() ? from : ObjectManager.Player.ServerPosition;

            return (from minion in minions
                    select
                        Movement.GetPrediction(
                            new PredictionInput
                                {
                                    Unit = minion, Delay = delay, Radius = width, Speed = speed, From = @from, 
                                    Range = range, Collision = collision, Type = stype, RangeCheckFrom = rangeCheckFrom
                                })
                    into pos
                    where pos.Hitchance >= HitChance.High
                    select pos.UnitPosition.ToVector2()).ToList();
        }