static public void Fill_Component(LightingBuffer2D buffer, LightingTilemapCollider2D id, float lightSizeSquared, float z) { Vector2D vA, vB; foreach (Polygon2D polygon in id.edgeColliders) { Vector2D polyOffset = new Vector2D(-buffer.lightSource.transform.position); Polygon2D poly = polygon.Copy(); poly.ToOffsetItself(polyOffset); foreach (Pair2D p in Pair2D.GetList(poly.pointsList, false)) { vA = p.A.Copy(); vB = p.B.Copy(); vA.Push(Vector2D.Atan2(vA, zero), lightSizeSquared); vB.Push(Vector2D.Atan2(vB, zero), lightSizeSquared); Max2DMatrix.DrawTriangle(p.A, p.B, vA, zero, z); Max2DMatrix.DrawTriangle(vA, vB, p.B, zero, z); } LightingDebug.shadowGenerations++; } foreach (Polygon2D polygon in id.polygonColliders) { Vector2D polyOffset = new Vector2D(-buffer.lightSource.transform.position); Polygon2D poly = polygon.Copy(); poly.ToOffsetItself(polyOffset); foreach (Pair2D p in Pair2D.GetList(poly.pointsList)) { vA = p.A.Copy(); vB = p.B.Copy(); vA.Push(Vector2D.Atan2(vA, zero), lightSizeSquared); vB.Push(Vector2D.Atan2(vB, zero), lightSizeSquared); Max2DMatrix.DrawTriangle(p.A, p.B, vA, zero, z); Max2DMatrix.DrawTriangle(vA, vB, p.B, zero, z); } LightingDebug.shadowGenerations++; } }
public void Initialize() { Polygon2D.defaultCircleVerticesCount = circleVerticesCount; Polygon2D circlePolygon = Polygon2D.Create(Polygon2D.PolygonType.Hexagon, size); eraseBrushStart.SetBrush(circlePolygon.Copy()); }
public Polygon2D GetWorldShape() { if (shape_world == null) { shape_world = shape_local.Copy(); shape_world.ToOffsetItself(offset_local); } return(shape_world); }