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 }; }
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 }; }
/// <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); }
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 }; }
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))); }
/// <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(); }