teien 0.0.3 → 0.1.0

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.
Files changed (103) hide show
  1. data/README.md +7 -5
  2. data/bin/teien +36 -37
  3. data/lib/teien/{smooth_mover.rb → action_model/smooth_moving.rb} +19 -3
  4. data/lib/teien/actor/actor.rb +21 -0
  5. data/{sample/actor/app/helpers/user_event.rb → lib/teien/actor/actor_event.rb} +41 -32
  6. data/lib/teien/actor/actor_factory.rb +20 -0
  7. data/lib/teien/actor/actor_info.rb +7 -0
  8. data/lib/teien/actor/actor_manager.rb +31 -0
  9. data/lib/teien/actor/actor_manager_proxy.rb +72 -0
  10. data/lib/teien/addon/addon.rb +25 -0
  11. data/lib/teien/{animation.rb → animation/animation.rb} +1 -0
  12. data/lib/teien/animation/animation_event.rb +17 -0
  13. data/lib/teien/animation/animation_manager.rb +23 -0
  14. data/lib/teien/animation/animation_manager_proxy.rb +27 -0
  15. data/lib/teien/application/application.rb +43 -0
  16. data/lib/teien/base_object/attachment_info.rb +15 -0
  17. data/lib/teien/{garden_object.rb → base_object/base_object.rb} +43 -52
  18. data/lib/teien/{event.rb → base_object/base_object_event.rb} +9 -12
  19. data/lib/teien/base_object/base_object_manager.rb +57 -0
  20. data/lib/teien/{garden_base.rb → base_object/base_object_manager_base.rb} +22 -31
  21. data/lib/teien/{proxy_garden.rb → base_object/base_object_manager_proxy.rb} +20 -62
  22. data/lib/teien/base_object/object_info.rb +21 -0
  23. data/lib/teien/{physics.rb → base_object/physics.rb} +4 -5
  24. data/lib/teien/{physics_info.rb → base_object/physics_info.rb} +1 -0
  25. data/lib/teien/base_object/physics_object_factory.rb +23 -0
  26. data/lib/teien/base_object/std_objects/box_object_info.rb +42 -0
  27. data/lib/teien/base_object/std_objects/capsule_object_info.rb +44 -0
  28. data/lib/teien/base_object/std_objects/cone_object_info.rb +41 -0
  29. data/lib/teien/base_object/std_objects/cylinder_object_info.rb +44 -0
  30. data/lib/teien/base_object/std_objects/floor_object_info.rb +45 -0
  31. data/lib/teien/base_object/std_objects/light_object_info.rb +40 -0
  32. data/lib/teien/base_object/std_objects/mesh_bb_object_info.rb +42 -0
  33. data/lib/teien/base_object/std_objects/mesh_object_info.rb +62 -0
  34. data/lib/teien/base_object/std_objects/sphere_object_info.rb +38 -0
  35. data/lib/teien/commands/browser_command.rb +46 -0
  36. data/lib/teien/commands/local_command.rb +21 -0
  37. data/lib/teien/commands/server_command.rb +39 -0
  38. data/lib/teien/commands/std_command.rb +71 -0
  39. data/lib/teien/core/client_network.rb +26 -0
  40. data/lib/teien/core/component_manager.rb +11 -0
  41. data/lib/teien/core/core_event.rb +7 -0
  42. data/lib/teien/core/dispatcher.rb +30 -0
  43. data/lib/teien/core/event_router.rb +116 -0
  44. data/lib/teien/core/launcher.rb +31 -0
  45. data/lib/teien/core/network.rb +28 -0
  46. data/lib/teien/{remote_info.rb → core/remote_info.rb} +6 -1
  47. data/lib/teien/core/server_network.rb +23 -0
  48. data/lib/teien/{tools.rb → core/tools.rb} +2 -2
  49. data/lib/teien/{camera.rb → ui/camera.rb} +1 -1
  50. data/lib/teien/{camera_mover.rb → ui/camera_mover.rb} +1 -2
  51. data/lib/teien/ui/std_objects/box_object_info.rb +29 -0
  52. data/lib/teien/ui/std_objects/capsule_object_info.rb +28 -0
  53. data/lib/teien/ui/std_objects/cone_object_info.rb +25 -0
  54. data/lib/teien/ui/std_objects/cylinder_object_info.rb +26 -0
  55. data/lib/teien/ui/std_objects/floor_object_info.rb +34 -0
  56. data/lib/teien/ui/std_objects/light_object_info.rb +23 -0
  57. data/lib/teien/ui/std_objects/mesh_bb_object_info.rb +24 -0
  58. data/lib/teien/ui/std_objects/mesh_object_info.rb +24 -0
  59. data/lib/teien/ui/std_objects/sphere_object_info.rb +26 -0
  60. data/lib/teien/{user_interface.rb → ui/user_interface.rb} +18 -13
  61. data/lib/teien/{view.rb → ui/view.rb} +42 -20
  62. data/lib/teien/ui/view_object.rb +142 -0
  63. data/lib/teien/ui/view_object_factory.rb +23 -0
  64. data/lib/teien/version.rb +1 -1
  65. data/lib/teien.rb +3 -78
  66. data/mods/actor/addons/sinbad/lib/sinbad/sinbad_info.rb +16 -0
  67. data/{sample/actor/app/helpers → mods/actor/addons/sinbad/lib}/sinbad/sinbad_state.rb +14 -39
  68. data/mods/actor/addons/sinbad/lib/sinbad.rb +180 -0
  69. data/mods/actor/apps/browser/browser_application.rb +185 -0
  70. data/mods/actor/apps/common/browser_event.rb +68 -0
  71. data/mods/actor/apps/server/server_application.rb +101 -0
  72. data/{sample/actor/app/ais → mods/actor/commands/ai}/actor_ai.rb +8 -3
  73. data/mods/actor/commands/ai_command.rb +20 -0
  74. data/{sample/actor/config → mods/actor/configs}/plugins.cfg +4 -4
  75. data/{sample/hello_garden/app/controllers/hello_garden_controller.rb → mods/hello_garden/apps/browser/browser_application.rb} +48 -25
  76. data/mods/hello_garden/apps/common/browser_event.rb +58 -0
  77. data/{sample/hello_garden/app/models/hello_garden_model.rb → mods/hello_garden/apps/server/server_application.rb} +35 -26
  78. data/teien.gemspec +3 -1
  79. metadata +114 -55
  80. data/lib/teien/ai.rb +0 -27
  81. data/lib/teien/controller.rb +0 -30
  82. data/lib/teien/dispatcher.rb +0 -22
  83. data/lib/teien/event_router.rb +0 -118
  84. data/lib/teien/garden.rb +0 -91
  85. data/lib/teien/model.rb +0 -34
  86. data/lib/teien/network.rb +0 -108
  87. data/lib/teien/object_info.rb +0 -192
  88. data/lib/teien/physics_object_factory.rb +0 -170
  89. data/lib/teien/synchronizer.rb +0 -26
  90. data/lib/teien/view_object.rb +0 -67
  91. data/lib/teien/view_object_factory.rb +0 -210
  92. data/sample/actor/app/controllers/actor_controller.rb +0 -182
  93. data/sample/actor/app/helpers/sinbad/sinbad.rb +0 -176
  94. data/sample/actor/app/models/actor_model.rb +0 -108
  95. data/sample/hello_garden/app/helpers/user_event.rb +0 -12
  96. /data/lib/teien/{animation_operator.rb → animation/animation_operator.rb} +0 -0
  97. /data/lib/teien/{physics_object.rb → base_object/physics_object.rb} +0 -0
  98. /data/lib/teien/{sky_dome.rb → base_object/sky_dome.rb} +0 -0
  99. /data/lib/teien/{ui_listener.rb → ui/ui_listener.rb} +0 -0
  100. /data/{sample/actor/config → mods/actor/configs}/resources.cfg +0 -0
  101. /data/{sample/hello_garden/config → mods/hello_garden/configs}/plugins.cfg +0 -0
  102. /data/{sample/hello_garden/config → mods/hello_garden/configs}/resources.cfg +0 -0
  103. /data/{sample → mods}/hello_garden/run +0 -0
