teien 0.0.2 → 0.0.3

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 (49) hide show
  1. data/README.md +11 -6
  2. data/bin/teien +16 -2
  3. data/lib/teien/ai.rb +27 -0
  4. data/lib/teien/animation.rb +34 -0
  5. data/lib/teien/animation_operator.rb +6 -0
  6. data/lib/teien/controller.rb +30 -0
  7. data/lib/teien/dispatcher.rb +22 -0
  8. data/lib/teien/event.rb +60 -0
  9. data/lib/teien/event_router.rb +118 -0
  10. data/lib/teien/garden.rb +60 -172
  11. data/lib/teien/garden_base.rb +117 -0
  12. data/lib/teien/garden_object.rb +119 -136
  13. data/lib/teien/model.rb +34 -0
  14. data/lib/teien/network.rb +108 -0
  15. data/lib/teien/object_info.rb +21 -0
  16. data/lib/teien/physics.rb +47 -39
  17. data/lib/teien/physics_object.rb +57 -0
  18. data/lib/teien/physics_object_factory.rb +170 -0
  19. data/lib/teien/proxy_garden.rb +118 -0
  20. data/lib/teien/remote_info.rb +20 -0
  21. data/lib/teien/sky_dome.rb +15 -0
  22. data/lib/teien/smooth_mover.rb +31 -42
  23. data/lib/teien/synchronizer.rb +26 -0
  24. data/lib/teien/tools.rb +30 -2
  25. data/lib/teien/user_interface.rb +58 -5
  26. data/lib/teien/version.rb +1 -1
  27. data/lib/teien/view.rb +52 -33
  28. data/lib/teien/view_object.rb +67 -0
  29. data/lib/teien/view_object_factory.rb +210 -0
  30. data/lib/teien.rb +62 -14
  31. data/sample/actor/app/ais/actor_ai.rb +112 -0
  32. data/sample/actor/app/controllers/actor_controller.rb +182 -0
  33. data/sample/actor/app/helpers/sinbad/sinbad.rb +176 -0
  34. data/sample/actor/app/helpers/sinbad/sinbad_state.rb +224 -0
  35. data/sample/actor/app/helpers/user_event.rb +75 -0
  36. data/sample/actor/app/models/actor_model.rb +108 -0
  37. data/sample/actor/config/plugins.cfg +19 -0
  38. data/sample/actor/config/resources.cfg +24 -0
  39. data/sample/hello_garden/app/controllers/hello_garden_controller.rb +90 -0
  40. data/sample/hello_garden/app/helpers/user_event.rb +12 -0
  41. data/sample/{standalone/hello_garden/hello_garden.rb → hello_garden/app/models/hello_garden_model.rb} +29 -83
  42. data/sample/{standalone/hello_garden → hello_garden/config}/plugins.cfg +0 -0
  43. data/sample/{standalone/hello_garden → hello_garden/config}/resources.cfg +0 -0
  44. data/sample/hello_garden/run +6 -0
  45. data/teien.gemspec +2 -1
  46. metadata +52 -15
  47. data/lib/teien/light_object.rb +0 -36
  48. data/lib/teien/object_factory.rb +0 -308
  49. data/sample/standalone/hello_garden/run +0 -5
