teien 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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