@@ -1,61 +1,70 @@
1
- require 'teien'
2
-
3
- require_relative '../helpers/user_event'
1
+ require_relative '../common/browser_event'
4
2
 
5
3
  include Teien
6
4
 
7
- class HelloGardenModel < Teien::Model
8
- def setup(garden)
5
+ class ServerApplication < Teien::Application
6
+ def setup()
9
7
  puts "model setup"
10
8
  @quit = false
9
+ @first_connection = true
11
10
  @shot_num = 0
12
11
 
13
- @garden.set_ambient_light(Color.new(0.1, 0.1, 0.1))
14
- @garden.set_sky_dome(true, "Examples/CloudySky", 5, 8)
15
- @garden.set_gravity(Vector3D.new(0.0, -9.8, 0.0))
12
+ @base_object_manager.set_ambient_light(Color.new(0.1, 0.1, 0.1))
13
+ @base_object_manager.set_sky_dome(true, "Examples/CloudySky", 5, 8)
14
+ @base_object_manager.set_gravity(Vector3D.new(0.0, -9.8, 0.0))
16
15
 
17
16
  # create a light
18
17
  object_info = LightObjectInfo.new(LightObjectInfo::DIRECTIONAL)
19
18
  object_info.diffuse_color = Color.new(1.0, 1.0, 1.0)
