teien 0.0.2 → 0.0.3

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