@@ -0,0 +1,75 @@
1
+ require 'teien/event.rb'
2
+
3
+ module Event
4
+ class RequestControllable
5
+ def initialize()
6
+ end
7
+ end
8
+
9
+ class ControllableObject
10
+ attr_accessor :actor_name
11
+ attr_accessor :object_name
12
+
13
+ def initialize(actor_name, object_name)
14
+ @actor_name = actor_name
15
+ @object_name = object_name
16
+ end
17
+ end
18
+
19
+ class SyncSinbad
20
+ attr_accessor :actor_name
21
+ attr_accessor :object_name
22
+
23
+ def initialize(actor)
24
+ @actor_name = actor.name
25
+ @object_name = actor.object.name
26
+ end
27
+ end
28
+
29
+ class SetForwardDirection
30
+ attr_accessor :actor_name
31
+ attr_accessor :dir
32
+
33
+ def initialize(name, dir)
34
+ @actor_name = name
35
+ @dir = dir
36
+ end
37
+ end
38
+
39
+ module Action
40
+ attr_accessor :actor_name
41
+ attr_accessor :forward
42
+ attr_accessor :backward
43
+ attr_accessor :left
44
+ attr_accessor :right
45
+ attr_accessor :jump
46
+
47
+ def reset()
48
+ @forward = false
49
+ @backward = false
50
+ @left = false
51
+ @right = false
52
+ @jump = false
53
+ end
54
+
55
+ end
56
+
57
+ class EnableAction
58
+ include Action
59
+
60
+ def initialize(name)
61
+ @actor_name = name
62
+ reset()
63
+ end
64
+ end
65
+
66
+ class DisableAction
67
+ include Action
68
+
69
+ def initialize(name)
70
+ @actor_name = name
71
+ reset()
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,108 @@
1
+ require 'teien'
2
+
3
+ require_relative '../helpers/user_event'
4
+ require_relative '../helpers/sinbad/sinbad'
5
+
6
+ include Teien
7
+
8
+ class ActorModel < Teien::Model
9
+ attr_accessor :info
10
+ attr_accessor :quit
11
+
12
+ def setup(garden)
13
+ puts "model::setup"
14
+ @remote_to_actors = Hash.new
15
+ @sync_period = 0.5
16
+ @sync_timer = 0
17
+ @quit = false
18
+
19
+ # environment
20
+ @garden.set_gravity(Vector3D.new(0.0, -9.8, 0.0))
21
+ @garden.set_ambient_light(Color.new(0.4, 0.4, 0.4))
22
+ @garden.set_sky_dome(true, "Examples/CloudySky", 5, 8)
23
+
24
+ # light
25
+ object_info = LightObjectInfo.new(LightObjectInfo::DIRECTIONAL)
26
+ object_info.diffuse_color = Color.new(1.0, 1.0, 1.0)
27
+ object_info.specular_color = Color.new(0.25, 0.25, 0)
28
+ object_info.direction = Vector3D.new( -1, -1, -1 )
29
+ light = @garden.create_object("light", object_info, PhysicsInfo.new(0))
30
+ light.set_position(Vector3D.new(0, 0, 0))
31
+
32
+ # create a floor.
33
+ object_info = FloorObjectInfo.new(50, 50, 0.5, 1, 1, 5, 5)
34
+ object_info.material_name = "Examples/Rockwall"
35
+ floor = @garden.create_object("Floor", object_info, PhysicsInfo.new(0))
36
+ floor.set_position(Vector3D.new(0, 0, 0))
37
+
38
+ end
39
+
40
+ def update(delta)
41
+ @sync_timer += delta
42
+ if (@sync_timer > @sync_period)
43
+ @garden.actors.each_value {|actor|
44
+ event = actor.dump_event()
45
+ @garden.send_event(event)
46
+ }
47
+ @sync_timer = 0
48
+ end
49
+ return !@quit
50
+ end
51
+
52
+ def receive_event(event, from)
53
+ # puts event
54
+ case event
55
+ when Event::ClientUnbinded
56
+ actor = @remote_to_actors[from]
57
+ @remote_to_actors.delete(from)
58
+ @garden.actors.delete(actor.name)
59
+ actor.finalize()
60
+ when Event::RequestControllable
61
+ puts "Event::RequestControllable"
62
+
63
+ remote_info = Network.connected_clients[from]
64
+ actor = Sinbad.new(@garden, "Sinbad-#{remote_info.id}")
65
+ @garden.actors[actor.name] = actor
66
+ @remote_to_actors[from] = actor
67
+ event = actor.dump_event()
68
+ @garden.send_event(event)
69
+
70
+ @sinbad = actor
71
+ event = Event::ControllableObject.new(@sinbad.name, @sinbad.object.name)
72
+ @garden.send_event(event, from)
73
+
74
+ when Event::SetForwardDirection
75
+ @remote_to_actors[from].set_forward_direction(event.dir)
76
+ @garden.send_event(event)
77
+ when Event::EnableAction
78
+ if event.forward
79
+ @remote_to_actors[from].move_forward(true)
80
+ elsif event.backward
81
+ @remote_to_actors[from].move_backward(true)
82
+ elsif event.left
83
+ @remote_to_actors[from].move_left(true)
84
+ elsif event.right
85
+ @remote_to_actors[from].move_right(true)
86
+ elsif event.jump
87
+ @remote_to_actors[from].jump(true)
88
+ end
89
+ @garden.send_event(event)
90
+ when Event::DisableAction
91
+ return if (from == nil)
92
+
93
+ if event.forward
94
+ @remote_to_actors[from].move_forward(false)
95
+ elsif event.backward
96
+ @remote_to_actors[from].move_backward(false)
97
+ elsif event.left
98
+ @remote_to_actors[from].move_left(false)
99
+ elsif event.right
100
+ @remote_to_actors[from].move_right(false)
101
+ elsif event.jump
102
+ @remote_to_actors[from].jump(false)
103
+ end
104
+ @garden.send_event(event)
105
+ end
106
+ end
107
+ end
108
+
@@ -0,0 +1,19 @@
1
+ # Defines plugins to load
2
+
3
+ # Define plugin folder
4
+ #PluginFolder=../../../lib/x86-linux/OGRE/
5
+ #PluginFolder=/var/lib/gems/1.9.1/gems/ruby-ogre-0.0.1-x86-linux/lib/OGRE/
6
+ PluginFolder=<SystemPluginFolder>
7
+
8
+ # Define plugins
9
+ # Plugin=RenderSystem_Direct3D9
10
+ # Plugin=RenderSystem_Direct3D10
11
+ # Plugin=RenderSystem_Direct3D11
12
+ Plugin=RenderSystem_GL
13
+ # Plugin=RenderSystem_GLES
14
+ Plugin=Plugin_ParticleFX
15
+ Plugin=Plugin_BSPSceneManager
16
+ Plugin=Plugin_CgProgramManager
17
+ Plugin=Plugin_PCZSceneManager
18
+ Plugin=Plugin_OctreeZone
19
+ Plugin=Plugin_OctreeSceneManager
@@ -0,0 +1,24 @@
1
+ ResourceFolder=<SystemResourceFolder>
2
+
3
+ # Resources required by the sample browser and most samples.
4
+ [Essential]
5
+ Zip=packs/SdkTrays.zip
6
+ FileSystem=/thumbnails/
7
+
8
+ # Resource locations to be added to the default path
9
+ [General]
10
+ Zip=packs/skybox.zip
11
+ Zip=packs/Sinbad.zip
12
+ Zip=packs/dragon.zip
13
+ FileSystem=fonts
14
+ FileSystem=models/
15
+ FileSystem=materials/scripts/
16
+ FileSystem=materials/textures/
17
+ FileSystem=materials/textures/nvidia/
18
+ FileSystem=materials/programs/
19
+ FileSystem=particle
20
+ FileSystem=DeferredShadingMedia
21
+ FileSystem=PCZAppMedia
22
+ FileSystem=RTShaderLib
23
+ FileSystem=RTShaderLib/materials
24
+
@@ -0,0 +1,90 @@
1
+ require_relative '../helpers/user_event'
2
+
3
+ include Teien
4
+
5
+ class HelloGardenController < Teien::Controller
6
+ # handlers of Garden
7
+ def setup(garden)
8
+ puts "controller setup"
9
+ @quit = false
10
+ @ui.set_window_title("SimpleGarden")
11
+
12
+ # set config files.
13
+ fileDir = File.dirname(File.expand_path(__FILE__))
14
+ @garden.plugins_cfg = "#{fileDir}/plugins.cfg"
15
+ @garden.resources_cfg = "#{fileDir}/resources.cfg"
16
+
17
+ @camera_mover = @ui.get_camera().get_mover()
18
+ # @camera_mover.set_style(CameraMover::CS_TPS)
19
+ # @camera_mover.set_target(floor)
20
+ # @camera_mover.set_yaw_pitch_dist(Radian.new(Degree.new(0)), Radian.new(Degree.new(45)), 30.0)
21
+
22
+ @camera_mover.set_position(Vector3D.new(50, 50, 50))
23
+ @camera_mover.look_at(Vector3D.new(0, 0, 0))
24
+
25
+ @ui.show_frame_stats(UI::TL_BOTTOMLEFT)
26
+ @ui.show_logo(UI::TL_BOTTOMRIGHT)
27
+ @ui.hide_cursor()
28
+ end
29
+
30
+ def update(delta)
31
+ @camera_mover.update(delta)
32
+ return !@quit
33
+ end
34
+
35
+ # handlers of UserInterface
36
+ def key_pressed(keyEvent)
37
+ if (keyEvent.key == UI::KC_E)
38
+ @camera_mover.move_forward(true)
39
+ elsif (keyEvent.key == UI::KC_D)
40
+ @camera_mover.move_backward(true)
41
+ elsif (keyEvent.key == UI::KC_S)
42
+ @camera_mover.move_left(true)
43
+ elsif (keyEvent.key == UI::KC_F)
44
+ @camera_mover.move_right(true)
45
+ elsif (keyEvent.key == UI::KC_G)
46
+ if @ui.debug_draw
47
+ @ui.set_debug_draw(false)
48
+ else
49
+ @ui.set_debug_draw(true)
50
+ end
51
+ elsif (keyEvent.key == UI::KC_ESCAPE)
52
+ @garden.quit()
53
+ end
54
+ return true
55
+ end
56
+
57
+ def key_released(keyEvent)
58
+ if (keyEvent.key == UI::KC_ESCAPE)
59
+ @quit =true
60
+ elsif (keyEvent.key == UI::KC_E)
61
+ @camera_mover.move_forward(false)
62
+ elsif (keyEvent.key == UI::KC_D)
63
+ @camera_mover.move_backward(false)
64
+ elsif (keyEvent.key == UI::KC_S)
65
+ @camera_mover.move_left(false)
66
+ elsif (keyEvent.key == UI::KC_F)
67
+ @camera_mover.move_right(false)
68
+ end
69
+ return true
70
+ end
71
+
72
+ def mouse_moved(mouseEvent)
73
+ @camera_mover.mouse_moved(mouseEvent)
74
+ return true
75
+ end
76
+
77
+ def mouse_pressed(mouseEvent, mouseButtonID)
78
+ @camera_mover.mouse_pressed(mouseEvent, mouseButtonID)
79
+ event = Event::ShotBox.new(@ui.get_camera().get_position(),
80
+ @ui.get_camera().get_direction())
81
+ @garden.send_event(event)
82
+ return true
83
+ end
84
+
85
+ def mouse_released(mouseEvent, mouseButtonID)
86
+ @camera_mover.mouse_released(mouseEvent, mouseButtonID)
87
+ return true
88
+ end
89
+ end
90
+
@@ -0,0 +1,12 @@
1
+ require 'teien/event.rb'
2
+
3
+ module Event
4
+ class ShotBox
5
+ attr_accessor :pos
6
+ attr_accessor :dir
7
+ def initialize(pos, dir)
8
+ @pos = pos
9
+ @dir = dir
10
+ end
11
+ end
12
+ end
@@ -1,35 +1,26 @@
1
1
  require 'teien'