20
19
  object_info.specular_color = Color.new(0.25, 0.25, 0)
21
20
  object_info.direction = Vector3D.new( -1, -1, -1 )
22
- light = @garden.create_object("light", object_info, PhysicsInfo.new(0))
21
+ light = @base_object_manager.create_object("light", object_info)
23
22
  light.set_position(Vector3D.new(0, 0, 0))
24
23
 
25
24
  # create a floor.
26
25
  object_info = FloorObjectInfo.new(50, 50, 0.5, 1, 1, 5, 5)
27
26
  object_info.material_name = "Examples/Rockwall"
28
- floor = @garden.create_object("Floor", object_info, PhysicsInfo.new(0))
27
+ floor = @base_object_manager.create_object("Floor", object_info, PhysicsInfo.new(0))
29
28
  floor.set_position(Vector3D.new(0, 0, 0))
29
+ end
30
+
31
+ def update(delta)
32
+ return !@quit
33
+ end
30
34
 
35
+ def connection_binded(from)
36
+ puts "connection_binded"
37
+ end
38
+
39
+ def create_objects()
31
40
  # create a box.
32
41
  object_info = BoxObjectInfo.new(Vector3D.new(1, 1, 1))
33
42
  object_info.material_name = "Examples/BumpyMetal"
34
- box = @garden.create_object("boxTest", object_info, PhysicsInfo.new(10))
43
+ box = @base_object_manager.create_object("boxTest", object_info, PhysicsInfo.new(10))
35
44
  box.set_position(Vector3D.new(0, 1.0, 0))
36
45
 
37
46
  # create a sphere
38
47
  object_info = SphereObjectInfo.new(1.0)
39
48
  object_info.material_name = "Examples/SphereMappedRustySteel"
40
- sphere = @garden.create_object("sphere", object_info, PhysicsInfo.new(10))
49
+ sphere = @base_object_manager.create_object("sphere", object_info, PhysicsInfo.new(10))
41
50
  sphere.set_position(Vector3D.new(0, 1.0, -2))
42
51
 
43
52
  # create a capsule
44
53
  object_info = CapsuleObjectInfo.new(1.0, 2.0)
45
54
  object_info.material_name = "Examples/RustySteel"
46
- capsule = @garden.create_object("capsule", object_info, PhysicsInfo.new(10))
55
+ capsule = @base_object_manager.create_object("capsule", object_info, PhysicsInfo.new(10))
47
56
  capsule.set_position(Vector3D.new(1, 5, 1))
48
57
 
49
58
  # create a cone
50
59
  object_info = ConeObjectInfo.new(1.0, 2.0)
51
60
  object_info.material_name = "Examples/BeachStones"
52
- cone = @garden.create_object("cone", object_info, PhysicsInfo.new(10))
61
+ cone = @base_object_manager.create_object("cone", object_info, PhysicsInfo.new(10))
53
62
  cone.set_position(Vector3D.new(1, 10, 1))
54
63
 
55
64
  # create a cylinder
56
65
  object_info = CylinderObjectInfo.new(1.0, 2.0)
57
66
  object_info.material_name = "Examples/BumpyMetal"
