Coverage Summary for Class: Transform (com.mygdx.game.Components)
Class |
Class, %
|
Method, %
|
Line, %
|
Transform |
100%
(1/1)
|
60%
(9/15)
|
66.7%
(18/27)
|
1 package com.mygdx.game.Components;
2
3 import com.badlogic.gdx.ai.utils.Location;
4 import com.badlogic.gdx.math.Vector2;
5 import com.mygdx.utils.Utilities;
6
7 /**
8 * Position, Scale, Rotation (in radians clockwise)
9 */
10 public class Transform extends Component implements Location<Vector2> {
11 private final Vector2 position;
12 private final Vector2 scale;
13 private float rotation;
14
15 /**
16 * position = (0, 0)
17 * scale = (0, 0)
18 * rotation = 0
19 * rot not used but easy to add functionality for
20 */
21 public Transform() {
22 position = new Vector2();
23 scale = new Vector2(1, 1);
24 rotation = 0;
25 type = ComponentType.Transform;
26 }
27
28 /**
29 * Set position associated with the Transform component.
30 *
31 * @param pos 2D vector specifying the position
32 * @param rb true to pass on the position to the parent's RigidBody
33 */
34 public void setPosition(Vector2 pos, boolean rb) {
35 setPosition(pos.x, pos.y, rb);
36 }
37
38 /**
39 * Set position associated with the Transform component.
40 *
41 * @param x coordinate
42 * @param y coordinate
43 * @param rb_ true to pass on the position to the parent's RigidBody
44 */
45 public void setPosition(float x, float y, boolean rb_) {
46 position.set(x, y);
47 if (parent != null && rb_) {
48 RigidBody rb = parent.getComponent(RigidBody.class);
49 if (rb != null) {
50 rb.setPosition(position);
51 }
52 }
53 }
54
55 /**
56 * Set position associated with the Transform component.
57 *
58 * @param pos 2D vector specifying the position
59 */
60 public void setPosition(Vector2 pos) {
61 setPosition(pos.x, pos.y);
62 }
63
64 /**
65 * Set position associated with the Transform component.
66 *
67 * @param x coordinate
68 * @param y coordinate
69 */
70 public void setPosition(float x, float y) {
71 position.set(x, y);
72 if (parent != null) {
73 RigidBody rb = parent.getComponent(RigidBody.class);
74 if (rb != null) {
75 rb.setPosition(position);
76 }
77 }
78 }
79
80 /**
81 * Sets the scale of the component
82 * @param x the x dimension
83 * @param y the y dimension
84 */
85 public void setScale(float x, float y) {
86 scale.set(x, y);
87 }
88
89 /**
90 * @param rot in Radians
91 */
92 public void setRotation(float rot) {
93 rotation = rot;
94 }
95
96 /**
97 * @return the position of the component on the grid
98 */
99 public Vector2 getPosition() {
100 return position;
101 }
102
103 /**
104 * @return the orientation of the component `unused`
105 */
106 @Override
107 public float getOrientation() {
108 return 0;
109 }
110
111 /**
112 * @param orientation the float value to set the orientation of the component to `unused`
113 */
114 @Override
115 public void setOrientation(float orientation) {}
116
117 /**
118 * Return new angle in radians from input vector.
119 * @param vector 2D vector
120 * @return the vector as an angle
121 */
122 @Override
123 public float vectorToAngle(Vector2 vector) {
124 return Utilities.vectorToAngle(vector);
125 }
126
127 /**
128 * Return new vector combining input vector with input angle in radians.
129 * @param outVector 2D vector
130 * @param angle in radians
131 * @return the angle as a vector
132 */
133 @Override
134 public Vector2 angleToVector(Vector2 outVector, float angle) {
135 return Utilities.angleToVector(outVector, angle);
136 }
137
138 /**
139 * @return a Transform object at a new location
140 */
141 @Override
142 public Location<Vector2> newLocation() {
143 return new Transform();
144 }
145
146 /**
147 * @return the scale of this object
148 */
149 public Vector2 getScale() {
150 return scale;
151 }
152
153 /**
154 * @return the angle of this object in radians
155 */
156 public float getRotation() {
157 return rotation;
158 }
159
160 //public void setScale(Vector2 pos) {
161 // scale.set(pos);
162 // }
163
164 // public Vector2 getCenter() {
165 // RigidBody rb = parent.getComponent(RigidBody.class);
166 // if (rb == null) {
167 // return getPosition();
168 // }
169 // return rb.getBody().getWorldCenter();
170 // }
171 }