2
2
 
3
- include Teien
4
-
5
- class HelloGarden
6
- attr_accessor :info
7
-
8
- def initialize(garden)
9
- @garden = garden
3
+ require_relative '../helpers/user_event'
10
4
 
11
- @garden.set_window_title("SimpleGarden")
5
+ include Teien
12
6
 
7
+ class HelloGardenModel < Teien::Model
8
+ def setup(garden)
9
+ puts "model setup"
13
10
  @quit = false
14
-
15
- # set config files.
16
- fileDir = File.dirname(File.expand_path(__FILE__))
17
- @garden.plugins_cfg = "#{fileDir}/plugins.cfg"
18
- @garden.resources_cfg = "#{fileDir}/resources.cfg"
19
- end
20
-
21
- def setup()
22
- @ui = @garden.create_user_interface()
11
+ @shot_num = 0
23
12
 
24
13
  @garden.set_ambient_light(Color.new(0.1, 0.1, 0.1))
25
14
  @garden.set_sky_dome(true, "Examples/CloudySky", 5, 8)
26
15
  @garden.set_gravity(Vector3D.new(0.0, -9.8, 0.0))
27
16
 
28
- @light = @garden.create_light("directionalLight")
29
- @light.set_type(LightObject::DIRECTIONAL)
30
- @light.set_diffuse_color(Color.new(1.0, 1.0, 1.0))
31
- @light.set_specular_color(Color.new(0.25, 0.25, 0))
32
- @light.set_direction(Vector3D.new( -1, -1, -1 ))
17
+ # create a light
18
+ object_info = LightObjectInfo.new(LightObjectInfo::DIRECTIONAL)
19
+ object_info.diffuse_color = Color.new(1.0, 1.0, 1.0)
20
+ object_info.specular_color = Color.new(0.25, 0.25, 0)
21
+ object_info.direction = Vector3D.new( -1, -1, -1 )
22
+ light = @garden.create_object("light", object_info, PhysicsInfo.new(0))
23
+ light.set_position(Vector3D.new(0, 0, 0))
33
24
 
