teien 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -5
- data/bin/teien +36 -37
- data/lib/teien/{smooth_mover.rb → action_model/smooth_moving.rb} +19 -3
- data/lib/teien/actor/actor.rb +21 -0
- data/{sample/actor/app/helpers/user_event.rb → lib/teien/actor/actor_event.rb} +41 -32
- data/lib/teien/actor/actor_factory.rb +20 -0
- data/lib/teien/actor/actor_info.rb +7 -0
- data/lib/teien/actor/actor_manager.rb +31 -0
- data/lib/teien/actor/actor_manager_proxy.rb +72 -0
- data/lib/teien/addon/addon.rb +25 -0
- data/lib/teien/{animation.rb → animation/animation.rb} +1 -0
- data/lib/teien/animation/animation_event.rb +17 -0
- data/lib/teien/animation/animation_manager.rb +23 -0
- data/lib/teien/animation/animation_manager_proxy.rb +27 -0
- data/lib/teien/application/application.rb +43 -0
- data/lib/teien/base_object/attachment_info.rb +15 -0
- data/lib/teien/{garden_object.rb → base_object/base_object.rb} +43 -52
- data/lib/teien/{event.rb → base_object/base_object_event.rb} +9 -12
- data/lib/teien/base_object/base_object_manager.rb +57 -0
- data/lib/teien/{garden_base.rb → base_object/base_object_manager_base.rb} +22 -31
- data/lib/teien/{proxy_garden.rb → base_object/base_object_manager_proxy.rb} +20 -62
- data/lib/teien/base_object/object_info.rb +21 -0
- data/lib/teien/{physics.rb → base_object/physics.rb} +4 -5
- data/lib/teien/{physics_info.rb → base_object/physics_info.rb} +1 -0
- data/lib/teien/base_object/physics_object_factory.rb +23 -0
- data/lib/teien/base_object/std_objects/box_object_info.rb +42 -0
- data/lib/teien/base_object/std_objects/capsule_object_info.rb +44 -0
- data/lib/teien/base_object/std_objects/cone_object_info.rb +41 -0
- data/lib/teien/base_object/std_objects/cylinder_object_info.rb +44 -0
- data/lib/teien/base_object/std_objects/floor_object_info.rb +45 -0
- data/lib/teien/base_object/std_objects/light_object_info.rb +40 -0
- data/lib/teien/base_object/std_objects/mesh_bb_object_info.rb +42 -0
- data/lib/teien/base_object/std_objects/mesh_object_info.rb +62 -0
- data/lib/teien/base_object/std_objects/sphere_object_info.rb +38 -0
- data/lib/teien/commands/browser_command.rb +46 -0
- data/lib/teien/commands/local_command.rb +21 -0
- data/lib/teien/commands/server_command.rb +39 -0
- data/lib/teien/commands/std_command.rb +71 -0
- data/lib/teien/core/client_network.rb +26 -0
- data/lib/teien/core/component_manager.rb +11 -0
- data/lib/teien/core/core_event.rb +7 -0
- data/lib/teien/core/dispatcher.rb +30 -0
- data/lib/teien/core/event_router.rb +116 -0
- data/lib/teien/core/launcher.rb +31 -0
- data/lib/teien/core/network.rb +28 -0
- data/lib/teien/{remote_info.rb → core/remote_info.rb} +6 -1
- data/lib/teien/core/server_network.rb +23 -0
- data/lib/teien/{tools.rb → core/tools.rb} +2 -2
- data/lib/teien/{camera.rb → ui/camera.rb} +1 -1
- data/lib/teien/{camera_mover.rb → ui/camera_mover.rb} +1 -2
- data/lib/teien/ui/std_objects/box_object_info.rb +29 -0
- data/lib/teien/ui/std_objects/capsule_object_info.rb +28 -0
- data/lib/teien/ui/std_objects/cone_object_info.rb +25 -0
- data/lib/teien/ui/std_objects/cylinder_object_info.rb +26 -0
- data/lib/teien/ui/std_objects/floor_object_info.rb +34 -0
- data/lib/teien/ui/std_objects/light_object_info.rb +23 -0
- data/lib/teien/ui/std_objects/mesh_bb_object_info.rb +24 -0
- data/lib/teien/ui/std_objects/mesh_object_info.rb +24 -0
- data/lib/teien/ui/std_objects/sphere_object_info.rb +26 -0
- data/lib/teien/{user_interface.rb → ui/user_interface.rb} +18 -13
- data/lib/teien/{view.rb → ui/view.rb} +42 -20
- data/lib/teien/ui/view_object.rb +142 -0
- data/lib/teien/ui/view_object_factory.rb +23 -0
- data/lib/teien/version.rb +1 -1
- data/lib/teien.rb +3 -78
- data/mods/actor/addons/sinbad/lib/sinbad/sinbad_info.rb +16 -0
- data/{sample/actor/app/helpers → mods/actor/addons/sinbad/lib}/sinbad/sinbad_state.rb +14 -39
- data/mods/actor/addons/sinbad/lib/sinbad.rb +180 -0
- data/mods/actor/apps/browser/browser_application.rb +185 -0
- data/mods/actor/apps/common/browser_event.rb +68 -0
- data/mods/actor/apps/server/server_application.rb +101 -0
- data/{sample/actor/app/ais → mods/actor/commands/ai}/actor_ai.rb +8 -3
- data/mods/actor/commands/ai_command.rb +20 -0
- data/{sample/actor/config → mods/actor/configs}/plugins.cfg +4 -4
- data/{sample/hello_garden/app/controllers/hello_garden_controller.rb → mods/hello_garden/apps/browser/browser_application.rb} +48 -25
- data/mods/hello_garden/apps/common/browser_event.rb +58 -0
- data/{sample/hello_garden/app/models/hello_garden_model.rb → mods/hello_garden/apps/server/server_application.rb} +35 -26
- data/teien.gemspec +3 -1
- metadata +114 -55
- data/lib/teien/ai.rb +0 -27
- data/lib/teien/controller.rb +0 -30
- data/lib/teien/dispatcher.rb +0 -22
- data/lib/teien/event_router.rb +0 -118
- data/lib/teien/garden.rb +0 -91
- data/lib/teien/model.rb +0 -34
- data/lib/teien/network.rb +0 -108
- data/lib/teien/object_info.rb +0 -192
- data/lib/teien/physics_object_factory.rb +0 -170
- data/lib/teien/synchronizer.rb +0 -26
- data/lib/teien/view_object.rb +0 -67
- data/lib/teien/view_object_factory.rb +0 -210
- data/sample/actor/app/controllers/actor_controller.rb +0 -182
- data/sample/actor/app/helpers/sinbad/sinbad.rb +0 -176
- data/sample/actor/app/models/actor_model.rb +0 -108
- data/sample/hello_garden/app/helpers/user_event.rb +0 -12
- /data/lib/teien/{animation_operator.rb → animation/animation_operator.rb} +0 -0
- /data/lib/teien/{physics_object.rb → base_object/physics_object.rb} +0 -0
- /data/lib/teien/{sky_dome.rb → base_object/sky_dome.rb} +0 -0
- /data/lib/teien/{ui_listener.rb → ui/ui_listener.rb} +0 -0
- /data/{sample/actor/config → mods/actor/configs}/resources.cfg +0 -0
- /data/{sample/hello_garden/config → mods/hello_garden/configs}/plugins.cfg +0 -0
- /data/{sample/hello_garden/config → mods/hello_garden/configs}/resources.cfg +0 -0
- /data/{sample → mods}/hello_garden/run +0 -0
@@ -1,61 +1,70 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative '../helpers/user_event'
|
1
|
+
require_relative '../common/browser_event'
|
4
2
|
|
5
3
|
include Teien
|
6
4
|
|
7
|
-
class
|
8
|
-
def setup(
|
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
|
-
@
|
14
|
-
@
|
15
|
-
@
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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::
|
86
|
-
|
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 = @
|
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
|
-
@
|
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-
|
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
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *74612360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name: ruby-
|
27
|
-
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: *
|
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: &
|
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: *
|
68
|
+
version_requirements: *74609840
|
47
69
|
- !ruby/object:Gem::Dependency
|
48
70
|
name: teienlib
|
49
|
-
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: *
|
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/
|
74
|
-
- lib/teien/
|
75
|
-
- lib/teien/
|
76
|
-
- lib/teien/
|
77
|
-
- lib/teien/
|
78
|
-
- lib/teien/
|
79
|
-
- lib/teien/
|
80
|
-
- lib/teien/
|
81
|
-
- lib/teien/
|
82
|
-
- lib/teien/
|
83
|
-
- lib/teien/
|
84
|
-
- lib/teien/
|
85
|
-
- lib/teien/
|
86
|
-
- lib/teien/
|
87
|
-
- lib/teien/
|
88
|
-
- lib/teien/
|
89
|
-
- lib/teien/
|
90
|
-
- lib/teien/
|
91
|
-
- lib/teien/
|
92
|
-
- lib/teien/
|
93
|
-
- lib/teien/
|
94
|
-
- lib/teien/
|
95
|
-
- lib/teien/
|
96
|
-
- lib/teien/
|
97
|
-
- lib/teien/
|
98
|
-
- lib/teien/
|
99
|
-
- lib/teien/
|
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/
|
102
|
-
- lib/
|
103
|
-
- lib/
|
104
|
-
-
|
105
|
-
-
|
106
|
-
-
|
107
|
-
-
|
108
|
-
-
|
109
|
-
-
|
110
|
-
-
|
111
|
-
-
|
112
|
-
-
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
116
|
-
-
|
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
|
data/lib/teien/controller.rb
DELETED
@@ -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
|
data/lib/teien/dispatcher.rb
DELETED
@@ -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
|
data/lib/teien/event_router.rb
DELETED
@@ -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
|