reflexion 0.1.31 → 0.1.33

Sign up to get free protection for your applications and to get access to all the features.
data/src/world.cpp CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  #include <assert.h>
5
5
  #include <memory>
6
- #include <Box2D/Common/b2Draw.h>
7
- #include <Box2D/Dynamics/b2World.h>
8
- #include <Box2D/Dynamics/Contacts/b2Contact.h>
6
+ #include <box2d/b2_draw.h>
7
+ #include <box2d/b2_world.h>
8
+ #include <box2d/b2_contact.h>
9
9
  #include "reflex/event.h"
10
10
  #include "reflex/exception.h"
11
11
  #include "shape.h"
@@ -80,7 +80,7 @@ namespace Reflex
80
80
  }
81
81
 
82
82
  void DrawCircle (
83
- const b2Vec2& center, float32 radius, const b2Color& color)
83
+ const b2Vec2& center, float radius, const b2Color& color)
84
84
  {
85
85
  assert(painter);
86
86
 
@@ -90,7 +90,7 @@ namespace Reflex
90
90
  }
91
91
 
92
92
  void DrawSolidCircle (
93
- const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color)
93
+ const b2Vec2& center, float radius, const b2Vec2& axis, const b2Color& color)
94
94
  {
95
95
  assert(painter);
96
96
 
@@ -109,6 +109,15 @@ namespace Reflex
109
109
  painter->line(to_point(p1, ppm), to_point(p2, ppm));
110
110
  }
111
111
 
112
+ void DrawPoint (const b2Vec2& center, float size, const b2Color& color)
113
+ {
114
+ assert(painter);
115
+
116
+ painter->set_fill(color.r, color.g, color.b, color.a * 0.5);
117
+ painter->no_stroke();
118
+ painter->ellipse(to_point(center, ppm), to_coord(size / 2, ppm));
119
+ }
120
+
112
121
  void DrawTransform (const b2Transform& transform)
113
122
  {
114
123
  assert(painter);
@@ -147,11 +156,13 @@ namespace Reflex
147
156
  self->ppm = pixels_per_meter;
148
157
 
149
158
  self->b2world.SetContactListener(this);
159
+ self->b2world.SetContactFilter(this);
150
160
  }
151
161
 
152
162
  World::~World ()
153
163
  {
154
164
  self->b2world.SetContactListener(NULL);
165
+ self->b2world.SetContactFilter(NULL);
155
166
  }
156
167
 
157
168
  void
@@ -235,17 +246,37 @@ namespace Reflex
235
246
  if (!self->debug_draw) return;
236
247
 
237
248
  self->debug_draw->begin(painter);
238
- self->b2world.DrawDebugData();
249
+ self->b2world.DebugDraw();
239
250
  self->debug_draw->end();
240
251
  }
241
252
 
253
+ bool
254
+ World::ShouldCollide (b2Fixture* f1, b2Fixture* f2)
255
+ {
256
+ Shape* s1 = (Shape*) f1->GetUserData().pointer;
257
+ Shape* s2 = (Shape*) f2->GetUserData().pointer;
258
+ if (!s1 || !s2)
259
+ return false;
260
+
261
+ View* v1 = s1->owner();
262
+ View* v2 = s2->owner();
263
+ if (!v1 || !v2 || !View_is_active(*v1) || !View_is_active(*v2))
264
+ return false;
265
+
266
+ return
267
+ s1->will_contact(s2) &&
268
+ s2->will_contact(s1) &&
269
+ v1->will_contact(v2) &&
270
+ v2->will_contact(v1);
271
+ }
272
+
242
273
  void
243
274
  World::BeginContact (b2Contact* contact)