58
- cylinder = @garden.create_object("cylinder", object_info, PhysicsInfo.new(10))
67
+ cylinder = @base_object_manager.create_object("cylinder", object_info, PhysicsInfo.new(10))
59
68
  cylinder.set_position(Vector3D.new(-1, 10, -1))
60
69
 
61
70
  # create a meshBB object
@@ -63,39 +72,39 @@ class HelloGardenModel < Teien::Model
63
72
  object_info.scale = Vector3D.new(1.0 / 20.0, 1.0 / 20.0, 1.0 / 20.0)
64
73
  object_info.physics_offset = Vector3D.new(0, 1.0, 0)
65
74
  object_info.view_offset = Vector3D.new(0, 1.2, 0)
66
- pen = @garden.create_object("pen", object_info, PhysicsInfo.new(10))
75
+ pen = @base_object_manager.create_object("pen", object_info, PhysicsInfo.new(10))
67
76
  pen.set_position(Vector3D.new(1, 15, 0))
68
77
 
69
78
  =begin
70
79
  # create a mesh object
71
80
  object_info = MeshObjectInfo.new("penguin.mesh")
72
81
  object_info.scale = Vector3D.new(1.0 / 20.0, 1.0 / 20.0, 1.0 / 20.0)
73
- pen = @garden.create_object("penpen", object_info, PhysicsInfo.new(10))
82
+ pen = @base_object_manager.create_object("penpen", object_info, PhysicsInfo.new(10))
74
83
  pen.set_position(Vector3D.new(1, 20, 0))
75
84
  =end
76
85
  end
77
86
 
78
- def update(delta)
79
- # print "Garden tick is called: ", evt.timeSinceLastFrame * 1000, "\n"
80
- return !@quit
81
- end
82
-
83
87
  def receive_event(event, from)
84
88
  case event
85
- when Event::ShotBox
86
- shot_box(event.pos, event.dir)
89
+ when Teien::Event::Browser::ReadyToGo
90
+ if @first_connection
91
+ create_objects()
92
+ @first_connection = false
93
+ end
94
+ when Teien::Event::Browser::MousePressed
95
+ shot_box(event.camera_pos, event.camera_dir)
87
96
  end
88
97
  end
89
98
 
90
99
  def shot_box(pos, dir)
91
100
  object_info = BoxObjectInfo.new(Vector3D.new(1, 1, 1))
92
101
  object_info.material_name = "Examples/SphereMappedRustySteel"
93
- box = @garden.create_object("shotBox#{@shot_num}", object_info, PhysicsInfo.new(1.0))
102
+ box = @base_object_manager.create_object("shotBox#{@shot_num}", object_info, PhysicsInfo.new(1.0))
94
103
  box.set_position(pos + (dir * 5.0))
95
104
  @shot_num += 1
96
105
  force = dir * Vector3D.new(100.0, 100.0, 100.0)
97
106
  box.apply_impulse(force, Vector3D.new(0.0, 0.0, 0.0))
98
- @garden.send_event(Event::SyncObject.new(box))
107
+ @event_router.send_event(Teien::Event::BaseObject::SyncObject.new(box))
99
108
  end
100
109
  end
101
110
 
data/teien.gemspec CHANGED
@@ -17,7 +17,9 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ["lib"]
18
18
 
19
19
  gem.add_dependency 'eventmachine'
20
- gem.add_dependency 'ruby-ogre'
20
+ gem.add_dependency 'ruby-ois'
21
+ gem.add_dependency 'ruby-ogre-installer'
22
+ gem.add_dependency 'ruby-procedural'
21
23
  gem.add_dependency 'ruby-bullet'
22
24
  gem.add_dependency 'teienlib'
23
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teien
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-12 00:00:00.000000000 Z
12
+ date: 2013-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &79258170 !ruby/object:Gem::Requirement
16
+ requirement: &74612360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *79258170
24
+ version_requirements: *74612360
25
25
  - !ruby/object:Gem::Dependency
26
- name: ruby-ogre
27
- requirement: &79257660 !ruby/object:Gem::Requirement
26
+ name: ruby-ois
27
+ requirement: &74611650 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,32 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *79257660
35
+ version_requirements: *74611650
36
+ - !ruby/object:Gem::Dependency
37
+ name: ruby-ogre-installer
38
+ requirement: &74611040 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *74611040
47
+ - !ruby/object:Gem::Dependency
48
+ name: ruby-procedural
49
+ requirement: &74610390 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *74610390
36
58
  - !ruby/object:Gem::Dependency
