teien 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
data/lib/teien/model.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
require 'teien'
|
|
2
|
-
|
|
3
|
-
module Teien
|
|
4
|
-
|
|
5
|
-
class Model
|
|
6
|
-
@@models = Array.new
|
|
7
|
-
@@loaded_models = Array.new
|
|
8
|
-
|
|
9
|
-
@garden = nil
|
|
10
|
-
|
|
11
|
-
def initialize(garden)
|
|
12
|
-
@garden = garden
|
|
13
|
-
@garden.register_receiver(self)
|
|
14
|
-
|
|
15
|
-
=begin
|
|
16
|
-
# set config files.
|
|
17
|
-
fileDir = File.dirname(File.expand_path(__FILE__))
|
|
18
|
-
@garden.plugins_cfg = "#{fileDir}/plugins.cfg"
|
|
19
|
-
@garden.resources_cfg = "#{fileDir}/resources.cfg"
|
|
20
|
-
=end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.inherited(klass)
|
|
24
|
-
@@models.push(klass)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def self.load(garden)
|
|
28
|
-
@@models.each {|ctl|
|
|
29
|
-
@@loaded_models.push(ctl.new(garden))
|
|
30
|
-
}
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
end
|
data/lib/teien/network.rb
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
require 'teien/remote_info'
|
|
2
|
-
|
|
3
|
-
module Teien
|
|
4
|
-
|
|
5
|
-
class Network < EM::Connection
|
|
6
|
-
@@connected_clients = Hash.new
|
|
7
|
-
@@garden = nil
|
|
8
|
-
|
|
9
|
-
def initialize(garden)
|
|
10
|
-
@@garden = garden
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def self.connected_clients
|
|
14
|
-
@@connected_clients
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def post_init
|
|
18
|
-
puts "A client has connected."
|
|
19
|
-
@@connected_clients[self] = RemoteInfo.new(self)
|
|
20
|
-
@@garden.receive_event(Event::ClientConnected.new, self)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def unbind
|
|
24
|
-
puts "A client has unbinded."
|
|
25
|
-
@@garden.receive_event(Event::ClientUnbinded.new, self)
|
|
26
|
-
@@connected_clients.delete(self)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
include EM::P::ObjectProtocol
|
|
30
|
-
|
|
31
|
-
def receive_object(obj)
|
|
32
|
-
@@garden.receive_event(obj, self)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def self.send_all(obj)
|
|
36
|
-
@@connected_clients.each_value { |c|
|
|
37
|
-
c.connection.send_object(obj)
|
|
38
|
-
}
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
=begin
|
|
43
|
-
class ServerNetwork < EM::Connection
|
|
44
|
-
@@connected_clients = Array.new
|
|
45
|
-
|
|
46
|
-
def initialize(event_router)
|
|
47
|
-
@event_router = event_router
|
|
48
|
-
@event_router.register_receiver(Event::ToControllerGroup, self)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def receive_event(event)
|
|
52
|
-
send_all(event)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def post_init
|
|
56
|
-
puts "A client has connected."
|
|
57
|
-
@@connected_clients.push(self)
|
|
58
|
-
@event_router.notify(Event::ClientConnected.new)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def unbind
|
|
62
|
-
puts "A client has unbinded."
|
|
63
|
-
@@connected_clients.delete(self)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
include EM::P::ObjectProtocol
|
|
67
|
-
|
|
68
|
-
def receive_object(obj)
|
|
69
|
-
@event_router.notify(obj)
|
|
70
|
-
# puts "A object is received"
|
|
71
|
-
# obj.print
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def send_all(obj)
|
|
75
|
-
@@connected_clients.each { |c|
|
|
76
|
-
c.send_object(obj)
|
|
77
|
-
}
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
class ClientNetwork < EM::Connection
|
|
82
|
-
def initialize(event_router)
|
|
83
|
-
@event_router = event_router
|
|
84
|
-
@event_router.register_receiver(Event::ToModelGroup, self)
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def receive_event(event)
|
|
88
|
-
send_object(event)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def connection_completed
|
|
92
|
-
puts "The connection is completed."
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def unbind
|
|
96
|
-
puts "The connection is closed."
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
include EM::P::ObjectProtocol
|
|
100
|
-
|
|
101
|
-
def receive_object(obj)
|
|
102
|
-
@event_router.notify(obj)
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
=end
|
|
107
|
-
|
|
108
|
-
end
|
data/lib/teien/object_info.rb
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
module Teien
|
|
2
|
-
|
|
3
|
-
class LightObjectInfo
|
|
4
|
-
POINT = Ogre::Light::LT_POINT
|
|
5
|
-
DIRECTIONAL = Ogre::Light::LT_DIRECTIONAL
|
|
6
|
-
SPOTLIGHT = Ogre::Light::LT_SPOTLIGHT
|
|
7
|
-
|
|
8
|
-
attr_accessor :type
|
|
9
|
-
attr_accessor :diffuse_color
|
|
10
|
-
attr_accessor :specular_color
|
|
11
|
-
attr_accessor :direction
|
|
12
|
-
|
|
13
|
-
def initialize(type,
|
|
14
|
-
diffuse_color = Color.new(1.0, 1.0, 1.0),
|
|
15
|
-
specular_color = Color.new(0.25, 0.25, 0),
|
|
16
|
-
direction = Vector3D.new( -1, -1, -1 ))
|
|
17
|
-
@type = type
|
|
18
|
-
@diffuse_color = diffuse_color
|
|
19
|
-
@specular_color = specular_color
|
|
20
|
-
@direction = direction
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
class MeshBBObjectInfo
|
|
25
|
-
attr_accessor :mesh_path
|
|
26
|
-
attr_accessor :size # Loading mesh only: bounding box size
|
|
27
|
-
attr_accessor :scale # Loading mesh only: scales mesh
|
|
28
|
-
attr_accessor :view_offset # Loading mesh only: offset of Mesh
|
|
29
|
-
attr_accessor :view_rotation # Loading mesh only: rotation offset of Mesh
|
|
30
|
-
attr_accessor :physics_offset # Loading mesh only: offset of collision Box
|
|
31
|
-
attr_accessor :material_name
|
|
32
|
-
|
|
33
|
-
def initialize(mesh_path, size, scale = Vector3D.new(1, 1, 1),
|
|
34
|
-
view_offset = Vector3D.new(0, 0, 0),
|
|
35
|
-
view_rotation = Quaternion.new(0, 0, 0, 1.0),
|
|
36
|
-
physics_offset = Vector3D.new(0, 0, 0))
|
|
37
|
-
@size = size
|
|
38
|
-
@mesh_path = mesh_path
|
|
39
|
-
@scale = scale
|
|
40
|
-
@view_offset = view_offset
|
|
41
|
-
@view_rotation = view_rotation
|
|
42
|
-
@physics_offset = physics_offset
|
|
43
|
-
@material_name = nil
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
class MeshObjectInfo
|
|
48
|
-
attr_accessor :mesh_path
|
|
49
|
-
attr_accessor :scale # Loading mesh only: scales mesh
|
|
50
|
-
attr_accessor :view_offset # Loading mesh only: offset of Mesh
|
|
51
|
-
attr_accessor :view_rotation # Loading mesh only: rotation offset of Mesh
|
|
52
|
-
attr_accessor :physics_offset # Loading mesh only: offset of collision Box
|
|
53
|
-
attr_accessor :material_name
|
|
54
|
-
|
|
55
|
-
def initialize(mesh_path, scale = Vector3D.new(1, 1, 1),
|
|
56
|
-
view_offset = Vector3D.new(0, 0, 0),
|
|
57
|
-
view_rotation = Quaternion.new(0, 0, 0, 1.0),
|
|
58
|
-
physics_offset = Vector3D.new(0, 0, 0))
|
|
59
|
-
@mesh_path = mesh_path
|
|
60
|
-
@scale = scale
|
|
61
|
-
@view_offset = view_offset
|
|
62
|
-
@view_rotation = view_rotation
|
|
63
|
-
@physics_offset = physics_offset
|
|
64
|
-
@material_name = nil
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
class FloorObjectInfo
|
|
69
|
-
attr_accessor :width
|
|
70
|
-
attr_accessor :height
|
|
71
|
-
attr_accessor :depth
|
|
72
|
-
attr_accessor :num_seg_x
|
|
73
|
-
attr_accessor :num_seg_y
|
|
74
|
-
attr_accessor :u_tile
|
|
75
|
-
attr_accessor :v_tile
|
|
76
|
-
attr_accessor :material_name
|
|
77
|
-
|
|
78
|
-
def initialize(width, height, depth = 0.5, num_seg_x = 1, num_seg_y = 1, u_tile = 1.0, v_tile = 1.0)
|
|
79
|
-
@width = width
|
|
80
|
-
@height = height
|
|
81
|
-
@depth = depth
|
|
82
|
-
@num_seg_x = num_seg_x
|
|
83
|
-
@num_seg_y = num_seg_y
|
|
84
|
-
@u_tile = u_tile
|
|
85
|
-
@v_tile = v_tile
|
|
86
|
-
@material_name = nil
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
class BoxObjectInfo
|
|
91
|
-
attr_accessor :size
|
|
92
|
-
attr_accessor :num_seg_x
|
|
93
|
-
attr_accessor :num_seg_y
|
|
94
|
-
attr_accessor :num_seg_z
|
|
95
|
-
attr_accessor :u_tile
|
|
96
|
-
attr_accessor :v_tile
|
|
97
|
-
attr_accessor :material_name
|
|
98
|
-
|
|
99
|
-
def initialize(size, num_seg_x = 1, num_seg_y = 1, num_seg_z = 1, u_tile = 1.0, v_tile = 1.0)
|
|
100
|
-
@size = size
|
|
101
|
-
@num_seg_x = num_seg_x
|
|
102
|
-
@num_seg_y = num_seg_y
|
|
103
|
-
@num_seg_z = num_seg_z
|
|
104
|
-
@u_tile = u_tile
|
|
105
|
-
@v_tile = v_tile
|
|
106
|
-
@material_name = nil
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
class SphereObjectInfo
|
|
111
|
-
attr_accessor :radius
|
|
112
|
-
attr_accessor :num_rings
|
|
113
|
-
attr_accessor :num_segments
|
|
114
|
-
attr_accessor :u_tile
|
|
115
|
-
attr_accessor :v_tile
|
|
116
|
-
attr_accessor :material_name
|
|
117
|
-
|
|
118
|
-
def initialize(radius, num_rings = 16, num_segments = 16, u_tile = 1.0, v_tile = 1.0)
|
|
119
|
-
@radius = radius
|
|
120
|
-
@num_rings = num_rings
|
|
121
|
-
@num_segments = num_segments
|
|
122
|
-
@u_tile = u_tile
|
|
123
|
-
@v_tile = v_tile
|
|
124
|
-
@material_name = nil
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
class CapsuleObjectInfo
|
|
129
|
-
attr_accessor :radius
|
|
130
|
-
attr_accessor :height
|
|
131
|
-
attr_accessor :num_rings
|
|
132
|
-
attr_accessor :num_segments
|
|
133
|
-
attr_accessor :num_seg_height
|
|
134
|
-
attr_accessor :u_tile
|
|
135
|
-
attr_accessor :v_tile
|
|
136
|
-
attr_accessor :material_name
|
|
137
|
-
|
|
138
|
-
def initialize(radius, height, num_rings = 8, num_segments = 16, num_seg_height = 1, u_tile = 1.0, v_tile = 1.0)
|
|
139
|
-
@radius = radius
|
|
140
|
-
@height = height
|
|
141
|
-
@num_rings = num_rings
|
|
142
|
-
@num_segments = num_segments
|
|
143
|
-
@num_seg_height = num_seg_height
|
|
144
|
-
@u_tile = u_tile
|
|
145
|
-
@v_tile = v_tile
|
|
146
|
-
@material_name = nil
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
class ConeObjectInfo
|
|
151
|
-
attr_accessor :radius
|
|
152
|
-
attr_accessor :height
|
|
153
|
-
attr_accessor :num_seg_base
|
|
154
|
-
attr_accessor :num_seg_height
|
|
155
|
-
attr_accessor :u_tile
|
|
156
|
-
attr_accessor :v_tile
|
|
157
|
-
attr_accessor :material_name
|
|
158
|
-
|
|
159
|
-
def initialize(radius, height, num_seg_base = 16, num_seg_height = 1, u_tile = 1.0, v_tile = 1.0)
|
|
160
|
-
@radius = radius
|
|
161
|
-
@height = height
|
|
162
|
-
@num_seg_base = num_seg_base
|
|
163
|
-
@num_seg_height = num_seg_height
|
|
164
|
-
@u_tile = u_tile
|
|
165
|
-
@v_tile = v_tile
|
|
166
|
-
@material_name = nil
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
class CylinderObjectInfo
|
|
171
|
-
attr_accessor :radius
|
|
172
|
-
attr_accessor :height
|
|
173
|
-
attr_accessor :capped
|
|
174
|
-
attr_accessor :num_seg_base
|
|
175
|
-
attr_accessor :num_seg_height
|
|
176
|
-
attr_accessor :u_tile
|
|
177
|
-
attr_accessor :v_tile
|
|
178
|
-
attr_accessor :material_name
|
|
179
|
-
|
|
180
|
-
def initialize(radius, height, capped = true, num_seg_base = 16, num_seg_height = 1, u_tile = 1.0, v_tile = 1.0)
|
|
181
|
-
@radius = radius
|
|
182
|
-
@height = height
|
|
183
|
-
@capped = capped
|
|
184
|
-
@num_seg_base = num_seg_base
|
|
185
|
-
@num_seg_height = num_seg_height
|
|
186
|
-
@u_tile = u_tile
|
|
187
|
-
@v_tile = v_tile
|
|
188
|
-
@material_name = nil
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
end
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
require 'teien/garden_object'
|
|
2
|
-
|
|
3
|
-
module Teien
|
|
4
|
-
|
|
5
|
-
class PhysicsObjectFactory
|
|
6
|
-
def initialize(physics)
|
|
7
|
-
@physics = physics
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def create_object(obj)
|
|
11
|
-
case obj.object_info
|
|
12
|
-
when LightObjectInfo
|
|
13
|
-
return create_light_object(obj)
|
|
14
|
-
when FloorObjectInfo
|
|
15
|
-
return create_floor_object(obj)
|
|
16
|
-
when BoxObjectInfo
|
|
17
|
-
return create_box_object(obj)
|
|
18
|
-
when SphereObjectInfo
|
|
19
|
-
return create_sphere_object(obj)
|
|
20
|
-
when CapsuleObjectInfo
|
|
21
|
-
return create_capsule_object(obj)
|
|
22
|
-
when ConeObjectInfo
|
|
23
|
-
return create_cone_object(obj)
|
|
24
|
-
when CylinderObjectInfo
|
|
25
|
-
return create_cylinder_object(obj)
|
|
26
|
-
when MeshBBObjectInfo
|
|
27
|
-
return create_meshBB_object(obj)
|
|
28
|
-
when MeshObjectInfo
|
|
29
|
-
return create_mesh_object(obj)
|
|
30
|
-
else
|
|
31
|
-
puts "Error: passed no supported object_info."
|
|
32
|
-
return nil
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def create_light_object(obj)
|
|
37
|
-
physics_object = PhysicsObject.new(@physics)
|
|
38
|
-
cShape = Bullet::BtSphereShape.new(0.1)
|
|
39
|
-
inertia = Bullet::BtVector3.new()
|
|
40
|
-
cShape.calculate_local_inertia(0, inertia)
|
|
41
|
-
physics_object.set_rigid_body(obj, cShape, inertia)
|
|
42
|
-
return physics_object
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
#
|
|
46
|
-
# Floor Object
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
# Setting a collision shape and a rigid body of Bullet.
|
|
50
|
-
def create_floor_object(obj)
|
|
51
|
-
physics_object = PhysicsObject.new(@physics)
|
|
52
|
-
cShape = Bullet::BtBoxShape.new(Vector3D.new(obj.object_info.width,
|
|
53
|
-
obj.object_info.depth,
|
|
54
|
-
obj.object_info.height))
|
|
55
|
-
physics_object.set_rigid_body(obj, cShape,
|
|
56
|
-
Vector3D.new(0, 0, 0),
|
|
57
|
-
Vector3D.new(0.0, -obj.object_info.depth, 0.0))
|
|
58
|
-
return physics_object
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
# Box Object
|
|
63
|
-
#
|
|
64
|
-
|
|
65
|
-
def create_box_object(obj)
|
|
66
|
-
physics_object = PhysicsObject.new(@physics)
|
|
67
|
-
cShape = Bullet::BtBoxShape.new(Vector3D.new(obj.object_info.size.x,
|
|
68
|
-
obj.object_info.size.y,
|
|
69
|
-
obj.object_info.size.z))
|
|
70
|
-
inertia = Bullet::BtVector3.new()
|
|
71
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
72
|
-
physics_object.set_rigid_body(obj, cShape, inertia)
|
|
73
|
-
return physics_object
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
#
|
|
77
|
-
# Sphere Object
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
def create_sphere_object(obj)
|
|
81
|
-
physics_object = PhysicsObject.new(@physics)
|
|
82
|
-
cShape = Bullet::BtSphereShape.new(obj.object_info.radius)
|
|
83
|
-
inertia = Bullet::BtVector3.new()
|
|
84
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
85
|
-
physics_object.set_rigid_body(obj, cShape, inertia)
|
|
86
|
-
return physics_object
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Capsule Object
|
|
91
|
-
#
|
|
92
|
-
|
|
93
|
-
def create_capsule_object(obj)
|
|
94
|
-
physics_object = PhysicsObject.new(@physics)
|
|
95
|
-
cShape = Bullet::BtCapsuleShape.new(obj.object_info.radius,
|
|
96
|
-
obj.object_info.height)
|
|
97
|
-
inertia = Bullet::BtVector3.new()
|
|
98
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
99
|
-
physics_object.set_rigid_body(obj, cShape, inertia)
|
|
100
|
-
return physics_object
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
#
|
|
104
|
-
# Cone Object
|
|
105
|
-
#
|
|
106
|
-
|
|
107
|
-
def create_cone_object(obj)
|
|
108
|
-
physics_object = PhysicsObject.new(@physics)
|
|
109
|
-
cShape = Bullet::BtConeShape.new(obj.object_info.radius, obj.object_info.height)
|
|
110
|
-
inertia = Bullet::BtVector3.new()
|
|
111
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
112
|
-
physics_object.set_rigid_body(obj, cShape, inertia,
|
|
113
|
-
Vector3D.new(0, obj.object_info.height / 2, 0))
|
|
114
|
-
return physics_object
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
#
|
|
118
|
-
# Cylinder Object
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
def create_cylinder_object(obj)
|
|
122
|
-
physics_object = PhysicsObject.new(@physics)
|
|
123
|
-
cShape = Bullet::BtCylinderShape.new(Bullet::BtVector3.new(obj.object_info.radius,
|
|
124
|
-
obj.object_info.height / 2,
|
|
125
|
-
obj.object_info.radius))
|
|
126
|
-
inertia = Bullet::BtVector3.new()
|
|
127
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
128
|
-
physics_object.set_rigid_body(obj, cShape, inertia)
|
|
129
|
-
return physics_object
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
#
|
|
133
|
-
# MeshBB Object
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
def create_meshBB_object(obj)
|
|
137
|
-
physics_object = PhysicsObject.new(@physics)
|
|
138
|
-
cShape = Bullet::BtBoxShape.new(obj.object_info.size)
|
|
139
|
-
inertia = Bullet::BtVector3.new()
|
|
140
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
141
|
-
physics_object.set_rigid_body(obj, cShape, inertia, obj.object_info.physics_offset)
|
|
142
|
-
return physics_object
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
#
|
|
146
|
-
# Mesh Object
|
|
147
|
-
#
|
|
148
|
-
|
|
149
|
-
# This method needs the obj.entity to create a collision shape.
|
|
150
|
-
# So it's not support to use this method on server(physics only) currently.
|
|
151
|
-
def add_mesh_object(obj)
|
|
152
|
-
physics_object = PhysicsObject.new(@physics)
|
|
153
|
-
strider = Teienlib::MeshStrider.new(obj.entity.get_mesh().get())
|
|
154
|
-
cShape = Bullet::BtGImpactMeshShape.new(strider)
|
|
155
|
-
cShape.set_local_scaling(Bullet::BtVector3.new(obj.object_info.scale.x,
|
|
156
|
-
obj.object_info.scale.y,
|
|
157
|
-
obj.object_info.scale.z))
|
|
158
|
-
cShape.instance_variable_set(:@strider, strider) # prevent this from GC.
|
|
159
|
-
cShape.post_update()
|
|
160
|
-
cShape.update_bound()
|
|
161
|
-
inertia = Bullet::BtVector3.new()
|
|
162
|
-
cShape.calculate_local_inertia(obj.physics_info.mass, inertia)
|
|
163
|
-
physics_object.set_rigid_body(obj, cShape, inertia,
|
|
164
|
-
obj.object_info.physics_offset)
|
|
165
|
-
return physics_object
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
end
|
data/lib/teien/synchronizer.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Teien
|
|
2
|
-
|
|
3
|
-
class Synchronizer
|
|
4
|
-
def initialize(garden, sync_period)
|
|
5
|
-
@garden = garden
|
|
6
|
-
@garden.register_receiver(self)
|
|
7
|
-
@sync_period = sync_period
|
|
8
|
-
@sync_timer = sync_period
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def setup(garden)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def update(delta)
|
|
15
|
-
@sync_timer += delta
|
|
16
|
-
if (@sync_timer > @sync_period)
|
|
17
|
-
@garden.notify_objects()
|
|
18
|
-
@sync_timer = 0
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def add_actor(actor)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end
|
data/lib/teien/view_object.rb
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
require "teien/animation_operator.rb"
|
|
2
|
-
|
|
3
|
-
module Teien
|
|
4
|
-
|
|
5
|
-
class ViewObject
|
|
6
|
-
# Ogre3D accessor
|
|
7
|
-
## center of view objects(sceneNode) and kept to equal with the rigid_body position.
|
|
8
|
-
attr_accessor :pivot_scene_node
|
|
9
|
-
attr_accessor :scene_node
|
|
10
|
-
attr_accessor :entity
|
|
11
|
-
attr_accessor :animation_operators
|
|
12
|
-
|
|
13
|
-
def initialize(view)
|
|
14
|
-
@view = view
|
|
15
|
-
@pivot_scene_node = nil
|
|
16
|
-
@scene_node = nil
|
|
17
|
-
@entity = nil
|
|
18
|
-
@animation_operators = Hash.new
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def finalize()
|
|
22
|
-
@pivot_scene_node.remove_child(@scene_node)
|
|
23
|
-
@view.scene_mgr.destroySceneNode(@scene_node)
|
|
24
|
-
@view.scene_mgr.get_root_scene_node.remove_child(@pivot_scene_node)
|
|
25
|
-
@view.scene_mgr.destroySceneNode(@pivot_scene_node)
|
|
26
|
-
@view.scene_mgr.destroyEntity(@entity)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def update_animation(delta, animation)
|
|
30
|
-
animation.operators.each_pair{|key, value|
|
|
31
|
-
unless @animation_operators[key]
|
|
32
|
-
@entity.get_skeleton().set_blend_mode(animation.blend_mode)
|
|
33
|
-
ani_ope = AnimationOperator.new(@entity)
|
|
34
|
-
ani_ope.init(value.name, value.loop)
|
|
35
|
-
@animation_operators[key] = ani_ope
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
if (value.name != @animation_operators[key].name ||
|
|
39
|
-
value.loop != @animation_operators[key].loop)
|
|
40
|
-
@animation_operators[key].play(value.name, value.loop)
|
|
41
|
-
end
|
|
42
|
-
@animation_operators[key].add_time(delta * value.speed)
|
|
43
|
-
}
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
# The offset changes the local position of the created scene_node in Object.
|
|
48
|
-
#
|
|
49
|
-
def set_scene_node(entity, offset = Vector3D.new(0, 0, 0), rotate = Quaternion.new(0, 0, 0, 1.0))
|
|
50
|
-
if (@pivot_scene_node == nil)
|
|
51
|
-
@pivot_scene_node = @view.scene_mgr.get_root_scene_node().create_child_scene_node()
|
|
52
|
-
end
|
|
53
|
-
@scene_node = @pivot_scene_node.create_child_scene_node(Vector3D.to_ogre(offset),
|
|
54
|
-
Quaternion.to_ogre(rotate))
|
|
55
|
-
@pivot_scene_node.instance_variable_set(:@child, @scene_node) # prevent this from GC.
|
|
56
|
-
|
|
57
|
-
if entity
|
|
58
|
-
@scene_node.attach_object(entity)
|
|
59
|
-
@entity = entity
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
return @scene_node
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|