244
275
  {
245
- Shape* s1 = (Shape*) contact->GetFixtureA()->GetUserData();
276
+ Shape* s1 = (Shape*) contact->GetFixtureA()->GetUserData().pointer;
246
277
  if (!s1) return;
247
278
 
248
- Shape* s2 = (Shape*) contact->GetFixtureB()->GetUserData();
279
+ Shape* s2 = (Shape*) contact->GetFixtureB()->GetUserData().pointer;
249
280
  if (!s2) return;
250
281
 
251
282
  if (!View_is_active(*s1->owner()) || !View_is_active(*s2->owner()))
@@ -259,10 +290,10 @@ namespace Reflex
259
290
  void
260
291
  World::EndContact (b2Contact* contact)
261
292
  {
262
- Shape* s1 = (Shape*) contact->GetFixtureA()->GetUserData();
293
+ Shape* s1 = (Shape*) contact->GetFixtureA()->GetUserData().pointer;
263
294
  if (!s1) return;
264
295
 
265
- Shape* s2 = (Shape*) contact->GetFixtureB()->GetUserData();
296
+ Shape* s2 = (Shape*) contact->GetFixtureB()->GetUserData().pointer;
266
297
  if (!s2) return;
267
298
 
268
299
  if (!View_is_active(*s1->owner()) || !View_is_active(*s2->owner()))
data/src/world.h CHANGED
@@ -4,8 +4,8 @@
4
4
  #define __REFLEX_SRC_WORLD_H__
5
5
 
6
6
 
7
- #include <Box2D/Common/b2Math.h>
8
- #include <Box2D/Dynamics/b2WorldCallbacks.h>
7
+ #include <box2d/b2_math.h>
8
+ #include <box2d/b2_world_callbacks.h>
9
9
  #include <xot/noncopyable.h>
10
10
  #include <xot/pimpl.h>
11
11
  #include <rays/point.h>
@@ -24,7 +24,7 @@ namespace Reflex
24
24
  class Body;
25
25
 
26
26
 
27
- class World : public Xot::NonCopyable, private b2ContactListener
27
+ class World : public Xot::NonCopyable, private b2ContactFilter, b2ContactListener
28
28
  {
29
29
 
30
30
  public:
@@ -64,15 +64,17 @@ namespace Reflex
64
64
 
65
65
  protected:
66
66
 
67
- virtual void BeginContact (b2Contact* contact);
67
+ virtual bool ShouldCollide (b2Fixture* f1, b2Fixture* f2) override;
68
68
 
69
- virtual void EndContact (b2Contact* contact);
69
+ virtual void BeginContact (b2Contact* contact) override;
70
+
71
+ virtual void EndContact (b2Contact* contact) override;
70
72
 
71
73
  };// World
72
74
 
73
75
 
74
76
  template <typename T>
75
- inline float32
77
+ inline float
76
78
  to_b2coord (T t, float scale)
77
79
  {
78
80
  return t / scale;
@@ -97,7 +99,7 @@ namespace Reflex
97
99
  }
98
100
 
99
101
  inline coord
100
- to_coord (float32 t, float scale)
102
+ to_coord (float t, float scale)
101
103
  {
102
104
  return t * scale;
103
105
  }
data/test/helper.rb CHANGED
@@ -5,10 +5,11 @@
5
5
  .map {|s| File.expand_path "../#{s}/lib", __dir__}
6
6
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
7
 
8
- require 'test/unit'
9
8
  require 'xot/test'
10
9
  require 'reflex'
11
10
 
11
+ require 'test/unit'
12
+
12
13
  include Xot::Test
13
14
 
14
15
 
@@ -7,13 +7,13 @@ $REFLEX_NOAUTOINIT = true
7
7
  require_relative 'helper'
8
8
 
9
9
 
10
- class TestReflex < Test::Unit::TestCase
10
+ class TestReflexInit < Test::Unit::TestCase
11
11
 
12
- def test_init()
12
+ def test_init!()
13
13
  assert_raise(Reflex::ReflexError) {Reflex.fin!}
14
14
  assert Reflex.init!
15
15
  assert_raise(Reflex::ReflexError) {Reflex.init!}
16
16
  assert Reflex.fin!
17
17
  end
18
18
 
19
- end# TestReflex
19
+ end# TestReflexInit
data/test/test_shape.rb CHANGED
@@ -46,26 +46,4 @@ class TestShape < Test::Unit::TestCase
46
46
  assert_equal false, s.sensor?
47
47
  end
48
48
 
49
- def test_category()
50
- s = shape
51
- assert_equal 0b1, s.category_bits
52
- s.category_bits = 0b1010
53
- assert_equal 0b1010, s.category_bits
54
- s.category_bits |= 0b100
55
- assert_equal 0b1110, s.category_bits
56
- s.category_bits &= ~0b10
57
- assert_equal 0b1100, s.category_bits
58
- end
59
-
60
- def test_collision()
61
- s = shape
62
- assert_equal 0xffff, s.collision_mask
63
- s.collision_mask = 0b1010
64
- assert_equal 0b1010, s.collision_mask
65
- s.collision_mask |= 0b100
66
- assert_equal 0b1110, s.collision_mask
67
- s.collision_mask &= ~0b10
68
- assert_equal 0b1100, s.collision_mask
69
- end
70
-
71
49
  end# TestShape
data/test/test_view.rb CHANGED
@@ -285,16 +285,4 @@ class TestView < Test::Unit::TestCase
285
285
  assert_equal false, v.sensor?
286
286
  end
287
287
 
288
- def test_category()
289
- p, v = view, view
290
- p.add v
291
- assert_equal [:all], v.category
292
- end
293
-
294
- def test_collision()
295
- p, v = view, view
296
- p.add v
297
- #assert_equal [:all], v.collision
298
- end
299
-
300
288
  end# TestView
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.31
4
+ version: 0.1.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-26 00:00:00.000000000 Z
11
+ date: 2023-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.31
19
+ version: 0.1.33
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.31
26
+ version: 0.1.33
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.31
33
+ version: 0.1.33
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.31
40
+ version: 0.1.33
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: beeps
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.31
47
+ version: 0.1.33
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.31
54
+ version: 0.1.33
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rays
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.1.31
61
+ version: 0.1.33
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.1.31
68
+ version: 0.1.33
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -163,7 +163,7 @@ files:
163
163
  - ".doc/ext/reflex/view.cpp"
164
164
  - ".doc/ext/reflex/wheel_event.cpp"
165
165
  - ".doc/ext/reflex/window.cpp"
166
- - ".github/workflows/release.yml"
166
+ - ".github/workflows/release-gem.yml"
167
167
  - ".github/workflows/tag.yml"
168
168
  - ".github/workflows/test.yml"
169
169
  - ".github/workflows/utils.rb"
@@ -404,7 +404,7 @@ files:
404
404
  - test/test_model_owner.rb
405
405
  - test/test_pointer.rb
406
406
  - test/test_pointer_event.rb
407
- - test/test_reflex.rb
407
+ - test/test_reflex_init.rb
408
408
  - test/test_scroll_event.rb
409
409
  - test/test_selector.rb
410
410
  - test/test_shape.rb
@@ -433,7 +433,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
433
433
  - !ruby/object:Gem::Version
434
434
  version: '0'
435
435
  requirements: []
436
- rubygems_version: 3.4.6
436
+ rubygems_version: 3.4.10
437
437
  signing_key:
438
438
  specification_version: 4
439
439
  summary: A Graphical User Interface Tool Kit.
@@ -452,7 +452,7 @@ test_files:
452
452
  - test/test_model_owner.rb
453
453
  - test/test_pointer.rb
454
454
  - test/test_pointer_event.rb
455
- - test/test_reflex.rb
455
+ - test/test_reflex_init.rb
456
456
  - test/test_scroll_event.rb
457
457
  - test/test_selector.rb
458
458
  - test/test_shape.rb
@@ -1,34 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- tags: ['v[0-9]*']
6
-
7
- jobs:
8
- release:
9
- runs-on: macos-latest
10
-
11
- steps:
12
- - name: ruby 3.2
13
- uses: ruby/setup-ruby@v1
14
- with:
15
- ruby-version: 3.2
16
-
17
- - name: checkout
18
- uses: actions/checkout@v2
19
-
20
- - name: setup dependencies
21
- run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
22
-
23
- - name: test
24
- run: rake test
25
-
26
- - name: upload to rubygems
27
- env:
28
- GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
29
- run: |
30
- mkdir -p $HOME/.gem
31
- touch $HOME/.gem/credentials
32
- chmod 0600 $HOME/.gem/credentials
33
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
34
- rake upload