37
59
  name: ruby-bullet
38
- requirement: &79257300 !ruby/object:Gem::Requirement
60
+ requirement: &74609840 !ruby/object:Gem::Requirement
39
61
  none: false
40
62
  requirements:
41
63
  - - ! '>='
@@ -43,10 +65,10 @@ dependencies:
43
65
  version: '0'
44
66
  type: :runtime
45
67
  prerelease: false
46
- version_requirements: *79257300
68
+ version_requirements: *74609840
47
69
  - !ruby/object:Gem::Dependency
48
70
  name: teienlib
49
- requirement: &79309410 !ruby/object:Gem::Requirement
71
+ requirement: &74609510 !ruby/object:Gem::Requirement
50
72
  none: false
51
73
  requirements:
52
74
  - - ! '>='
@@ -54,7 +76,7 @@ dependencies:
54
76
  version: '0'
55
77
  type: :runtime
56
78
  prerelease: false
57
- version_requirements: *79309410
79
+ version_requirements: *74609510
58
80
  description: An easy 3D world maker.
59
81
  email:
60
82
  - abexsoft@gmail.com
@@ -70,51 +92,88 @@ files:
70
92
  - Rakefile
71
93
  - bin/teien
72
94
  - lib/teien.rb
73
- - lib/teien/ai.rb
74
- - lib/teien/animation.rb
75
- - lib/teien/animation_operator.rb
76
- - lib/teien/camera.rb
77
- - lib/teien/camera_mover.rb
78
- - lib/teien/controller.rb
79
- - lib/teien/dispatcher.rb
80
- - lib/teien/event.rb
81
- - lib/teien/event_router.rb
82
- - lib/teien/garden.rb
83
- - lib/teien/garden_base.rb
84
- - lib/teien/garden_object.rb
85
- - lib/teien/model.rb
86
- - lib/teien/network.rb
87
- - lib/teien/object_info.rb
88
- - lib/teien/physics.rb
89
- - lib/teien/physics_info.rb
90
- - lib/teien/physics_object.rb
91
- - lib/teien/physics_object_factory.rb
92
- - lib/teien/proxy_garden.rb
93
- - lib/teien/remote_info.rb
94
- - lib/teien/sky_dome.rb
95
- - lib/teien/smooth_mover.rb
96
- - lib/teien/synchronizer.rb
97
- - lib/teien/tools.rb
98
- - lib/teien/ui_listener.rb
99
- - lib/teien/user_interface.rb
95
+ - lib/teien/action_model/smooth_moving.rb
96
+ - lib/teien/actor/actor.rb
97
+ - lib/teien/actor/actor_event.rb
98
+ - lib/teien/actor/actor_factory.rb
99
+ - lib/teien/actor/actor_info.rb
100
+ - lib/teien/actor/actor_manager.rb
101
+ - lib/teien/actor/actor_manager_proxy.rb
102
+ - lib/teien/addon/addon.rb
103
+ - lib/teien/animation/animation.rb
104
+ - lib/teien/animation/animation_event.rb
105
+ - lib/teien/animation/animation_manager.rb
106
+ - lib/teien/animation/animation_manager_proxy.rb
107
+ - lib/teien/animation/animation_operator.rb
108
+ - lib/teien/application/application.rb
109
+ - lib/teien/base_object/attachment_info.rb
110
+ - lib/teien/base_object/base_object.rb
111
+ - lib/teien/base_object/base_object_event.rb
112
+ - lib/teien/base_object/base_object_manager.rb
113
+ - lib/teien/base_object/base_object_manager_base.rb
114
+ - lib/teien/base_object/base_object_manager_proxy.rb
115
+ - lib/teien/base_object/object_info.rb
116
+ - lib/teien/base_object/physics.rb
117
+ - lib/teien/base_object/physics_info.rb
118
+ - lib/teien/base_object/physics_object.rb
119
+ - lib/teien/base_object/physics_object_factory.rb
120
+ - lib/teien/base_object/sky_dome.rb
121
+ - lib/teien/base_object/std_objects/box_object_info.rb
122
+ - lib/teien/base_object/std_objects/capsule_object_info.rb
123
+ - lib/teien/base_object/std_objects/cone_object_info.rb
124
+ - lib/teien/base_object/std_objects/cylinder_object_info.rb
125
+ - lib/teien/base_object/std_objects/floor_object_info.rb
126
+ - lib/teien/base_object/std_objects/light_object_info.rb
127
+ - lib/teien/base_object/std_objects/mesh_bb_object_info.rb
128
+ - lib/teien/base_object/std_objects/mesh_object_info.rb
129
+ - lib/teien/base_object/std_objects/sphere_object_info.rb
130
+ - lib/teien/commands/browser_command.rb
131
+ - lib/teien/commands/local_command.rb
132
+ - lib/teien/commands/server_command.rb
133
+ - lib/teien/commands/std_command.rb
134
+ - lib/teien/core/client_network.rb
135
+ - lib/teien/core/component_manager.rb
136
+ - lib/teien/core/core_event.rb
137
+ - lib/teien/core/dispatcher.rb
138
+ - lib/teien/core/event_router.rb
139
+ - lib/teien/core/launcher.rb
140
+ - lib/teien/core/network.rb
141
+ - lib/teien/core/remote_info.rb
142
+ - lib/teien/core/server_network.rb
143
+ - lib/teien/core/tools.rb
144
+ - lib/teien/ui/camera.rb
145
+ - lib/teien/ui/camera_mover.rb
146
+ - lib/teien/ui/std_objects/box_object_info.rb
147
+ - lib/teien/ui/std_objects/capsule_object_info.rb
148
+ - lib/teien/ui/std_objects/cone_object_info.rb
149
+ - lib/teien/ui/std_objects/cylinder_object_info.rb
150
+ - lib/teien/ui/std_objects/floor_object_info.rb
151
+ - lib/teien/ui/std_objects/light_object_info.rb
152
+ - lib/teien/ui/std_objects/mesh_bb_object_info.rb
153
+ - lib/teien/ui/std_objects/mesh_object_info.rb
154
+ - lib/teien/ui/std_objects/sphere_object_info.rb
155
+ - lib/teien/ui/ui_listener.rb
156
+ - lib/teien/ui/user_interface.rb
157
+ - lib/teien/ui/view.rb
158
+ - lib/teien/ui/view_object.rb
159
+ - lib/teien/ui/view_object_factory.rb
100
160
  - lib/teien/version.rb
