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
@@ -0,0 +1,31 @@
|
|
1
|
+
module Teien
|
2
|
+
|
3
|
+
class Launcher
|
4
|
+
@@argv = nil
|
5
|
+
@command = Hash.new
|
6
|
+
|
7
|
+
def self.launch(argv)
|
8
|
+
@@argv = argv
|
9
|
+
|
10
|
+
if @command[argv[0]]
|
11
|
+
require 'teien'
|
12
|
+
@command[argv[0]].call(argv)
|
13
|
+
else
|
14
|
+
puts "Command List:"
|
15
|
+
@command.each_key {|key|
|
16
|
+
puts key
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.register_command(command_name, method)
|
22
|
+
@command[command_name] = method
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.argv
|
26
|
+
return @@argv
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'teien/core/remote_info'
|
2
|
+
|
3
|
+
module Teien
|
4
|
+
|
5
|
+
class Network < EM::Connection
|
6
|
+
@@connections = Hash.new
|
7
|
+
@@event_router = nil
|
8
|
+
|
9
|
+
def initialize(event_router)
|
10
|
+
puts "network initialize"
|
11
|
+
@@event_router = event_router
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.connections
|
15
|
+
@@connections
|
16
|
+
end
|
17
|
+
|
18
|
+
include EM::P::ObjectProtocol
|
19
|
+
|
20
|
+
|
21
|
+
def self.send_event_to_all(obj)
|
22
|
+
@@connections.each_value { |c|
|
23
|
+
c.connection.send_object(obj) if c.connection
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -10,7 +10,12 @@ class RemoteInfo
|
|
10
10
|
def initialize(con)
|
11
11
|
@ip = nil
|
12
12
|
@port = 0
|
13
|
-
|
13
|
+
if con
|
14
|
+
@port, @ip = Socket.unpack_sockaddr_in(con.get_peername) if con.get_peername
|
15
|
+
else
|
16
|
+
@port = 0
|
17
|
+
@ip = "dummy ip"
|
18
|
+
end
|
14
19
|
@connection = con
|
15
20
|
@id = @@total_cnt
|
16
21
|
@@total_cnt += 1
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'teien/core/network'
|
2
|
+
|
3
|
+
module Teien
|
4
|
+
|
5
|
+
class ServerNetwork < Teien::Network
|
6
|
+
def post_init
|
7
|
+
puts "A client has connected."
|
8
|
+
@@connections[self] = RemoteInfo.new(self)
|
9
|
+
@@event_router.connection_binded(self)
|
10
|
+
end
|
11
|
+
|
12
|
+
def receive_object(obj)
|
13
|
+
@@event_router.receive_event(obj, self)
|
14
|
+
end
|
15
|
+
|
16
|
+
def unbind
|
17
|
+
puts "A client has unbinded."
|
18
|
+
@@event_router.connection_unbinded(self)
|
19
|
+
@@connections.delete(self)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -47,7 +47,7 @@ class Vector3D < Bullet::BtVector3
|
|
47
47
|
return Vector3D.new(vec.x, vec.y, vec.z)
|
48
48
|
end
|
49
49
|
|
50
|
-
def self.
|
50
|
+
def self.to_string(vec)
|
51
51
|
return sprintf("(%f, %f, %f)", vec.x, vec.y, vec.z)
|
52
52
|
end
|
53
53
|
|
@@ -80,7 +80,7 @@ class Quaternion < Bullet::BtQuaternion
|
|
80
80
|
return Quaternion.new(qt.x, qt.y, qt.z, qt.w)
|
81
81
|
end
|
82
82
|
|
83
|
-
def self.
|
83
|
+
def self.to_string(qt)
|
84
84
|
return sprintf("(%f, %f, %f, %f)", qt.x, qt.y, qt.z, qt.w)
|
85
85
|
end
|
86
86
|
|
@@ -17,8 +17,6 @@ class CameraMover
|
|
17
17
|
@camera.set_position(0, 0, 0)
|
18
18
|
@camera.set_near_clip_distance(0.1)
|
19
19
|
|
20
|
-
@style = CS_FREELOOK
|
21
|
-
|
22
20
|
# CS_FREELOOK, CS_ORBIT, CS_MANUAL
|
23
21
|
@sdk_camera_man = Ogrebites::SdkCameraMan.new(@camera)
|
24
22
|
@evt_frame = Ogre::FrameEvent.new
|
@@ -33,6 +31,7 @@ class CameraMover
|
|
33
31
|
|
34
32
|
@pivot_pitch = 0
|
35
33
|
|
34
|
+
set_style(CS_FREELOOK)
|
36
35
|
end
|
37
36
|
|
38
37
|
def set_style(style)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/box_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class BoxObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
gen = Procedural::BoxGenerator.new()
|
9
|
+
gen.set_size_x(obj.object_info.size.x * 2.0)
|
10
|
+
gen.set_size_y(obj.object_info.size.y * 2.0)
|
11
|
+
gen.set_size_z(obj.object_info.size.z * 2.0)
|
12
|
+
gen.set_num_seg_x(obj.object_info.num_seg_x)
|
13
|
+
gen.set_num_seg_y(obj.object_info.num_seg_y)
|
14
|
+
gen.set_num_seg_z(obj.object_info.num_seg_z)
|
15
|
+
gen.set_utile(obj.object_info.u_tile).set_vtile(obj.object_info.v_tile).realize_mesh(obj.name)
|
16
|
+
entity = view.scene_mgr.create_entity(obj.name)
|
17
|
+
entity.set_cast_shadows(true)
|
18
|
+
entity.set_material_name(obj.object_info.material_name)
|
19
|
+
|
20
|
+
view_object = ViewObject.new(view)
|
21
|
+
view_object.set_scene_node(entity)
|
22
|
+
|
23
|
+
return view_object
|
24
|
+
end
|
25
|
+
|
26
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/capsule_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class CapsuleObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
gen = Procedural::CapsuleGenerator.new()
|
9
|
+
gen.set_radius(obj.object_info.radius).set_height(obj.object_info.height)
|
10
|
+
gen.set_num_rings(obj.object_info.num_rings)
|
11
|
+
gen.set_num_segments(obj.object_info.num_segments)
|
12
|
+
gen.set_num_seg_height(obj.object_info.num_seg_height)
|
13
|
+
gen.set_vtile(obj.object_info.u_tile).set_vtile(obj.object_info.v_tile).realize_mesh(obj.name)
|
14
|
+
entity = view.scene_mgr.create_entity(obj.name)
|
15
|
+
entity.set_cast_shadows(true)
|
16
|
+
entity.set_material_name(obj.object_info.material_name)
|
17
|
+
|
18
|
+
view_object = ViewObject.new(view)
|
19
|
+
view_object.set_scene_node(entity)
|
20
|
+
|
21
|
+
return view_object
|
22
|
+
end
|
23
|
+
|
24
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/cone_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class ConeObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
gen = Procedural::ConeGenerator.new
|
9
|
+
gen.set_radius(obj.object_info.radius).set_height(obj.object_info.height)
|
10
|
+
gen.set_num_seg_base(obj.object_info.num_seg_base).set_num_seg_height(obj.object_info.num_seg_height)
|
11
|
+
gen.set_utile(obj.object_info.u_tile).set_vtile(obj.object_info.v_tile).realize_mesh(obj.name)
|
12
|
+
entity = view.scene_mgr.create_entity(obj.name)
|
13
|
+
entity.set_cast_shadows(true)
|
14
|
+
entity.set_material_name(obj.object_info.material_name)
|
15
|
+
|
16
|
+
view_object = ViewObject.new(view)
|
17
|
+
view_object.set_scene_node(entity)
|
18
|
+
|
19
|
+
return view_object
|
20
|
+
end
|
21
|
+
|
22
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/cylinder_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class CylinderObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
gen = Procedural::CylinderGenerator.new
|
9
|
+
gen.set_radius(obj.object_info.radius).set_height(obj.object_info.height).set_capped(obj.object_info.capped)
|
10
|
+
gen.set_num_seg_base(obj.object_info.num_seg_base).set_num_seg_height(obj.object_info.num_seg_height)
|
11
|
+
gen.set_utile(obj.object_info.u_tile).set_vtile(obj.object_info.v_tile).realize_mesh(obj.name)
|
12
|
+
entity = view.scene_mgr.create_entity(obj.name)
|
13
|
+
entity.set_cast_shadows(true)
|
14
|
+
entity.set_material_name(obj.object_info.material_name)
|
15
|
+
|
16
|
+
view_object = ViewObject.new(view)
|
17
|
+
view_object.set_scene_node(entity,
|
18
|
+
Vector3D.new(0, -obj.object_info.height / 2, 0))
|
19
|
+
|
20
|
+
return view_object
|
21
|
+
end
|
22
|
+
|
23
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/floor_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class FloorObjectInfo
|
7
|
+
# Setting an entity and a node of Ogre3d.
|
8
|
+
def self.create_view_object(obj, view)
|
9
|
+
normal = Ogre::Vector3.new(0, 1, 0)
|
10
|
+
up = Ogre::Vector3.new(0, 0, 1)
|
11
|
+
Ogre::MeshManager::get_singleton().create_plane(obj.name,
|
12
|
+
Ogre::ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME,
|
13
|
+
Ogre::Plane.new(normal, 0),
|
14
|
+
obj.object_info.width * 2.0,
|
15
|
+
obj.object_info.height * 2.0,
|
16
|
+
obj.object_info.num_seg_x,
|
17
|
+
obj.object_info.num_seg_y,
|
18
|
+
true, 1,
|
19
|
+
obj.object_info.u_tile,
|
20
|
+
obj.object_info.v_tile, up)
|
21
|
+
entity = view.scene_mgr.create_entity(obj.name, obj.name)
|
22
|
+
entity.set_cast_shadows(true)
|
23
|
+
entity.set_material_name(obj.object_info.material_name)
|
24
|
+
|
25
|
+
view_object = ViewObject.new(view)
|
26
|
+
view_object.set_scene_node(entity)
|
27
|
+
|
28
|
+
return view_object
|
29
|
+
end
|
30
|
+
|
31
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/light_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class LightObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
entity = view.scene_mgr.create_light(obj.name)
|
9
|
+
entity.set_type(obj.object_info.type)
|
10
|
+
entity.set_diffuse_colour(obj.object_info.diffuse_color)
|
11
|
+
entity.set_specular_colour(obj.object_info.specular_color)
|
12
|
+
entity.set_direction(Vector3D.to_ogre(obj.object_info.direction))
|
13
|
+
|
14
|
+
view_object = ViewObject.new(@view)
|
15
|
+
view_object.entity = entity
|
16
|
+
|
17
|
+
return view_object
|
18
|
+
end
|
19
|
+
|
20
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/mesh_bb_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class MeshBBObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
entity = view.scene_mgr.create_entity(obj.name, obj.object_info.mesh_path)
|
9
|
+
entity.set_cast_shadows(true)
|
10
|
+
entity.set_material_name(obj.object_info.material_name) if obj.object_info.material_name
|
11
|
+
|
12
|
+
view_object = ViewObject.new(view)
|
13
|
+
node = view_object.set_scene_node(entity, obj.object_info.view_offset, obj.object_info.view_rotation)
|
14
|
+
node.set_scale(obj.object_info.size.x * obj.object_info.scale.x,
|
15
|
+
obj.object_info.size.y * obj.object_info.scale.y,
|
16
|
+
obj.object_info.size.z * obj.object_info.scale.z)
|
17
|
+
|
18
|
+
return view_object
|
19
|
+
end
|
20
|
+
|
21
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/mesh_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class MeshObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
entity = view.scene_mgr.create_entity(obj.name, obj.object_info.mesh_path)
|
9
|
+
entity.set_cast_shadows(true)
|
10
|
+
entity.set_material_name(obj.object_info.material_name) if obj.object_info.material_name
|
11
|
+
|
12
|
+
view_object = ViewObject.new(view)
|
13
|
+
node = view_object.set_scene_node(entity, obj.object_info.view_offset)
|
14
|
+
node.set_scale(obj.object_info.scale.x,
|
15
|
+
obj.object_info.scale.y,
|
16
|
+
obj.object_info.scale.z)
|
17
|
+
|
18
|
+
return view_object
|
19
|
+
end
|
20
|
+
|
21
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "teien/ui/view_object_factory"
|
2
|
+
require "teien/base_object/std_objects/sphere_object_info"
|
3
|
+
|
4
|
+
module Teien
|
5
|
+
|
6
|
+
class SphereObjectInfo
|
7
|
+
def self.create_view_object(obj, view)
|
8
|
+
gen = Procedural::SphereGenerator.new()
|
9
|
+
gen.set_radius(obj.object_info.radius)
|
10
|
+
gen.set_num_rings(obj.object_info.num_rings)
|
11
|
+
gen.set_num_segments(obj.object_info.num_segments)
|
12
|
+
gen.set_vtile(obj.object_info.u_tile).set_vtile(obj.object_info.v_tile).realize_mesh(obj.name)
|
13
|
+
entity = view.scene_mgr.create_entity(obj.name)
|
14
|
+
entity.set_cast_shadows(true)
|
15
|
+
entity.set_material_name(obj.object_info.material_name)
|
16
|
+
|
17
|
+
view_object = ViewObject.new(view)
|
18
|
+
view_object.set_scene_node(entity)
|
19
|
+
|
20
|
+
return view_object
|
21
|
+
end
|
22
|
+
|
23
|
+
ViewObjectFactory::set_creator(self, self.method(:create_view_object))
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -1,20 +1,21 @@
|
|
1
|
-
require 'teien/camera'
|
2
|
-
require 'teien/view'
|
3
|
-
require "teien/dispatcher.rb"
|
1
|
+
require 'teien/ui/camera'
|
2
|
+
require 'teien/ui/view'
|
4
3
|
|
5
4
|
module Teien
|
6
5
|
|
7
6
|
class UserInterface
|
8
7
|
# include Dispatcher
|
9
8
|
|
10
|
-
attr_accessor :
|
9
|
+
attr_accessor :base_object_manager
|
11
10
|
attr_accessor :debug_draw
|
12
11
|
|
13
|
-
def initialize(
|
12
|
+
def initialize(event_router, base_object_manager)
|
14
13
|
super()
|
15
14
|
|
16
|
-
@
|
17
|
-
@
|
15
|
+
@event_router = event_router
|
16
|
+
@event_router.register_receiver(self)
|
17
|
+
@base_object_manager = base_object_manager
|
18
|
+
@base_object_manager.register_receiver(self)
|
18
19
|
|
19
20
|
@view = View.new()
|
20
21
|
@camera = nil
|
@@ -22,6 +23,10 @@ class UserInterface
|
|
22
23
|
@debug_draw = false
|
23
24
|
end
|
24
25
|
|
26
|
+
def finalize
|
27
|
+
@view.finalize
|
28
|
+
end
|
29
|
+
|
25
30
|
def set_window_title(title)
|
26
31
|
@view.window_title = title
|
27
32
|
end
|
@@ -30,7 +35,7 @@ class UserInterface
|
|
30
35
|
@debug_draw = bl
|
31
36
|
if (bl)
|
32
37
|
@debug_drawer = Teienlib::DebugDrawer.new(@view.scene_mgr)
|
33
|
-
@
|
38
|
+
@base_object_manager.physics.dynamics_world.set_debug_drawer(@debug_drawer)
|
34
39
|
end
|
35
40
|
end
|
36
41
|
|
@@ -62,7 +67,7 @@ class UserInterface
|
|
62
67
|
# called as a receiver by a dispatcher.
|
63
68
|
|
64
69
|
#
|
65
|
-
# By
|
70
|
+
# By Base_Object_Manager/Base_Object_ManagerBase
|
66
71
|
#
|
67
72
|
|
68
73
|
def set_ambient_light(color)
|
@@ -73,16 +78,16 @@ class UserInterface
|
|
73
78
|
@view.scene_mgr.set_sky_dome(enable, materialName, curvature, tiling, distance)
|
74
79
|
end
|
75
80
|
|
76
|
-
def setup(
|
77
|
-
@view.setup(
|
81
|
+
def setup()
|
82
|
+
@view.setup(@base_object_manager)
|
78
83
|
end
|
79
84
|
|
80
85
|
def create_object(obj)
|
81
|
-
@view.
|
86
|
+
@view.create_object(obj)
|
82
87
|
end
|
83
88
|
|
84
89
|
def update(delta)
|
85
|
-
@
|
90
|
+
@base_object_manager.physics.dynamics_world.debug_draw_world() if @debug_draw
|
86
91
|
@view.update(delta)
|
87
92
|
end
|
88
93
|
end
|
@@ -1,6 +1,16 @@
|
|
1
|
-
require 'teien/ui_listener'
|
2
|
-
require "teien/view_object_factory.rb"
|
3
|
-
require "teien/dispatcher.rb"
|
1
|
+
require 'teien/ui/ui_listener'
|
2
|
+
require "teien/ui/view_object_factory.rb"
|
3
|
+
require "teien/core/dispatcher.rb"
|
4
|
+
|
5
|
+
require_relative "std_objects/light_object_info"
|
6
|
+
require_relative "std_objects/floor_object_info"
|
7
|
+
require_relative "std_objects/mesh_bb_object_info"
|
8
|
+
require_relative "std_objects/mesh_object_info"
|
9
|
+
require_relative "std_objects/box_object_info"
|
10
|
+
require_relative "std_objects/sphere_object_info"
|
11
|
+
require_relative "std_objects/capsule_object_info"
|
12
|
+
require_relative "std_objects/cone_object_info"
|
13
|
+
require_relative "std_objects/cylinder_object_info"
|
4
14
|
|
5
15
|
module Teien
|
6
16
|
|
@@ -15,7 +25,7 @@ class View < Ogre::FrameListener
|
|
15
25
|
attr_accessor :scene_mgr
|
16
26
|
attr_accessor :tray_mgr
|
17
27
|
attr_accessor :window_title
|
18
|
-
|
28
|
+
attr_accessor :objects
|
19
29
|
|
20
30
|
def initialize()
|
21
31
|
super()
|
@@ -30,15 +40,14 @@ class View < Ogre::FrameListener
|
|
30
40
|
@tray_mgr = nil
|
31
41
|
@inputManager = nil
|
32
42
|
@window_title = ""
|
33
|
-
|
34
|
-
@object_factory = ViewObjectFactory.new(self)
|
43
|
+
@objects = Hash.new
|
35
44
|
end
|
36
45
|
|
37
|
-
def setup(
|
46
|
+
def setup(base_object_manager)
|
38
47
|
puts "view setup"
|
39
|
-
@
|
40
|
-
@plugins_cfg = @
|
41
|
-
@resources_cfg = @
|
48
|
+
@base_object_manager = base_object_manager
|
49
|
+
@plugins_cfg = @base_object_manager.plugins_cfg ? @base_object_manager.plugins_cfg : "configs/plugins.cfg"
|
50
|
+
@resources_cfg = @base_object_manager.resources_cfg ? @base_object_manager.resources_cfg : "configs/resources.cfg"
|
42
51
|
|
43
52
|
@root = Ogre::Root.new("")
|
44
53
|
load_plugins()
|
@@ -67,8 +76,10 @@ class View < Ogre::FrameListener
|
|
67
76
|
|
68
77
|
cfg.each_settings {|secName, keyName, valueName|
|
69
78
|
fullPath = pluginDir + valueName
|
70
|
-
|
71
|
-
|
79
|
+
if @base_object_manager.resources_cfg
|
80
|
+
fullPath.sub!("<ConfigFileFolder>", File.dirname(@base_object_manager.plugins_cfg))
|
81
|
+
end
|
82
|
+
fullPath.sub!("<SystemPluginFolder>", Ruby::Ogre::get_plugin_folder)
|
72
83
|
@root.load_plugin(fullPath) if (keyName == "Plugin")
|
73
84
|
}
|
74
85
|
end
|
@@ -86,10 +97,10 @@ class View < Ogre::FrameListener
|
|
86
97
|
next if (keyName == "ResourceFolder")
|
87
98
|
|
88
99
|
fullPath = resourceDir + valueName
|
89
|
-
if @
|
90
|
-
fullPath.sub!("<ConfigFileFolder>", File.dirname(@
|
100
|
+
if @base_object_manager.resources_cfg
|
101
|
+
fullPath.sub!("<ConfigFileFolder>", File.dirname(@base_object_manager.resources_cfg))
|
91
102
|
end
|
92
|
-
fullPath.sub!("<SystemResourceFolder>",
|
103
|
+
fullPath.sub!("<SystemResourceFolder>", Ruby::Ogre::get_resource_folder)
|
93
104
|
|
94
105
|
Ogre::ResourceGroupManager::get_singleton().add_resource_location(fullPath,
|
95
106
|
keyName,
|
@@ -175,8 +186,13 @@ class View < Ogre::FrameListener
|
|
175
186
|
@scene_mgr.set_ambient_light(color)
|
176
187
|
end
|
177
188
|
|
178
|
-
def
|
179
|
-
|
189
|
+
def create_object(obj)
|
190
|
+
view_object = ViewObjectFactory::create_object(obj, self)
|
191
|
+
|
192
|
+
obj.register_receiver(view_object)
|
193
|
+
view_object.object = obj
|
194
|
+
|
195
|
+
@objects[obj.name] = view_object if view_object
|
180
196
|
end
|
181
197
|
|
182
198
|
# Takes a screen shot.
|
@@ -199,13 +215,19 @@ class View < Ogre::FrameListener
|
|
199
215
|
return @root.render_one_frame(delta)
|
200
216
|
end
|
201
217
|
|
202
|
-
# Called through @root.
|
218
|
+
# Called through @root.render_one_frame(delta).
|
203
219
|
def frame_rendering_queued(evt)
|
204
220
|
@keyboard.capture()
|
205
221
|
@mouse.capture()
|
206
222
|
|
207
|
-
|
208
|
-
|
223
|
+
animation_manager = Teien::get_component("animation_manager")
|
224
|
+
@objects.each_value {|obj|
|
225
|
+
if obj.object.attached_objects.length > 0
|
226
|
+
obj.update_attached_objects(self)
|
227
|
+
end
|
228
|
+
|
229
|
+
animation = animation_manager.animations[obj.object.name]
|
230
|
+
obj.update_animation(evt.timeSinceLastFrame, animation) if animation
|
209
231
|
}
|
210
232
|
|
211
233
|
@tray_mgr.frame_rendering_queued(evt)
|