OLD | NEW |
| (Empty) |
1 part of sprites; | |
2 | |
3 /// The super class of any [Node] that has a size. | |
4 /// | |
5 /// NodeWithSize adds the ability for a node to have a size and a pivot point. | |
6 abstract class NodeWithSize extends Node { | |
7 | |
8 /// Changing the size will affect the size of the rendering of the node. | |
9 /// | |
10 /// myNode.size = new Size(1024.0, 1024.0); | |
11 Size size; | |
12 | |
13 /// The normalized point which the node is transformed around. | |
14 /// | |
15 /// // Position myNode from is middle top | |
16 /// myNode.pivot = new Point(0.5, 0.0); | |
17 Point pivot; | |
18 | |
19 /// Creates a new NodeWithSize. | |
20 /// | |
21 /// The default [size] is zero and the default [pivot] point is the origin. Su
bclasses may change the default values. | |
22 /// | |
23 /// var myNodeWithSize = new NodeWithSize(new Size(1024.0, 1024.0)); | |
24 NodeWithSize([Size this.size, Point this.pivot]) { | |
25 if (size == null) size = Size.zero; | |
26 if (pivot == null) pivot = Point.origin; | |
27 } | |
28 | |
29 /// Call this method in your [paint] method if you want the origin of your dra
wing to be the top left corner of the | |
30 /// node's bounding box. | |
31 /// | |
32 /// If you use this method you will need to save and restore your canvas at th
e beginning and | |
33 /// end of your [paint] method. | |
34 /// | |
35 /// void paint(RenderCanvas canvas) { | |
36 /// canvas.save(); | |
37 /// applyTransformForPivot(canvas); | |
38 /// | |
39 /// // Do painting here | |
40 /// | |
41 /// canvas.restore(); | |
42 /// } | |
43 void applyTransformForPivot(RenderCanvas canvas) { | |
44 if (pivot.x != 0 || pivot.y != 0) { | |
45 double pivotInPointsX = size.width * pivot.x; | |
46 double pivotInPointsY = size.height * pivot.y; | |
47 canvas.translate(-pivotInPointsX, -pivotInPointsY); | |
48 } | |
49 } | |
50 | |
51 bool isPointInside (Point nodePoint) { | |
52 | |
53 double minX = -size.width * pivot.x; | |
54 double minY = -size.height * pivot.y; | |
55 double maxX = minX + size.width; | |
56 double maxY = minY + size.height; | |
57 return (nodePoint.x >= minX && nodePoint.x < maxX && | |
58 nodePoint.y >= minY && nodePoint.y < maxY); | |
59 } | |
60 } | |
OLD | NEW |