teienlib 0.0.2-x86-linux → 0.0.3-x86-linux
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/Rakefile +4 -4
- data/ext/teienlib/extconf.rb +1 -1
- data/ext/teienlib/interface/Rakefile +5 -5
- data/ext/teienlib/interface/teienlib.i +1 -1
- data/lib/teienlib/version.rb +1 -1
- data/lib/{Teienlib.so → teienlib.so} +0 -0
- data/sample/hello/box.rb +21 -21
- data/sample/hello/camera_mover.rb +36 -36
- data/sample/hello/floor.rb +16 -16
- data/sample/hello/hello +1 -1
- data/sample/hello/hello.rb +87 -88
- data/sample/hello/ui_listener.rb +12 -12
- metadata +7 -7
data/Rakefile
CHANGED
@@ -4,18 +4,18 @@ require 'rake/clean'
|
|
4
4
|
DLEXT = RbConfig::MAKEFILE_CONFIG['DLEXT']
|
5
5
|
|
6
6
|
desc 'Compile a teienlib extension library'
|
7
|
-
task "compile" => ["lib/
|
7
|
+
task "compile" => ["lib/teienlib.#{DLEXT}"]
|
8
8
|
|
9
9
|
## lib/*.#{DLEXT}
|
10
|
-
file "lib/
|
10
|
+
file "lib/teienlib.#{DLEXT}" => "ext/teienlib/teienlib.#{DLEXT}" do |f|
|
11
11
|
cp f.prerequisites, "lib/", :preserve => true
|
12
12
|
end
|
13
13
|
|
14
14
|
## ext/**/*.#{DLEXT}
|
15
|
-
file "ext/teienlib/
|
15
|
+
file "ext/teienlib/teienlib.#{DLEXT}" => FileList["ext/teienlib/Makefile"] do |f|
|
16
16
|
sh 'cd ext/teienlib/ && make clean && make'
|
17
17
|
end
|
18
|
-
CLEAN.include 'ext/
|
18
|
+
CLEAN.include 'ext/teienlib/*.{o,so,dll}'
|
19
19
|
|
20
20
|
## ext/**/Makefile
|
21
21
|
file 'ext/teienlib/Makefile' => FileList['ext/teienlib/interface/teienlib_wrap.cpp'] do
|
data/ext/teienlib/extconf.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
SWIG = 'swig'
|
2
2
|
|
3
|
-
BULLET_TOP = `ruby -e "require '
|
4
|
-
BULLET_INC = `ruby -e "require '
|
3
|
+
BULLET_TOP = `ruby -e "require 'bullet_config'; print BulletConfig.get_top_dir"`
|
4
|
+
BULLET_INC = `ruby -e "require 'bullet_config'; print BulletConfig.get_inc_flags"`
|
5
5
|
|
6
|
-
OGRE_TOP = `ruby -e "require '
|
7
|
-
OGRE_INC = `ruby -e "require '
|
6
|
+
OGRE_TOP = `ruby -e "require 'ogre_config'; print OgreConfig.get_top_dir"`
|
7
|
+
OGRE_INC = `ruby -e "require 'ogre_config'; print OgreConfig.get_inc_flags"`
|
8
8
|
|
9
|
-
SWIGFLAGS = "-ruby -c++ #{BULLET_INC} #{OGRE_INC} -I../src/ -I#{BULLET_TOP}/bindings/bullet/interface -I#{OGRE_TOP}/bindings/ogre/interface"
|
9
|
+
SWIGFLAGS = "-ruby -c++ #{BULLET_INC} #{OGRE_INC} -I../src/ -I#{BULLET_TOP}/bindings/bullet/interface -I#{OGRE_TOP}/bindings/ogre/interface -autorename"
|
10
10
|
|
11
11
|
|
12
12
|
TARGET = 'teienlib_wrap.cpp'
|
data/lib/teienlib/version.rb
CHANGED
Binary file
|
data/sample/hello/box.rb
CHANGED
@@ -19,50 +19,50 @@ class Box < Bullet::BtMotionState
|
|
19
19
|
# create a physics object.
|
20
20
|
@colObj = Bullet::BtBoxShape.new(Bullet::BtVector3.new(x, y, z))
|
21
21
|
inertia = Bullet::BtVector3.new()
|
22
|
-
@colObj.
|
22
|
+
@colObj.calculate_local_inertia(mass, inertia)
|
23
23
|
@rigid_body = Bullet::BtRigidBody.new(mass, self, @colObj, inertia)
|
24
|
-
dynamics_world.
|
24
|
+
dynamics_world.add_rigid_body(@rigid_body)
|
25
25
|
|
26
26
|
# create a view object.
|
27
27
|
gen = Procedural::BoxGenerator.new()
|
28
|
-
gen.
|
29
|
-
gen.
|
30
|
-
gen.
|
31
|
-
@entity = scene_mgr.
|
32
|
-
@entity.
|
33
|
-
@entity.
|
34
|
-
@scene_node = scene_mgr.
|
35
|
-
@scene_node.
|
28
|
+
gen.set_size_x(x * 2.0).set_size_y(y * 2.0).set_size_z(z * 2.0)
|
29
|
+
gen.set_num_seg_x(1).set_num_seg_y(1).set_num_seg_z(1)
|
30
|
+
gen.set_utile(1.0).set_vtile(1.0).realize_mesh(@name)
|
31
|
+
@entity = scene_mgr.create_entity(@name)
|
32
|
+
@entity.set_cast_shadows(true)
|
33
|
+
@entity.set_material_name("Examples/BumpyMetal")
|
34
|
+
@scene_node = scene_mgr.get_root_scene_node().create_child_scene_node()
|
35
|
+
@scene_node.attach_object(@entity)
|
36
36
|
|
37
37
|
# position/rotation
|
38
38
|
@transform = Bullet::BtTransform.new()
|
39
|
-
@transform.
|
39
|
+
@transform.set_identity()
|
40
40
|
end
|
41
41
|
|
42
42
|
# called through Bullet::BtMotionState when this rigid_body transform is changed
|
43
43
|
# on bullet simulation step.
|
44
|
-
def
|
44
|
+
def set_world_transform(worldTrans)
|
45
45
|
@transform = Bullet::BtTransform.new(worldTrans)
|
46
|
-
newPos = @transform.
|
47
|
-
newRot = @transform.
|
46
|
+
newPos = @transform.get_origin()
|
47
|
+
newRot = @transform.get_rotation()
|
48
48
|
return if (newRot.x.nan?)
|
49
49
|
|
50
|
-
@scene_node.
|
51
|
-
@scene_node.
|
50
|
+
@scene_node.set_position(newPos.x, newPos.y, newPos.z)
|
51
|
+
@scene_node.set_orientation(newRot.w, newRot.x, newRot.y, newRot.z)
|
52
52
|
end
|
53
53
|
|
54
54
|
# called by Bullet::BtMotionState
|
55
|
-
def
|
55
|
+
def get_world_transform(worldTrans)
|
56
56
|
end
|
57
57
|
|
58
58
|
def set_position(x, y, z)
|
59
|
-
@scene_node.
|
60
|
-
@transform.
|
61
|
-
@rigid_body.
|
59
|
+
@scene_node.set_position(x, y, z)
|
60
|
+
@transform.set_origin(Bullet::BtVector3.new(x, y, z))
|
61
|
+
@rigid_body.set_center_of_mass_transform(@transform)
|
62
62
|
end
|
63
63
|
|
64
64
|
def apply_impulse(imp, rel = Bullet::BtVector3.new(0, 0, 0))
|
65
65
|
@rigid_body.activate(true)
|
66
|
-
@rigid_body.
|
66
|
+
@rigid_body.apply_impulse(imp, rel)
|
67
67
|
end
|
68
68
|
end
|
@@ -12,22 +12,22 @@ class CameraMover
|
|
12
12
|
|
13
13
|
def initialize(cam)
|
14
14
|
@camera = cam
|
15
|
-
@camera.
|
16
|
-
@camera.
|
15
|
+
@camera.set_position(0, 0, 0)
|
16
|
+
@camera.set_near_clip_distance(0.1)
|
17
17
|
|
18
18
|
@style = CS_FREELOOK
|
19
19
|
|
20
20
|
# CS_FREELOOK, CS_ORBIT, CS_MANUAL
|
21
|
-
@sdk_camera_man =
|
21
|
+
@sdk_camera_man = Ogrebites::SdkCameraMan.new(@camera)
|
22
22
|
@evt_frame = Ogre::FrameEvent.new
|
23
23
|
|
24
24
|
# CS_TPS
|
25
25
|
@height = CAM_HEIGHT
|
26
|
-
@camera_pivot = cam.
|
27
|
-
@camera_goal = @camera_pivot.
|
26
|
+
@camera_pivot = cam.get_scene_manager().get_root_scene_node().create_child_scene_node()
|
27
|
+
@camera_goal = @camera_pivot.create_child_scene_node(Ogre::Vector3.new(0, 0, 5))
|
28
28
|
|
29
|
-
@camera_pivot.
|
30
|
-
@camera_goal.
|
29
|
+
@camera_pivot.set_fixed_yaw_axis(true)
|
30
|
+
@camera_goal.set_fixed_yaw_axis(true)
|
31
31
|
|
32
32
|
@pivot_pitch = 0
|
33
33
|
|
@@ -37,70 +37,70 @@ class CameraMover
|
|
37
37
|
@style = style
|
38
38
|
case @style
|
39
39
|
when CS_FREELOOK
|
40
|
-
@sdk_camera_man.
|
40
|
+
@sdk_camera_man.set_style(Ogrebites::CS_FREELOOK)
|
41
41
|
when CS_ORBIT
|
42
|
-
@sdk_camera_man.
|
42
|
+
@sdk_camera_man.set_style(Ogrebites::CS_ORBIT)
|
43
43
|
else # CS_MANUAL, CS_TPS
|
44
|
-
@sdk_camera_man.
|
44
|
+
@sdk_camera_man.set_style(Ogrebites::CS_MANUAL)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
def set_target(target)
|
49
49
|
@target = target
|
50
50
|
if @style == CS_TPS
|
51
|
-
@camera.
|
52
|
-
@camera.
|
51
|
+
@camera.set_auto_tracking(false)
|
52
|
+
@camera.move_relative(Ogre::Vector3.new(0, 0, 0))
|
53
53
|
update_camera(1.0)
|
54
54
|
else
|
55
|
-
@sdk_camera_man.
|
55
|
+
@sdk_camera_man.set_target(target.pivotSceneNode)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
def set_position(pos)
|
60
|
-
@camera.
|
60
|
+
@camera.set_position(pos) if @style == CS_FREELOOK
|
61
61
|
end
|
62
62
|
|
63
63
|
def look_at(pos)
|
64
|
-
@camera.
|
64
|
+
@camera.look_at(pos) if @style == CS_FREELOOK
|
65
65
|
end
|
66
66
|
|
67
67
|
def set_yaw_pitch_dist(yaw, pitch, dist)
|
68
|
-
@sdk_camera_man.
|
68
|
+
@sdk_camera_man.set_yaw_pitch_dist(yaw, pitch, dist) if @style == CS_ORBIT
|
69
69
|
end
|
70
70
|
|
71
71
|
def move_forward(bl)
|
72
|
-
evt =
|
72
|
+
evt = Ois::KeyEvent.new(nil, Ois::KC_W, 0)
|
73
73
|
if bl
|
74
|
-
@sdk_camera_man.
|
74
|
+
@sdk_camera_man.inject_key_down(evt)
|
75
75
|
else
|
76
|
-
@sdk_camera_man.
|
76
|
+
@sdk_camera_man.inject_key_up(evt)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
def move_backward(bl)
|
81
|
-
evt =
|
81
|
+
evt = Ois::KeyEvent.new(nil, Ois::KC_S, 0)
|
82
82
|
if bl
|
83
|
-
@sdk_camera_man.
|
83
|
+
@sdk_camera_man.inject_key_down(evt)
|
84
84
|
else
|
85
|
-
@sdk_camera_man.
|
85
|
+
@sdk_camera_man.inject_key_up(evt)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
def move_left(bl)
|
90
|
-
evt =
|
90
|
+
evt = Ois::KeyEvent.new(nil, Ois::KC_A, 0)
|
91
91
|
if bl
|
92
|
-
@sdk_camera_man.
|
92
|
+
@sdk_camera_man.inject_key_down(evt)
|
93
93
|
else
|
94
|
-
@sdk_camera_man.
|
94
|
+
@sdk_camera_man.inject_key_up(evt)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
98
|
def move_right(bl)
|
99
|
-
evt =
|
99
|
+
evt = Ois::KeyEvent.new(nil, Ois::KC_D, 0)
|
100
100
|
if bl
|
101
|
-
@sdk_camera_man.
|
101
|
+
@sdk_camera_man.inject_key_down(evt)
|
102
102
|
else
|
103
|
-
@sdk_camera_man.
|
103
|
+
@sdk_camera_man.inject_key_up(evt)
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
@@ -110,7 +110,7 @@ class CameraMover
|
|
110
110
|
update_camera(delta)
|
111
111
|
else
|
112
112
|
@evt_frame.timeSinceLastFrame = delta
|
113
|
-
@sdk_camera_man.
|
113
|
+
@sdk_camera_man.frame_rendering_queued(@evt_frame)
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
@@ -120,12 +120,12 @@ class CameraMover
|
|
120
120
|
#
|
121
121
|
def update_camera(deltaTime)
|
122
122
|
# place the camera pivot roughly at the character's shoulder
|
123
|
-
@camera_pivot.
|
123
|
+
@camera_pivot.set_position(@target.get_position() + Ogre::Vector3.UNIT_Y * @height)
|
124
124
|
# move the camera smoothly to the goal
|
125
|
-
goalOffset = @camera_goal.
|
125
|
+
goalOffset = @camera_goal._get_derived_position() - @camera.get_position()
|
126
126
|
@camera.move(goalOffset * deltaTime * 9.0)
|
127
127
|
# always look at the pivot
|
128
|
-
@camera.
|
128
|
+
@camera.look_at(@camera_pivot._get_derived_position())
|
129
129
|
end
|
130
130
|
|
131
131
|
def mouse_moved(evt)
|
@@ -141,7 +141,7 @@ class CameraMover
|
|
141
141
|
-0.05 * evt.state.Y.rel,
|
142
142
|
-0.0005 * evt.state.Z.rel)
|
143
143
|
else
|
144
|
-
@sdk_camera_man.
|
144
|
+
@sdk_camera_man.inject_mouse_move(evt)
|
145
145
|
end
|
146
146
|
return true
|
147
147
|
end
|
@@ -163,7 +163,7 @@ class CameraMover
|
|
163
163
|
@camera_pivot.pitch(Ogre::Radian.new(Ogre::Degree.new(deltaPitch)), Ogre::Node::TS_LOCAL)
|
164
164
|
@pivot_pitch += deltaPitch;
|
165
165
|
end
|
166
|
-
dist = @camera_goal.
|
166
|
+
dist = @camera_goal._get_derived_position().distance(@camera_pivot._get_derived_position())
|
167
167
|
distChange = deltaZoom * dist;
|
168
168
|
|
169
169
|
# puts "dist: #{dist}:#{distChange}"
|
@@ -177,12 +177,12 @@ class CameraMover
|
|
177
177
|
end
|
178
178
|
|
179
179
|
def mouse_pressed(mouseEvent, mouseButtonID)
|
180
|
-
@sdk_camera_man.
|
180
|
+
@sdk_camera_man.inject_mouse_down(mouseEvent, mouseButtonID) if @style == CS_ORBIT
|
181
181
|
return true
|
182
182
|
end
|
183
183
|
|
184
184
|
def mouse_released(mouseEvent, mouseButtonID)
|
185
|
-
@sdk_camera_man.
|
185
|
+
@sdk_camera_man.inject_mouse_up(mouseEvent, mouseButtonID) if @style == CS_ORBIT
|
186
186
|
return true
|
187
187
|
end
|
188
188
|
|
data/sample/hello/floor.rb
CHANGED
@@ -10,32 +10,32 @@ class Floor < Bullet::BtMotionState
|
|
10
10
|
# create a physics object
|
11
11
|
@cshape = Bullet::BtBoxShape.new(Bullet::BtVector3.new(x, 1, z))
|
12
12
|
inertia = Bullet::BtVector3.new()
|
13
|
-
@cshape.
|
13
|
+
@cshape.calculate_local_inertia(mass, inertia)
|
14
14
|
@rigid_body = Bullet::BtRigidBody.new(mass, self, @cshape, inertia)
|
15
|
-
dynamicsWorld.
|
15
|
+
dynamicsWorld.add_rigid_body(@rigid_body)
|
16
16
|
|
17
17
|
# create a floor mesh resource
|
18
|
-
Ogre::MeshManager::
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
@entity = sceneMgr.
|
24
|
-
@entity.
|
25
|
-
@entity.
|
26
|
-
sceneMgr.
|
18
|
+
Ogre::MeshManager::get_singleton().create_plane("floor",
|
19
|
+
Ogre::ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME,
|
20
|
+
Ogre::Plane.new(Ogre::Vector3.UNIT_Y, 0),
|
21
|
+
x * 2, z * 2, 10, 10, true, 1, 10, 10,
|
22
|
+
Ogre::Vector3.UNIT_Z)
|
23
|
+
@entity = sceneMgr.create_entity("Floor", "floor")
|
24
|
+
@entity.set_material_name("Examples/Rockwall")
|
25
|
+
@entity.set_cast_shadows(false)
|
26
|
+
sceneMgr.get_root_scene_node().attach_object(@entity)
|
27
27
|
|
28
28
|
# set this object's position
|
29
29
|
@transform = Bullet::BtTransform.new()
|
30
|
-
@transform.
|
31
|
-
@transform.
|
32
|
-
@rigid_body.
|
30
|
+
@transform.set_identity()
|
31
|
+
@transform.set_origin(Bullet::BtVector3.new(0, -y, 0))
|
32
|
+
@rigid_body.set_center_of_mass_transform(@transform)
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
35
|
+
def set_world_transform(worldTrans)
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
38
|
+
def get_world_transform(worldTrans)
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
data/sample/hello/hello
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
|
3
3
|
FILE_PATH=`dirname "$0"`
|
4
|
-
OGRE_LIB=`ruby -e "require '
|
4
|
+
OGRE_LIB=`ruby -e "require 'ogre_config'; print OgreConfig.get_deps_lib_path"`
|
5
5
|
|
6
6
|
LD_LIBRARY_PATH=$OGRE_LIB:$LD_LIBRARY_PATH ruby $FILE_PATH/hello.rb
|
data/sample/hello/hello.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
|
2
2
|
$LOAD_PATH.push(File.dirname(File.expand_path(__FILE__)) + "/../../lib")
|
3
3
|
|
4
|
-
require "
|
5
|
-
require "
|
6
|
-
require "
|
7
|
-
require "
|
8
|
-
require "
|
9
|
-
|
10
|
-
require "OgreConfig"
|
4
|
+
require "ogre"
|
5
|
+
require "ois"
|
6
|
+
require "ogrebites"
|
7
|
+
require "procedural"
|
8
|
+
require "bullet"
|
9
|
+
require "ogre_config"
|
11
10
|
|
12
11
|
require_relative "ui_listener"
|
13
12
|
require_relative "camera_mover"
|
@@ -29,13 +28,13 @@ class World < Ogre::FrameListener
|
|
29
28
|
$file_path = File.dirname(File.expand_path(__FILE__))
|
30
29
|
|
31
30
|
# physics
|
32
|
-
|
31
|
+
init_physics()
|
33
32
|
|
34
33
|
# view
|
35
|
-
|
34
|
+
init_view()
|
36
35
|
end
|
37
36
|
|
38
|
-
def
|
37
|
+
def init_physics()
|
39
38
|
# initialize bullet dynamics world.
|
40
39
|
@collision_config = Bullet::BtDefaultCollisionConfiguration.new();
|
41
40
|
@collision_dispatcher = Bullet::BtCollisionDispatcher.new(@collision_config)
|
@@ -48,113 +47,113 @@ class World < Ogre::FrameListener
|
|
48
47
|
@solver, @collision_config)
|
49
48
|
|
50
49
|
gravity = Bullet::BtVector3.new(0.0, -9.8, 0.0)
|
51
|
-
@dynamics_world.
|
50
|
+
@dynamics_world.set_gravity(gravity)
|
52
51
|
end
|
53
52
|
|
54
|
-
def
|
53
|
+
def init_view()
|
55
54
|
# initialize Root
|
56
55
|
@root = Ogre::Root.new("")
|
57
56
|
|
58
57
|
# load Plugins
|
59
58
|
cfg = Ogre::ConfigFile.new
|
60
59
|
cfg.load("#{$file_path}/plugins.cfg")
|
61
|
-
pluginDir = cfg.
|
60
|
+
pluginDir = cfg.get_setting("PluginFolder")
|
62
61
|
pluginDir += "/" if (pluginDir.length > 0) && (pluginDir[-1] != '/')
|
63
|
-
cfg.
|
62
|
+
cfg.each_settings {|secName, keyName, valueName|
|
64
63
|
fullPath = pluginDir + valueName
|
65
|
-
fullPath.sub!("<SystemPluginFolder>", OgreConfig::
|
66
|
-
@root.
|
64
|
+
fullPath.sub!("<SystemPluginFolder>", OgreConfig::get_plugin_folder)
|
65
|
+
@root.load_plugin(fullPath) if (keyName == "Plugin")
|
67
66
|
}
|
68
67
|
|
69
68
|
# initialize Resources
|
70
69
|
cfg = Ogre::ConfigFile.new
|
71
70
|
cfg.load("#{$file_path}/resources.cfg")
|
72
|
-
resourceDir = cfg.
|
71
|
+
resourceDir = cfg.get_setting("ResourceFolder")
|
73
72
|
resourceDir += "/" if (resourceDir.length > 0) && (resourceDir[-1] != '/')
|
74
|
-
cfg.
|
73
|
+
cfg.each_settings {|secName, keyName, valueName|
|
75
74
|
next if (keyName == "ResourceFolder")
|
76
75
|
fullPath = resourceDir + valueName
|
77
|
-
fullPath.sub!("<SystemResourceFolder>", OgreConfig::
|
78
|
-
Ogre::ResourceGroupManager::
|
79
|
-
|
80
|
-
|
76
|
+
fullPath.sub!("<SystemResourceFolder>", OgreConfig::get_resource_folder)
|
77
|
+
Ogre::ResourceGroupManager::get_singleton().add_resource_location(fullPath,
|
78
|
+
keyName,
|
79
|
+
secName)
|
81
80
|
}
|
82
81
|
|
83
82
|
# create a window to draw.
|
84
|
-
return false unless @root.
|
83
|
+
return false unless @root.show_config_dialog()
|
85
84
|
@window = @root.initialise(true, "Sinbad")
|
86
|
-
@root.
|
85
|
+
@root.add_frame_listener(self)
|
87
86
|
|
88
87
|
# initialize Managers
|
89
88
|
## InputManager
|
90
89
|
windowHnd = Ogre::Intp.new
|
91
|
-
@window.
|
90
|
+
@window.get_custom_attribute("WINDOW", windowHnd)
|
92
91
|
windowHndStr = sprintf("%d", windowHnd.value())
|
93
|
-
pl =
|
92
|
+
pl = Ois::ParamList.new
|
94
93
|
pl["WINDOW"] = windowHndStr
|
95
|
-
@inputManager =
|
96
|
-
@keyboard = @inputManager.
|
97
|
-
@mouse = @inputManager.
|
94
|
+
@inputManager = Ois::InputManager::create_input_system(pl)
|
95
|
+
@keyboard = @inputManager.create_input_object(Ois::OISKeyboard, true).to_keyboard()
|
96
|
+
@mouse = @inputManager.create_input_object(Ois::OISMouse, true).to_mouse()
|
98
97
|
|
99
98
|
## TrayManager
|
100
|
-
Ogre::ResourceGroupManager::
|
101
|
-
@tray_mgr =
|
102
|
-
ms = @mouse.
|
103
|
-
ms.width = @window.
|
104
|
-
ms.height = @window.
|
99
|
+
Ogre::ResourceGroupManager::get_singleton().initialise_resource_group("Essential")
|
100
|
+
@tray_mgr = Ogrebites::SdkTrayManager.new("Base", @window, @mouse);
|
101
|
+
ms = @mouse.get_mouse_state()
|
102
|
+
ms.width = @window.get_width()
|
103
|
+
ms.height = @window.get_height()
|
105
104
|
|
106
105
|
## SceneMgr
|
107
|
-
@sceneMgr = @root.
|
108
|
-
@sceneMgr.
|
106
|
+
@sceneMgr = @root.create_scene_manager(Ogre::ST_GENERIC)
|
107
|
+
@sceneMgr.set_shadow_technique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE)
|
109
108
|
|
110
109
|
# initialize Listeners
|
111
110
|
@keyListener = KeyListener.new(self)
|
112
|
-
@keyboard.
|
111
|
+
@keyboard.set_event_callback(@keyListener)
|
113
112
|
|
114
113
|
@mouseListener = MouseListener.new(self)
|
115
|
-
@mouse.
|
114
|
+
@mouse.set_event_callback(@mouseListener)
|
116
115
|
|
117
116
|
@trayListener = TrayListener.new(self)
|
118
|
-
@tray_mgr.
|
117
|
+
@tray_mgr.set_listener(@trayListener)
|
119
118
|
|
120
119
|
# initialize Camera
|
121
|
-
@camera = @sceneMgr.
|
120
|
+
@camera = @sceneMgr.create_camera("FixCamera")
|
122
121
|
# Create one viewport, entire window
|
123
|
-
@vp = @window.
|
124
|
-
@vp.
|
122
|
+
@vp = @window.add_viewport(@camera);
|
123
|
+
@vp.set_background_colour(Ogre::ColourValue.new(0, 0, 0))
|
125
124
|
# Alter the camera aspect ratio to match the viewport
|
126
|
-
@camera.
|
125
|
+
@camera.set_aspect_ratio(Float(@vp.get_actual_width()) / Float(@vp.get_actual_height()))
|
127
126
|
|
128
127
|
# load "General" group resources into ResourceGroupManager.
|
129
|
-
@tray_mgr.
|
130
|
-
Ogre::ResourceGroupManager::
|
131
|
-
@tray_mgr.
|
132
|
-
Ogre::TextureManager::
|
133
|
-
|
134
|
-
@tray_mgr.
|
135
|
-
@tray_mgr.
|
136
|
-
@tray_mgr.
|
128
|
+
@tray_mgr.show_loading_bar(1, 0)
|
129
|
+
Ogre::ResourceGroupManager::get_singleton().initialise_resource_group("General")
|
130
|
+
@tray_mgr.hide_loading_bar()
|
131
|
+
Ogre::TextureManager::get_singleton().set_default_num_mipmaps(5)
|
132
|
+
|
133
|
+
@tray_mgr.show_frame_stats(Ogrebites::TL_BOTTOMLEFT)
|
134
|
+
@tray_mgr.show_logo(Ogrebites::TL_BOTTOMRIGHT)
|
135
|
+
@tray_mgr.hide_cursor()
|
137
136
|
end
|
138
137
|
|
139
138
|
def run
|
140
139
|
# set background and some fog
|
141
|
-
@vp.
|
142
|
-
@sceneMgr.
|
140
|
+
@vp.set_background_colour(Ogre::ColourValue.new(1.0, 1.0, 0.8))
|
141
|
+
@sceneMgr.set_fog(Ogre::FOG_LINEAR, Ogre::ColourValue.new(1.0, 1.0, 0.8), 0, 15, 100)
|
143
142
|
|
144
143
|
# set shadow properties
|
145
|
-
@sceneMgr.
|
146
|
-
@sceneMgr.
|
147
|
-
@sceneMgr.
|
148
|
-
@sceneMgr.
|
144
|
+
@sceneMgr.set_shadow_technique(Ogre::SHADOWTYPE_TEXTURE_MODULATIVE)
|
145
|
+
@sceneMgr.set_shadow_colour(Ogre::ColourValue.new(0.5, 0.5, 0.5))
|
146
|
+
@sceneMgr.set_shadow_texture_size(1024)
|
147
|
+
@sceneMgr.set_shadow_texture_count(1)
|
149
148
|
|
150
149
|
# use a small amount of ambient lighting
|
151
|
-
@sceneMgr.
|
150
|
+
@sceneMgr.set_ambient_light(Ogre::ColourValue.new(0.3, 0.3, 0.3))
|
152
151
|
|
153
152
|
# add a bright light above the scene
|
154
|
-
@light = @sceneMgr.
|
155
|
-
@light.
|
156
|
-
@light.
|
157
|
-
@light.
|
153
|
+
@light = @sceneMgr.create_light()
|
154
|
+
@light.set_type(Ogre::Light::LT_POINT)
|
155
|
+
@light.set_position(-10, 40, 20)
|
156
|
+
@light.set_specular_colour(Ogre::ColourValue.White)
|
158
157
|
|
159
158
|
@camera_mover = CameraMover.new(@camera)
|
160
159
|
@camera_mover.set_position(Ogre::Vector3.new(20, 10, 20))
|
@@ -162,8 +161,8 @@ class World < Ogre::FrameListener
|
|
162
161
|
|
163
162
|
items = []
|
164
163
|
items.push("Help")
|
165
|
-
@help = @tray_mgr.
|
166
|
-
@help.
|
164
|
+
@help = @tray_mgr.create_params_panel(Ogrebites::TL_TOPLEFT, "HelpMessage", 100, items)
|
165
|
+
@help.set_param_value(Ogre::UTFString.new("Help"), Ogre::UTFString.new("H / F1"))
|
167
166
|
|
168
167
|
# creates objects
|
169
168
|
@floor = Floor.new(@dynamics_world, @sceneMgr)
|
@@ -177,12 +176,12 @@ class World < Ogre::FrameListener
|
|
177
176
|
}
|
178
177
|
}
|
179
178
|
|
180
|
-
@root.
|
179
|
+
@root.start_rendering()
|
181
180
|
end
|
182
181
|
|
183
182
|
def shot_box()
|
184
|
-
cam_pos_ogre = @camera.
|
185
|
-
cam_dir_ogre = @camera.
|
183
|
+
cam_pos_ogre = @camera.get_position()
|
184
|
+
cam_dir_ogre = @camera.get_direction()
|
186
185
|
|
187
186
|
cam_pos = Bullet::BtVector3.new(cam_pos_ogre.x, cam_pos_ogre.y, cam_pos_ogre.z)
|
188
187
|
cam_dir = Bullet::BtVector3.new(cam_dir_ogre.x, cam_dir_ogre.y, cam_dir_ogre.z)
|
@@ -202,14 +201,14 @@ class World < Ogre::FrameListener
|
|
202
201
|
#
|
203
202
|
|
204
203
|
# implementation of Ogre::FrameListener interface.
|
205
|
-
def
|
204
|
+
def frame_rendering_queued(evt)
|
206
205
|
# update bullet(physics)
|
207
|
-
@dynamics_world.
|
206
|
+
@dynamics_world.step_simulation(evt.timeSinceLastFrame)
|
208
207
|
|
209
208
|
# update ogre3d(view)
|
210
209
|
@keyboard.capture()
|
211
210
|
@mouse.capture()
|
212
|
-
@tray_mgr.
|
211
|
+
@tray_mgr.frame_rendering_queued(evt)
|
213
212
|
|
214
213
|
# update model
|
215
214
|
@camera_mover.update(evt.timeSinceLastFrame)
|
@@ -228,22 +227,22 @@ class World < Ogre::FrameListener
|
|
228
227
|
|
229
228
|
def key_pressed(keyEvent)
|
230
229
|
case keyEvent.key
|
231
|
-
when
|
230
|
+
when Ois::KC_ESCAPE
|
232
231
|
@quit =true
|
233
|
-
when
|
234
|
-
if (!@tray_mgr.
|
235
|
-
@tray_mgr.
|
232
|
+
when Ois::KC_H, Ois::KC_F1
|
233
|
+
if (!@tray_mgr.is_dialog_visible() && @info["Help"] != "")
|
234
|
+
@tray_mgr.show_ok_dialog(Ogre::UTFString.new("Help"), Ogre::UTFString.new(@info["Help"]))
|
236
235
|
else
|
237
|
-
@tray_mgr.
|
236
|
+
@tray_mgr.close_dialog()
|
238
237
|
end
|
239
238
|
|
240
|
-
when
|
239
|
+
when Ois::KC_E
|
241
240
|
@camera_mover.move_forward(true)
|
242
|
-
when
|
241
|
+
when Ois::KC_D
|
243
242
|
@camera_mover.move_backward(true)
|
244
|
-
when
|
243
|
+
when Ois::KC_S
|
245
244
|
@camera_mover.move_left(true)
|
246
|
-
when
|
245
|
+
when Ois::KC_F
|
247
246
|
@camera_mover.move_right(true)
|
248
247
|
end
|
249
248
|
|
@@ -252,15 +251,15 @@ class World < Ogre::FrameListener
|
|
252
251
|
|
253
252
|
def key_released(keyEvent)
|
254
253
|
case keyEvent.key
|
255
|
-
when
|
254
|
+
when Ois::KC_ESCAPE
|
256
255
|
@quit =true
|
257
|
-
when
|
256
|
+
when Ois::KC_E
|
258
257
|
@camera_mover.move_forward(false)
|
259
|
-
when
|
258
|
+
when Ois::KC_D
|
260
259
|
@camera_mover.move_backward(false)
|
261
|
-
when
|
260
|
+
when Ois::KC_S
|
262
261
|
@camera_mover.move_left(false)
|
263
|
-
when
|
262
|
+
when Ois::KC_F
|
264
263
|
@camera_mover.move_right(false)
|
265
264
|
end
|
266
265
|
|
@@ -268,16 +267,16 @@ class World < Ogre::FrameListener
|
|
268
267
|
end
|
269
268
|
|
270
269
|
def mouse_moved(mouseEvent)
|
271
|
-
return true if @tray_mgr.
|
270
|
+
return true if @tray_mgr.inject_mouse_move(mouseEvent)
|
272
271
|
@camera_mover.mouse_moved(mouseEvent)
|
273
272
|
return true
|
274
273
|
end
|
275
274
|
|
276
275
|
def mouse_pressed(mouseEvent, mouseButtonID)
|
277
|
-
return true if @tray_mgr.
|
276
|
+
return true if @tray_mgr.inject_mouse_down(mouseEvent, mouseButtonID)
|
278
277
|
@camera_mover.mouse_pressed(mouseEvent, mouseButtonID)
|
279
278
|
|
280
|
-
if (mouseButtonID ==
|
279
|
+
if (mouseButtonID == Ois::MB_Left)
|
281
280
|
shot_box()
|
282
281
|
end
|
283
282
|
|
@@ -285,7 +284,7 @@ class World < Ogre::FrameListener
|
|
285
284
|
end
|
286
285
|
|
287
286
|
def mouse_released(mouseEvent, mouseButtonID)
|
288
|
-
return true if @tray_mgr.
|
287
|
+
return true if @tray_mgr.inject_mouse_up(mouseEvent, mouseButtonID)
|
289
288
|
@camera_mover.mouse_released(mouseEvent, mouseButtonID)
|
290
289
|
return true
|
291
290
|
end
|
data/sample/hello/ui_listener.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
#
|
2
2
|
# Key Listener
|
3
3
|
#
|
4
|
-
class KeyListener <
|
4
|
+
class KeyListener < Ois::KeyListener
|
5
5
|
def initialize(listener)
|
6
6
|
super()
|
7
7
|
@listener = listener
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def key_pressed(keyEvent)
|
11
11
|
return @listener.key_pressed(keyEvent)
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def key_released(keyEvent)
|
15
15
|
return @listener.key_released(keyEvent)
|
16
16
|
end
|
17
17
|
end
|
@@ -19,21 +19,21 @@ end
|
|
19
19
|
#
|
20
20
|
# Mouse Listener
|
21
21
|
#
|
22
|
-
class MouseListener <
|
22
|
+
class MouseListener < Ois::MouseListener
|
23
23
|
def initialize(listener)
|
24
24
|
super()
|
25
25
|
@listener = listener
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def mouse_moved(evt)
|
29
29
|
return @listener.mouse_moved(evt)
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def mouse_pressed(mouseEvent, mouseButtonID)
|
33
33
|
return @listener.mouse_pressed(mouseEvent, mouseButtonID)
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
36
|
+
def mouse_released(mouseEvent, mouseButtonID)
|
37
37
|
return @listener.mouse_released(mouseEvent, mouseButtonID)
|
38
38
|
end
|
39
39
|
end
|
@@ -41,25 +41,25 @@ end
|
|
41
41
|
#
|
42
42
|
# Tray Listener
|
43
43
|
#
|
44
|
-
class TrayListener <
|
44
|
+
class TrayListener < Ogrebites::SdkTrayListener
|
45
45
|
def initialize(listener)
|
46
46
|
super()
|
47
47
|
@listener = listener
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
50
|
+
def button_hit(button)
|
51
51
|
@listener.button_hit(button)
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
54
|
+
def item_selected(menu)
|
55
55
|
@listener.item_selected(menu)
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
58
|
+
def yes_no_dialog_closed(name, bl)
|
59
59
|
@listener.yes_no_dialog_closed(name, bl)
|
60
60
|
end
|
61
61
|
|
62
|
-
def
|
62
|
+
def ok_dialog_closed(name)
|
63
63
|
@listener.ok_dialog_closed(name)
|
64
64
|
end
|
65
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teienlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: x86-linux
|
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-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-ogre
|
16
|
-
requirement: &
|
16
|
+
requirement: &81857840 !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: *81857840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby-bullet
|
27
|
-
requirement: &
|
27
|
+
requirement: &81857210 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *81857210
|
36
36
|
description: An extension library for Teien.
|
37
37
|
email:
|
38
38
|
- abexsoft@gmail.com
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- sample/hello/plugins.cfg
|
79
79
|
- sample/hello/hello
|
80
80
|
- lib/teienlib/version.rb
|
81
|
-
- lib/
|
81
|
+
- lib/teienlib.so
|
82
82
|
- lib/teienlib.rb
|
83
83
|
homepage: https://github.com/abexsoft/teienlib
|
84
84
|
licenses: []
|