101
- - lib/teien/view.rb
102
- - lib/teien/view_object.rb
103
- - lib/teien/view_object_factory.rb
104
- - sample/actor/app/ais/actor_ai.rb
105
- - sample/actor/app/controllers/actor_controller.rb
106
- - sample/actor/app/helpers/sinbad/sinbad.rb
107
- - sample/actor/app/helpers/sinbad/sinbad_state.rb
108
- - sample/actor/app/helpers/user_event.rb
109
- - sample/actor/app/models/actor_model.rb
110
- - sample/actor/config/plugins.cfg
111
- - sample/actor/config/resources.cfg
112
- - sample/hello_garden/app/controllers/hello_garden_controller.rb
113
- - sample/hello_garden/app/helpers/user_event.rb
114
- - sample/hello_garden/app/models/hello_garden_model.rb
115
- - sample/hello_garden/config/plugins.cfg
116
- - sample/hello_garden/config/resources.cfg
117
- - sample/hello_garden/run
161
+ - mods/actor/addons/sinbad/lib/sinbad.rb
162
+ - mods/actor/addons/sinbad/lib/sinbad/sinbad_info.rb
163
+ - mods/actor/addons/sinbad/lib/sinbad/sinbad_state.rb
164
+ - mods/actor/apps/browser/browser_application.rb
165
+ - mods/actor/apps/common/browser_event.rb
166
+ - mods/actor/apps/server/server_application.rb
167
+ - mods/actor/commands/ai/actor_ai.rb
168
+ - mods/actor/commands/ai_command.rb
169
+ - mods/actor/configs/plugins.cfg
170
+ - mods/actor/configs/resources.cfg
171
+ - mods/hello_garden/apps/browser/browser_application.rb
172
+ - mods/hello_garden/apps/common/browser_event.rb
173
+ - mods/hello_garden/apps/server/server_application.rb
174
+ - mods/hello_garden/configs/plugins.cfg
175
+ - mods/hello_garden/configs/resources.cfg
176
+ - mods/hello_garden/run
118
177
  - teien.gemspec
