23 radiansPerMeter = 1.0f /
radius
38 radialTransformer.
angleXOffset = radialParent.angleXOffset + rectSpaceDelta.x / radialParent.radiusOffset;
39 radialTransformer.angleYOffset = radialParent.angleYOffset + rectSpaceDelta.y / radialParent.radiusOffset;
40 radialTransformer.radiusOffset = radialParent.radiusOffset + rectSpaceDelta.z;
41 radialTransformer.radiansPerMeter = 1.0f / (radialTransformer.radiusOffset);
56 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
57 anchorDelta = localRectPos - anchorRectPos;
65 position.y = Mathf.Sin(angleY) *
radius;
66 position.z = Mathf.Cos(angleY) *
radius;
69 position2.x = Mathf.Sin(angleX) * position.z;
70 position2.y = position.y;
71 position2.z = Mathf.Cos(angleX) * position.z -
space.
radius;
79 Vector3 preRotatedPos;
81 preRotatedPos.y = localWarpedPos.y;
82 preRotatedPos.z =
new Vector2(localWarpedPos.x, localWarpedPos.z).magnitude;
84 float angleX = Mathf.Atan2(localWarpedPos.x, localWarpedPos.z);
85 float angleY = Mathf.Atan2(preRotatedPos.y, preRotatedPos.z);
86 float radius =
new Vector2(preRotatedPos.z, preRotatedPos.y).magnitude;
93 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
94 Vector3 localRectPos = anchorRectPos + anchorDelta;
102 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
103 anchorDelta = localRectPos - anchorRectPos;
108 Quaternion rotation = Quaternion.Euler(-angleY * Mathf.Rad2Deg,
109 angleX * Mathf.Rad2Deg,
112 return rotation * localRectRot;
118 Vector3 preRotatedPos;
120 preRotatedPos.y = localWarpedPos.y;
121 preRotatedPos.z =
new Vector2(localWarpedPos.x, localWarpedPos.z).magnitude;
123 float angleX = Mathf.Atan2(localWarpedPos.x, localWarpedPos.z);
124 float angleY = Mathf.Atan2(preRotatedPos.y, preRotatedPos.z);
126 Quaternion baseRot = Quaternion.Euler(-angleY * Mathf.Rad2Deg,
127 angleX * Mathf.Rad2Deg,
129 Quaternion invRot = Quaternion.Inverse(baseRot);
131 return invRot * localWarpedRot;
137 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
138 anchorDelta = localRectPos - anchorRectPos;
143 Quaternion rotation = Quaternion.Euler(-angleY * Mathf.Rad2Deg,
144 angleX * Mathf.Rad2Deg,
147 return rotation * localRectDirection;
153 Vector3 preRotatedPos;
155 preRotatedPos.y = localWarpedPos.y;
156 preRotatedPos.z =
new Vector2(localWarpedPos.x, localWarpedPos.z).magnitude;
158 float angleX = Mathf.Atan2(localWarpedPos.x, localWarpedPos.z);
159 float angleY = Mathf.Atan2(preRotatedPos.y, preRotatedPos.z);
161 Quaternion baseRot = Quaternion.Euler(-angleY * Mathf.Rad2Deg,
162 angleX * Mathf.Rad2Deg,
164 Quaternion invRot = Quaternion.Inverse(baseRot);
165 return invRot * localWarpedDirection;
171 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
172 anchorDelta = localRectPos - anchorRectPos;
180 position.y = Mathf.Sin(angleY) *
radius;
181 position.z = Mathf.Cos(angleY) *
radius;
184 position2.x = Mathf.Sin(angleX) * position.z;
185 position2.y = position.y;
186 position2.z = Mathf.Cos(angleX) * position.z -
space.
radius;
188 Quaternion rotation = Quaternion.Euler(-angleY * Mathf.Rad2Deg,
189 angleX * Mathf.Rad2Deg,
192 return Matrix4x4.TRS(position2, rotation, Vector3.one);
196 Vector3 elementRectPos =
space.transform.InverseTransformPoint(element.position);
197 Vector3 anchorRectPos =
space.transform.InverseTransformPoint(
anchor.transform.position);
198 Vector3 delta = elementRectPos - anchorRectPos;
override void UpdateRadialTransformer(ITransformer transformer, ITransformer parent, Vector3 rectSpaceDelta)
override ITransformer ConstructTransformer(LeapSpaceAnchor anchor)
override ITransformer CosntructBaseTransformer()