reflexion 0.1.47 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog.md +10 -0
- data/VERSION +1 -1
- data/src/shape.cpp +64 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e490c3d3e75c2e07cd82f02772eb87b45729bd4dbf7444a01e82e631e2673a33
|
4
|
+
data.tar.gz: e52a6698bcc86a4509799637efc4019e76c39eecc5122a9a565455f18b7691e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 761419026cc6c7f939d714d67ee47c3d3798a7128666deb6100e470e5e80b0a17ead5747270ca33125bbf0338a39e27c9fa1810e13bde7182cc69e6d3bb12ef7
|
7
|
+
data.tar.gz: 4f6900e7f5279eceb728e4e003eae016e68af385bc9a6e9c88ca02d67ab22fe538ad2dd5565e4b177689b1392f01c928bff101d22322bd275446a74f31d9d1e0
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# reflex ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.1.49] - 2023-07-11
|
5
|
+
|
6
|
+
- Fix assertion fail if the view size is 0
|
7
|
+
|
8
|
+
|
9
|
+
## [v0.1.48] - 2023-07-10
|
10
|
+
|
11
|
+
- Fix a problem that a rectangle shape would be split into 2 triangles for physics
|
12
|
+
|
13
|
+
|
4
14
|
## [v0.1.47] - 2023-06-27
|
5
15
|
|
6
16
|
- NONE -> TYPE_NONE
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.49
|
data/src/shape.cpp
CHANGED
@@ -793,6 +793,67 @@ namespace Reflex
|
|
793
793
|
|
794
794
|
uint nsegment = 0;
|
795
795
|
|
796
|
+
Fixture* create_fixtures (Shape* shape) override
|
797
|
+
{
|
798
|
+
Bounds frame = get_frame();
|
799
|
+
bool rect = frame.size() != 0;
|
800
|
+
if (rect && !has_rounds())
|
801
|
+
return create_rect_fixture(shape, frame);
|
802
|
+
else if (rect && nsegment <= 1)
|
803
|
+
return create_rect_fixture_without_division(shape, frame);
|
804
|
+
else
|
805
|
+
return Super::create_fixtures(shape);
|
806
|
+
}
|
807
|
+
|
808
|
+
Fixture* create_rect_fixture (Shape* shape, const Bounds& frame)
|
809
|
+
{
|
810
|
+
assert(shape);
|
811
|
+
|
812
|
+
if (!owner)
|
813
|
+
invalid_state_error(__FILE__, __LINE__);
|
814
|
+
|
815
|
+
float ppm = owner->meter2pixel();
|
816
|
+
coord l = to_b2coord(frame.x, ppm);
|
817
|
+
coord t = to_b2coord(frame.y, ppm);
|
818
|
+
coord r = to_b2coord(frame.x + frame.w, ppm);
|
819
|
+
coord b = to_b2coord(frame.x + frame.h, ppm);
|
820
|
+
b2Vec2 b2points[] = {{l, t}, {l, b}, {r, b}, {r, t}};
|
821
|
+
|
822
|
+
b2PolygonShape b2shape;
|
823
|
+
b2shape.Set(&b2points[0], 4);
|
824
|
+
|
825
|
+
return FixtureBuilder(shape, &b2shape).fixtures();
|
826
|
+
}
|
827
|
+
|
828
|
+
Fixture* create_rect_fixture_without_division (
|
829
|
+
Shape* shape, const Bounds& frame)
|
830
|
+
{
|
831
|
+
assert(shape);
|
832
|
+
|
833
|
+
if (!owner)
|
834
|
+
invalid_state_error(__FILE__, __LINE__);
|
835
|
+
|
836
|
+
Polygon polygon = Rays::create_rect(
|
837
|
+
frame.x, frame.y, frame.width, frame.height,
|
838
|
+
round_left_top, round_right_top,
|
839
|
+
round_left_bottom, round_right_bottom,
|
840
|
+
1);
|
841
|
+
assert(polygon.size() == 1);
|
842
|
+
|
843
|
+
float ppm = owner->meter2pixel();
|
844
|
+
const Polyline& polyline = polygon[0];
|
845
|
+
assert(polyline[0].size() <= 8);
|
846
|
+
|
847
|
+
b2Vec2 b2points[8];
|
848
|
+
for (size_t i = 0; i < polyline.size(); ++i)
|
849
|
+
b2points[i] = to_b2vec2(polyline[i], ppm);
|
850
|
+
|
851
|
+
b2PolygonShape b2shape;
|
852
|
+
b2shape.Set(&b2points[0], polyline.size());
|
853
|
+
|
854
|
+
return FixtureBuilder(shape, &b2shape).fixtures();
|
855
|
+
}
|
856
|
+
|
796
857
|
Polygon get_polygon_for_shape () const override
|
797
858
|
{
|
798
859
|
return Rays::create_rect(
|
@@ -968,10 +1029,10 @@ namespace Reflex
|
|
968
1029
|
|
969
1030
|
Fixture* create_fixtures (Shape* shape) override
|
970
1031
|
{
|
971
|
-
Bounds
|
972
|
-
bool circle
|
1032
|
+
Bounds frame = get_frame();
|
1033
|
+
bool circle = frame.size() != 0 && frame.width == frame.height;
|
973
1034
|
if (circle && !has_angle() && !has_hole() && has_fill(shape))
|
974
|
-
return create_circle_fixture(shape,
|
1035
|
+
return create_circle_fixture(shape, frame);
|
975
1036
|
else
|
976
1037
|
return Super::create_fixtures(shape);
|
977
1038
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reflexion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.49
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|