119
178
  homepage: https://github.com/abexsoft/teien
120
179
  licenses: []
data/lib/teien/ai.rb DELETED
@@ -1,27 +0,0 @@
1
- require 'teien'
2
-
3
- module Teien
4
-
5
- class Ai
6
- @@ais = Array.new
7
- @@loaded_ais = Array.new
8
-
9
- @garden = nil
10
-
11
- def initialize(garden)
12
- @garden = garden
13
- @garden.register_receiver(self)
14
- end
15
-
16
- def self.inherited(klass)
17
- @@ais.push(klass)
18
- end
19
-
20
- def self.load(garden)
21
- @@ais.each {|ctl|
22
- @@loaded_ais.push(ctl.new(garden))
23
- }
24
- end
25
- end
26
-
27
- end
@@ -1,30 +0,0 @@
1
- require 'teien'
2
-
3
- module Teien
4
-
5
- class Controller
6
- @@controllers = Array.new
7
- @@loaded_controllers = Array.new
8
-
9
- @garden = nil
10
- @ui = nil
11
-
12
- def initialize(garden, ui)
13
- @garden = garden
14
- @garden.register_receiver(self)
15
- @ui = ui
16
- @ui.register_receiver(self)
17
- end
18
-
19
- def self.inherited(klass)
20
- @@controllers.push(klass)
21
- end
22
-
23
- def self.load(garden, ui)
24
- @@controllers.each {|ctl|
25
- @@loaded_controllers.push(ctl.new(garden, ui))
26
- }
27
- end
28
- end
29
-
30
- end
@@ -1,22 +0,0 @@
1
- module Teien
2
-
3
- module Dispatcher
4
- def initialize(*args, &block)
5
- super
6
- @receivers = Array.new
7
- end
8
-
9
- def register_receiver(recv)
10
- @receivers.push(recv)
11
- end
12
-
13
- def notify(method, *argv)
14
- @receivers.each {|recv|
15
- if (recv.respond_to?(method))
16
- recv.method(method).call(*argv)
17
- end
18
- }
19
- end
20
- end
21
-
22
- end
@@ -1,118 +0,0 @@
1
- require "eventmachine"
2
- require "teien/event"
3
- require "teien/network"
4
-
5
- module Teien
6
-
7
- ##
8
- # EventRouter routes events in this region and communicate with the other region routers.
9
- #
10
- # ====Usage
11
- # 1. register a new event type name with registerEventType().
12
- # 2. register a receiver object which receives the eventType with registerReceiver().
13
- # The receiver object must have action(event) method.
14
- # 3. call notify(event) which issues the event.
15
- # The event must have eventType() method which returns event type name.
16
- #
17
- class EventRouter
18
- attr_accessor :connected_regions
19
-
20
- def initialize()
21
- @connected_regions = Array.new
22
-
23
- @event_type_receiver_hash = {} # event_type => receivers
24
-
25
- @last_time = 0
26
- @tick_event = Event::Tick.new(0)
27
- register_event_type(Event::Tick)
28
- end
29
-
30
- def finalize()
31
- end
32
-
33
- # eventmachine
34
- def send_all_regions(obj)
35
- @connected_regions.each { |c|
36
- c.send_object(obj)
37
- }
38
- end
39
-
40
- # event_type: the class name of a event.
41
- def register_event_type(event_type)
42
- @event_type_receiver_hash[event_type] = Array.new
43
- end
44
-
45
- ##
46
- #
47
- # The event receiver must have action(anEvent) method.
48
- #
49
- def register_receiver(event_name, receiver)
50
- if (@event_type_receiver_hash.has_key?(event_name))
51
- @event_type_receiver_hash[event_name].push(receiver)
52
- else
53
- print "No such event type(#{event_name}) in EventRouter.\n"
54
- print "Use EventRouter::register_event_type(event_type) at first.\n"
55
- end
56
- end
57
-
58
- ##
59
- # The event notified by this method must have a event_type attribute and
60
- # the event_yype must be registered with register_event_type()
61
- #
62
- def notify(event)
63
- if (@event_type_receiver_hash.has_key?(event.class))
64
- @event_type_receiver_hash[event.class].each {|receiver|
65
- receiver.receive_event(event)
66
- }
67
- else
68
- print "No such event type(#{event.class}) in EventRouter.\n"
69
- print "Use EventRouter::register_event_type(event_type) at first.\n"
70
- end
71
- end
72
-
73
- def run()
74
- EM.run do
75
- Signal.trap("INT") { EM.stop; self.finalize() }
76
- Signal.trap("TERM") { EM.stop; self.finalize() }
77
-
78
- EM.add_periodic_timer(0) do
79
- notify(@tick_event)
80
- # update(delta)
81
- end
82
-
83
- # EM.start_server("0.0.0.0", 11922, ServerNetwork, @event_router)
84
- end
85
- end
86
-
87
- # ip: string(ex. "0.0.0.0" means to accept all),
88
- # port: num
89
- def start_region(ip, port)
90
- EM.run do
91
- Signal.trap("INT") { EM.stop; self.finalize() }
92
- Signal.trap("TERM") { EM.stop; self.finalize() }
93
-
94
- EM.add_periodic_timer(0) do
95
- notify(@tick_event)
96
- end
97
-
98
- EM.start_server(ip, port, Network, self)
99
- end
100
- end
101
-
102
- def connect_to_region(ip, port)
103
- EM.run do
104
- # setting signals
105
- Signal.trap("INT") { EM.stop; self.finalize() }
106
- Signal.trap("TERM") { EM.stop; self.finalize() }
107
-
108
- # main loop
109
- EM.add_periodic_timer(0) do
110
- notify(Event::Tick.new(@tick_event))
111
- end
112
-
113
- EM.connect('49.212.146.194', 11922, Network, self)
114
- end
115
- end
116
- end
117
-
118
- end
data/lib/teien/garden.rb DELETED
@@ -1,91 +0,0 @@
1
- require "teien/garden_base.rb"
2
- require "teien/network.rb"
3
- require "teien/event.rb"
4
-
5
- module Teien
6
-
7
- class Garden < GardenBase
8
- def initialize()
9
- super
10
- end
11
-
12
- def run(ip = nil, port = 11922)
13
- return false unless setup()
14
-
15
- @last_time = 0
16
- EM.run do
17
- EM.add_periodic_timer(0.01) do
18
- if @last_time == 0
19
- @last_time = Time.now.to_f
20
- else
21
- now = Time.now.to_f
22
- delta = now - @last_time
23
- @last_time = now
24
-
25
- unless update(delta)
26
- EM.stop
27
- self.finalize()
28
- end
29
- end
30
- end
31
-
32
- Signal.trap("INT") { EM.stop; self.finalize() }
33
- Signal.trap("TERM") { EM.stop; self.finalize() }
34
-
35
- if (ip)
36
- EM.start_server(ip, port, Network, self)
37
- end
38
- end
39
- end
40
-
41
- def setup()
42
- @physics.setup(self)
43
- notify(:setup, self)
44
- return true
45
- end
46
-
47
- def update(delta)
48
- @physics.update(delta)
49
- @actors.each_value {|actor|
50
- actor.update(delta)
51
- }
52
- notify(:update, delta)
53
- return !@quit
54
- end
55
-
56
- # receive handler of Network.
57
- def receive_event(event, from)
58
- case event
59
- when Event::ClientConnected
60
- from.send_object(Event::SyncEnv.new(@gravity, @ambient_light_color, @sky_dome))
61
- notify_objects(from)
62
- end
63
- notify(:receive_event, event, from)
64
- end
65
-
66
- def send_event(event, to = nil)
67
- if (to)
68
- to.send_object(event)
69
- else
70
- Network::send_all(event)
71
- end
72
- end
73
-
74
- def notify_objects(to = nil)
75
- @objects.each_value { |obj|
76
- if to == nil
77
- Network::send_all(Event::SyncObject.new(obj))
78
- else
79
- to.send_object(Event::SyncObject.new(obj))
80
- end
81
- }
82
- end
83
-
84
- def finalize()
85
- @physics.finalize()
86
- @objects = {}
87
- end
88
-
89
- end
90
-
91
- end