34
25
  # create a floor.
35
26
  object_info = FloorObjectInfo.new(50, 50, 0.5, 1, 1, 5, 5)
@@ -75,81 +66,36 @@ class HelloGarden
75
66
  pen = @garden.create_object("pen", object_info, PhysicsInfo.new(10))
76
67
  pen.set_position(Vector3D.new(1, 15, 0))
77
68
 
69
+ =begin
78
70
  # create a mesh object
79
71
  object_info = MeshObjectInfo.new("penguin.mesh")
80
72
  object_info.scale = Vector3D.new(1.0 / 20.0, 1.0 / 20.0, 1.0 / 20.0)
81
73
  pen = @garden.create_object("penpen", object_info, PhysicsInfo.new(10))
82
74
  pen.set_position(Vector3D.new(1, 20, 0))
83
-
84
- @ui.set_controller(self)
85
-
86
- @camera_mover = @ui.get_camera().get_mover()
87
- # @camera_mover.set_style(CameraMover::CS_FREELOOK)
88
- # @camera_mover.set_style(CameraMover::CS_ORBIT)
89
- @camera_mover.set_style(CameraMover::CS_TPS)
90
- @camera_mover.set_target(floor)
91
- @camera_mover.set_yaw_pitch_dist(Radian.new(Degree.new(0)), Radian.new(Degree.new(45)), 30.0)
92
- # @camera_mover.set_position(Vector3D.new(20, 20, 20))
93
- # @camera_mover.look_at(Vector3D.new(0, 0, 0))
94
-
95
- @ui.show_frame_stats(UI::TL_BOTTOMLEFT)
96
- @ui.show_logo(UI::TL_BOTTOMRIGHT)
97
- @ui.hide_cursor()
75
+ =end
98
76
  end
