teien 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/teien +3 -3
- data/lib/teien/animation_operator.rb +45 -45
- data/lib/teien/camera.rb +2 -2
- data/lib/teien/camera_mover.rb +43 -41
- data/lib/teien/garden.rb +7 -7
- data/lib/teien/garden_object.rb +50 -50
- data/lib/teien/light_object.rb +6 -6
- data/lib/teien/object_factory.rb +96 -90
- data/lib/teien/physics.rb +17 -17
- data/lib/teien/smooth_mover.rb +13 -13
- data/lib/teien/ui_listener.rb +14 -14
- data/lib/teien/user_interface.rb +159 -159
- data/lib/teien/version.rb +1 -1
- data/lib/teien/view.rb +58 -58
- data/lib/teien.rb +6 -6
- metadata +8 -8
data/lib/teien/view.rb
CHANGED
@@ -41,7 +41,7 @@ class View < Ogre::FrameListener
|
|
41
41
|
load_plugins()
|
42
42
|
|
43
43
|
# return false unless (@root.restoreConfig())
|
44
|
-
return false unless (@root.
|
44
|
+
return false unless (@root.show_config_dialog())
|
45
45
|
|
46
46
|
@window = @root.initialise(true, @window_title)
|
47
47
|
|
@@ -56,14 +56,14 @@ class View < Ogre::FrameListener
|
|
56
56
|
cfg = Ogre::ConfigFile.new
|
57
57
|
cfg.load(@plugins_cfg)
|
58
58
|
|
59
|
-
pluginDir = cfg.
|
59
|
+
pluginDir = cfg.get_setting("PluginFolder")
|
60
60
|
pluginDir += "/" if (pluginDir.length > 0) && (pluginDir[-1] != '/')
|
61
61
|
|
62
|
-
cfg.
|
62
|
+
cfg.each_settings {|secName, keyName, valueName|
|
63
63
|
fullPath = pluginDir + valueName
|
64
64
|
fullPath.sub!("<ConfigFileFolder>", File.dirname(@garden.plugins_cfg)) if @garden.resources_cfg
|
65
|
-
fullPath.sub!("<SystemPluginFolder>", OgreConfig::
|
66
|
-
@root.
|
65
|
+
fullPath.sub!("<SystemPluginFolder>", OgreConfig::get_plugin_folder)
|
66
|
+
@root.load_plugin(fullPath) if (keyName == "Plugin")
|
67
67
|
}
|
68
68
|
end
|
69
69
|
|
@@ -73,95 +73,95 @@ class View < Ogre::FrameListener
|
|
73
73
|
cfg = Ogre::ConfigFile.new
|
74
74
|
cfg.load(@resources_cfg)
|
75
75
|
|
76
|
-
resourceDir = cfg.
|
76
|
+
resourceDir = cfg.get_setting("ResourceFolder")
|
77
77
|
resourceDir += "/" if (resourceDir.length > 0) && (resourceDir[-1] != '/')
|
78
78
|
|
79
|
-
cfg.
|
79
|
+
cfg.each_settings {|secName, keyName, valueName|
|
80
80
|
next if (keyName == "ResourceFolder")
|
81
81
|
|
82
82
|
fullPath = resourceDir + valueName
|
83
83
|
if @garden.resources_cfg
|
84
84
|
fullPath.sub!("<ConfigFileFolder>", File.dirname(@garden.resources_cfg))
|
85
85
|
end
|
86
|
-
fullPath.sub!("<SystemResourceFolder>", OgreConfig::
|
86
|
+
fullPath.sub!("<SystemResourceFolder>", OgreConfig::get_resource_folder)
|
87
87
|
|
88
|
-
Ogre::ResourceGroupManager::
|
89
|
-
|
90
|
-
|
88
|
+
Ogre::ResourceGroupManager::get_singleton().add_resource_location(fullPath,
|
89
|
+
keyName,
|
90
|
+
secName)
|
91
91
|
}
|
92
92
|
end
|
93
93
|
|
94
94
|
def init_managers
|
95
|
-
@root.
|
95
|
+
@root.add_frame_listener(self)
|
96
96
|
|
97
97
|
# initialize InputManager
|
98
98
|
windowHnd = Ogre::Intp.new
|
99
|
-
@window.
|
99
|
+
@window.get_custom_attribute("WINDOW", windowHnd)
|
100
100
|
windowHndStr = sprintf("%d", windowHnd.value())
|
101
|
-
pl =
|
101
|
+
pl = Ois::ParamList.new
|
102
102
|
pl["WINDOW"] = windowHndStr
|
103
103
|
|
104
104
|
# initialize input manager
|
105
|
-
@inputManager =
|
106
|
-
@keyboard = @inputManager.
|
107
|
-
@mouse = @inputManager.
|
105
|
+
@inputManager = Ois::InputManager::create_input_system(pl)
|
106
|
+
@keyboard = @inputManager.create_input_object(Ois::OISKeyboard, true).to_keyboard()
|
107
|
+
@mouse = @inputManager.create_input_object(Ois::OISMouse, true).to_mouse()
|
108
108
|
|
109
109
|
# initialize trayManager
|
110
|
-
Ogre::ResourceGroupManager::
|
111
|
-
@tray_mgr =
|
112
|
-
ms = @mouse.
|
113
|
-
ms.width = @window.
|
114
|
-
ms.height = @window.
|
110
|
+
Ogre::ResourceGroupManager::get_singleton().initialise_resource_group("Essential")
|
111
|
+
@tray_mgr = Ogrebites::SdkTrayManager.new("Base", @window, @mouse);
|
112
|
+
ms = @mouse.get_mouse_state()
|
113
|
+
ms.width = @window.get_width()
|
114
|
+
ms.height = @window.get_height()
|
115
115
|
end
|
116
116
|
|
117
117
|
def start(script)
|
118
118
|
@script = script
|
119
119
|
|
120
120
|
# initialize scene_mgr
|
121
|
-
@scene_mgr = @root.
|
122
|
-
@scene_mgr.
|
121
|
+
@scene_mgr = @root.create_scene_manager(Ogre::ST_GENERIC)
|
122
|
+
@scene_mgr.set_shadow_technique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE)
|
123
123
|
|
124
124
|
# initialize a camera
|
125
|
-
@camera = @scene_mgr.
|
125
|
+
@camera = @scene_mgr.create_camera("FixCamera")
|
126
126
|
# Create one viewport, entire window
|
127
|
-
@vp = @window.
|
128
|
-
@vp.
|
127
|
+
@vp = @window.add_viewport(@camera)
|
128
|
+
@vp.set_background_colour(Ogre::ColourValue.new(0, 0, 0))
|
129
129
|
# Alter the camera aspect ratio to match the viewport
|
130
|
-
@camera.
|
130
|
+
@camera.set_aspect_ratio(Float(@vp.get_actual_width()) / Float(@vp.get_actual_height()));
|
131
131
|
|
132
132
|
# set listeners.
|
133
133
|
@keyListener = KeyListener.new(self)
|
134
|
-
@keyboard.
|
134
|
+
@keyboard.set_event_callback(@keyListener)
|
135
135
|
@mouseListener = MouseListener.new(self)
|
136
|
-
@mouse.
|
136
|
+
@mouse.set_event_callback(@mouseListener)
|
137
137
|
@trayListener = TrayListener.new(@script)
|
138
|
-
@tray_mgr.
|
138
|
+
@tray_mgr.set_listener(@trayListener)
|
139
139
|
|
140
140
|
# load resources into ResourceGroupManager.
|
141
|
-
@tray_mgr.
|
142
|
-
Ogre::ResourceGroupManager::
|
143
|
-
@tray_mgr.
|
144
|
-
Ogre::TextureManager::
|
141
|
+
@tray_mgr.show_loading_bar(1, 0)
|
142
|
+
Ogre::ResourceGroupManager::get_singleton().initialise_resource_group("General")
|
143
|
+
@tray_mgr.hide_loading_bar()
|
144
|
+
Ogre::TextureManager::get_singleton().set_default_num_mipmaps(5)
|
145
145
|
end
|
146
146
|
|
147
147
|
def prepare_render_loop
|
148
|
-
@root.
|
149
|
-
@root.
|
148
|
+
@root.get_render_system()._init_render_targets()
|
149
|
+
@root.clear_event_times()
|
150
150
|
end
|
151
151
|
|
152
152
|
def stop
|
153
|
-
@scene_mgr.
|
154
|
-
@root.
|
153
|
+
@scene_mgr.clear_scene() if (@scene_mgr != nil)
|
154
|
+
@root.destroy_scene_manager(@scene_mgr) if (@scene_mgr != nil)
|
155
155
|
@scene_mgr = nil
|
156
|
-
@window.
|
157
|
-
@tray_mgr.
|
156
|
+
@window.remove_all_viewports()
|
157
|
+
@tray_mgr.destroy_all_widgets()
|
158
158
|
end
|
159
159
|
|
160
160
|
def finalize
|
161
161
|
stop()
|
162
162
|
if (@inputManger != nil)
|
163
|
-
@inputManager.
|
164
|
-
@inputManager.
|
163
|
+
@inputManager.destroy_input_object(@keyboard)
|
164
|
+
@inputManager.destroy_input_object(@mouse)
|
165
165
|
@inputManager = nil
|
166
166
|
end
|
167
167
|
@root.shutdown()
|
@@ -169,46 +169,46 @@ class View < Ogre::FrameListener
|
|
169
169
|
|
170
170
|
def create_scene_node(parent = nil)
|
171
171
|
if (parent == nil)
|
172
|
-
scene_node = @scene_mgr.
|
172
|
+
scene_node = @scene_mgr.get_root_scene_node().create_child_scene_node()
|
173
173
|
else
|
174
|
-
scene_node = parent.
|
174
|
+
scene_node = parent.create_child_scene_node()
|
175
175
|
end
|
176
176
|
return scene_node
|
177
177
|
end
|
178
178
|
|
179
179
|
# Takes a screen shot.
|
180
180
|
def take_screen_shot(name)
|
181
|
-
@window.
|
181
|
+
@window.write_contents_to_timestamped_file(name + "_", ".png")
|
182
182
|
end
|
183
183
|
|
184
184
|
# Shows the animation infomation of the entity.
|
185
185
|
def show_all_animation(entity)
|
186
186
|
puts "Animations:"
|
187
|
-
animSet = entity.
|
188
|
-
animSet.
|
189
|
-
puts "name: #{state.
|
187
|
+
animSet = entity.get_all_animation_states()
|
188
|
+
animSet.each_animation_state() {|state|
|
189
|
+
puts "name: #{state.get_animation_name()}, len: #{state.get_length()}"
|
190
190
|
}
|
191
191
|
end
|
192
192
|
|
193
193
|
# Called by the main loop periodically
|
194
194
|
def update(delta)
|
195
|
-
Ogre::WindowEventUtilities.
|
196
|
-
return @root.
|
195
|
+
Ogre::WindowEventUtilities.message_pump()
|
196
|
+
return @root.render_one_frame(delta)
|
197
197
|
end
|
198
198
|
|
199
199
|
# Called through @root.renderOneFrame(delta).
|
200
|
-
def
|
200
|
+
def frame_rendering_queued(evt)
|
201
201
|
@keyboard.capture()
|
202
202
|
@mouse.capture()
|
203
203
|
@controller.update(evt.timeSinceLastFrame) if @controller
|
204
204
|
|
205
|
-
@tray_mgr.
|
205
|
+
@tray_mgr.frame_rendering_queued(evt)
|
206
206
|
if (@adjustFlag != true)
|
207
|
-
@tray_mgr.
|
207
|
+
@tray_mgr.adjust_trays() # fix a caption invisible bug.
|
208
208
|
@adjustFlag = true
|
209
209
|
end
|
210
210
|
|
211
|
-
return @garden.
|
211
|
+
return @garden.update_in_frame_rendering_queued(evt.timeSinceLastFrame)
|
212
212
|
end
|
213
213
|
|
214
214
|
def key_pressed(keyEvent)
|
@@ -222,19 +222,19 @@ class View < Ogre::FrameListener
|
|
222
222
|
end
|
223
223
|
|
224
224
|
def mouse_moved(evt)
|
225
|
-
return true if @tray_mgr.
|
225
|
+
return true if @tray_mgr.inject_mouse_move(evt)
|
226
226
|
return true if @controller == nil
|
227
227
|
return @controller.mouse_moved(evt)
|
228
228
|
end
|
229
229
|
|
230
230
|
def mouse_pressed(mouseEvent, mouseButtonID)
|
231
|
-
return true if @tray_mgr.
|
231
|
+
return true if @tray_mgr.inject_mouse_down(mouseEvent, mouseButtonID)
|
232
232
|
return true if @controller == nil
|
233
233
|
return @controller.mouse_pressed(mouseEvent, mouseButtonID)
|
234
234
|
end
|
235
235
|
|
236
236
|
def mouse_released(mouseEvent, mouseButtonID)
|
237
|
-
return true if @tray_mgr.
|
237
|
+
return true if @tray_mgr.inject_mouse_up(mouseEvent, mouseButtonID)
|
238
238
|
return true if @controller == nil
|
239
239
|
return @controller.mouse_released(mouseEvent, mouseButtonID)
|
240
240
|
end
|
data/lib/teien.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require "teien/version"
|
2
2
|
|
3
|
-
require "
|
4
|
-
require "
|
5
|
-
require "
|
6
|
-
require "
|
7
|
-
require "
|
8
|
-
require "
|
3
|
+
require "bullet.so"
|
4
|
+
require "ogre.so"
|
5
|
+
require "procedural.so"
|
6
|
+
require "ois.so"
|
7
|
+
require "ogrebites.so"
|
8
|
+
require "teienlib.so"
|
9
9
|
|
10
10
|
require "teien/tools.rb"
|
11
11
|
require 'teien/light_object'
|
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.0.2
|
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: 2012-
|
12
|
+
date: 2012-10-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-ogre
|
16
|
-
requirement: &
|
16
|
+
requirement: &69139330 !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: *69139330
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby-bullet
|
27
|
-
requirement: &
|
27
|
+
requirement: &69076700 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *69076700
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: teienlib
|
38
|
-
requirement: &
|
38
|
+
requirement: &69074190 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *69074190
|
47
47
|
description: An easy 3D world maker.
|
48
48
|
email:
|
49
49
|
- abexsoft@gmail.com
|