99
77
 
100
78
  def update(delta)
101
79
  # print "Garden tick is called: ", evt.timeSinceLastFrame * 1000, "\n"
102
- return false if (@quit) # end of mainloop
103
-
104
- @camera_mover.update(delta)
105
-
106
- return true
80
+ return !@quit
107
81
  end
108
82
 
109
- def key_pressed(keyEvent)
110
- if (keyEvent.key == UI::KC_E)
111
- @camera_mover.move_forward(true)
112
- elsif (keyEvent.key == UI::KC_D)
113
- @camera_mover.move_backward(true)
114
- elsif (keyEvent.key == UI::KC_S)
115
- @camera_mover.move_left(true)
116
- elsif (keyEvent.key == UI::KC_F)
117
- @camera_mover.move_right(true)
83
+ def receive_event(event, from)
84
+ case event
85
+ when Event::ShotBox
86
+ shot_box(event.pos, event.dir)
118
87
  end
119
- return true
120
88
  end
121
89
 
122
- def key_released(keyEvent)
123
- if (keyEvent.key == UI::KC_ESCAPE)
124
- @quit =true
125
- elsif (keyEvent.key == UI::KC_E)
126
- @camera_mover.move_forward(false)
127
- elsif (keyEvent.key == UI::KC_D)
128
- @camera_mover.move_backward(false)
129
- elsif (keyEvent.key == UI::KC_S)
130
- @camera_mover.move_left(false)
131
- elsif (keyEvent.key == UI::KC_F)
132
- @camera_mover.move_right(false)
133
- end
134
- return true
135
- end
136
-
137
- def mouse_moved(mouseEvent)
138
- @camera_mover.mouse_moved(mouseEvent)
139
- return true
140
- end
141
-
142
- def mouse_pressed(mouseEvent, mouseButtonID)
143
- @camera_mover.mouse_pressed(mouseEvent, mouseButtonID)
144
- return true
145
- end
146
-
147
- def mouse_released(mouseEvent, mouseButtonID)
148
- @camera_mover.mouse_released(mouseEvent, mouseButtonID)
149
- return true
90
+ def shot_box(pos, dir)
91
+ object_info = BoxObjectInfo.new(Vector3D.new(1, 1, 1))
92
+ object_info.material_name = "Examples/SphereMappedRustySteel"
93
+ box = @garden.create_object("shotBox#{@shot_num}", object_info, PhysicsInfo.new(1.0))
94
+ box.set_position(pos + (dir * 5.0))
95
+ @shot_num += 1
96
+ force = dir * Vector3D.new(100.0, 100.0, 100.0)
97
+ box.apply_impulse(force, Vector3D.new(0.0, 0.0, 0.0))
98
+ @garden.send_event(Event::SyncObject.new(box))
150
99
  end
151
100
  end
152
101
 
153
-
154
- garden = create_garden(HelloGarden)
155
- garden.run()
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ teien local
4
+
5
+
6
+
data/teien.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.authors = ["abexsoft works"]
9
9
  gem.email = ["abexsoft@gmail.com"]
10
10
  gem.description = %q{An easy 3D world maker.}
11
- gem.summary = %q{An easy 3D world maker. You can create your 3D world with ruby scripts.}
11
+ gem.summary = %q{An easy 3D world maker. You can create your 3D world connected by network with ruby scripts.}
12
12
  gem.homepage = "https://github.com/abexsoft/teien"
13
13
 
14
14
  gem.files = `git ls-files`.split($/)
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
18
 
19
+ gem.add_dependency 'eventmachine'
19
20
  gem.add_dependency 'ruby-ogre'
20
21
  gem.add_dependency 'ruby-bullet'
21
22
  gem.add_dependency 'teienlib'
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.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-05 00:00:00.000000000 Z
12
+ date: 2013-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: eventmachine
16
+ requirement: &79258170 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *79258170
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: ruby-ogre
16
- requirement: &69139330 !ruby/object:Gem::Requirement
27
+ requirement: &79257660 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ! '>='
@@ -21,10 +32,10 @@ dependencies:
21
32
  version: '0'
22
33
  type: :runtime
23
34
  prerelease: false
24
- version_requirements: *69139330
35
+ version_requirements: *79257660
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: ruby-bullet
27
- requirement: &69076700 !ruby/object:Gem::Requirement
38
+ requirement: &79257300 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *69076700
46
+ version_requirements: *79257300
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: teienlib
38
- requirement: &69074190 !ruby/object:Gem::Requirement
49
+ requirement: &79309410 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,7 +54,7 @@ dependencies:
43
54
  version: '0'
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *69074190
57
+ version_requirements: *79309410
47
58
  description: An easy 3D world maker.
48
59
  email:
49
60
  - abexsoft@gmail.com
@@ -59,26 +70,51 @@ files:
59
70
  - Rakefile
60
71
  - bin/teien
61
72
  - lib/teien.rb
73
+ - lib/teien/ai.rb
74
+ - lib/teien/animation.rb
62
75
  - lib/teien/animation_operator.rb
63
76
  - lib/teien/camera.rb
64
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
65
82
  - lib/teien/garden.rb
83
+ - lib/teien/garden_base.rb
66
84
  - lib/teien/garden_object.rb
67
- - lib/teien/light_object.rb
68
- - lib/teien/object_factory.rb
85
+ - lib/teien/model.rb
86
+ - lib/teien/network.rb
69
87
  - lib/teien/object_info.rb
70
88
  - lib/teien/physics.rb
71
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
72
95
  - lib/teien/smooth_mover.rb
96
+ - lib/teien/synchronizer.rb
73
97
  - lib/teien/tools.rb
74
98
  - lib/teien/ui_listener.rb
75
99
  - lib/teien/user_interface.rb
76
100
  - lib/teien/version.rb
77
101
  - lib/teien/view.rb
78
- - sample/standalone/hello_garden/hello_garden.rb
79
- - sample/standalone/hello_garden/plugins.cfg
80
- - sample/standalone/hello_garden/resources.cfg
81
- - sample/standalone/hello_garden/run
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
82
118
  - teien.gemspec
83
119
  homepage: https://github.com/abexsoft/teien
84
120
  licenses: []
@@ -103,5 +139,6 @@ rubyforge_project:
103
139
  rubygems_version: 1.8.11
104
140
  signing_key:
105
141
  specification_version: 3
106
- summary: An easy 3D world maker. You can create your 3D world with ruby scripts.
142
+ summary: An easy 3D world maker. You can create your 3D world connected by network
143
+ with ruby scripts.
107
144
  test_files: []
@@ -1,36 +0,0 @@
1
- require "teien/tools.rb"
2
-
3
- class LightObject
4
- POINT = Ogre::Light::LT_POINT
5
- DIRECTIONAL = Ogre::Light::LT_DIRECTIONAL
6
- SPOTLIGHT = Ogre::Light::LT_SPOTLIGHT
7
-
8
- attr_accessor :name
9
- attr_accessor :light
10
-
11
- def initialize(garden, name)
12
- @garden = garden
13
- @name = name
14
- @light = @garden.view.scene_mgr.create_light(@name);
15
- end
16
-
17
- def set_type(type)
18
- @light.set_type(type)
19
- end
20
-
21
- def set_diffuse_color(color)
22
- @light.set_diffuse_colour(color);
23
- end
24
-
25
- def set_specular_color(color)
26
- @light.set_specular_colour(color)
27
- end
28
-
29
- def set_position(vec)
30
- @light.set_position(Vector3D.to_ogre(vec));
31
- end
32
-
33
- def set_direction(vec)
34
- @light.set_direction(Vector3D.to_ogre(vec));
35
- end
36
- end