shattered 0.5.0.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. data/History.txt +6 -0
  2. data/INSTALL.txt +5 -0
  3. data/License.txt +18 -0
  4. data/Manifest.txt +175 -0
  5. data/README.txt +39 -0
  6. data/Rakefile +6 -0
  7. data/app_generators/actor/USAGE +6 -0
  8. data/app_generators/actor/actor_generator.rb +51 -0
  9. data/app_generators/actor/templates/actor.rb +4 -0
  10. data/app_generators/actor/templates/spec.rb +11 -0
  11. data/app_generators/actor/templates/unit_test.rb +9 -0
  12. data/app_generators/commands/console.rb +6 -0
  13. data/{lib/rails_generator/generators/applications/shattered_app → app_generators/shattered}/USAGE +1 -1
  14. data/app_generators/shattered/shattered_generator.rb +67 -0
  15. data/{lib → app_generators/shattered}/templates/Rakefile +4 -4
  16. data/app_generators/shattered/templates/configs/game.controls +16 -0
  17. data/app_generators/shattered/templates/configs/ogre_plugins.linux.cfg +12 -0
  18. data/app_generators/shattered/templates/configs/ogre_plugins.osx.cfg +12 -0
  19. data/{lib → app_generators/shattered}/templates/configs/ogre_plugins.windows.cfg +2 -2
  20. data/app_generators/shattered/templates/game.rb +50 -0
  21. data/{lib → app_generators/shattered}/templates/media/basic.rmaterial +0 -0
  22. data/app_generators/shattered/templates/spec/game_spec.rb +5 -0
  23. data/app_generators/shattered/templates/spec/spec_helper.rb +12 -0
  24. data/bin/shattered +39 -0
  25. data/config/hoe.rb +77 -0
  26. data/config/requirements.rb +15 -0
  27. data/lib/shattered.rb +40 -0
  28. data/lib/shattered_game/actor.rb +6 -0
  29. data/lib/shattered_game/game.rb +285 -0
  30. data/lib/{tasks → shattered_game/rake_tasks}/framework.rake +19 -24
  31. data/lib/{tasks → shattered_game/rake_tasks}/log.rake +0 -0
  32. data/lib/{tasks → shattered_game/rake_tasks}/misc.rake +1 -2
  33. data/lib/{tasks → shattered_game/rake_tasks}/pre_namespace_aliases.rake +0 -0
  34. data/lib/{tasks → shattered_game/rake_tasks}/shattered.rb +0 -0
  35. data/lib/shattered_game/rake_tasks/spec.rake +9 -0
  36. data/lib/{tasks → shattered_game/rake_tasks}/statistics.rake +0 -0
  37. data/lib/shattered_game/required.rb +2 -0
  38. data/lib/shattered_game/version.rb +9 -0
  39. data/lib/shattered_model/controls.rb +67 -0
  40. data/lib/shattered_model/input.rb +171 -0
  41. data/lib/shattered_model/key_converter.rb +44 -0
  42. data/lib/shattered_model/required.rb +4 -0
  43. data/lib/shattered_model/shattered_model.rb +28 -0
  44. data/lib/shattered_model/timed_event.rb +120 -0
  45. data/lib/shattered_model/timer.rb +78 -0
  46. data/lib/shattered_support/core_ext.rb +1 -0
  47. data/lib/shattered_support/core_ext/class.rb +3 -0
  48. data/lib/shattered_support/core_ext/class/attribute_accessors.rb +44 -0
  49. data/lib/shattered_support/core_ext/class/inheritable_attributes.rb +115 -0
  50. data/lib/shattered_support/core_ext/class/removal.rb +24 -0
  51. data/lib/shattered_support/core_ext/dir.rb +5 -0
  52. data/lib/shattered_support/core_ext/dir/search.rb +25 -0
  53. data/lib/shattered_support/core_ext/file.rb +5 -0
  54. data/lib/shattered_support/core_ext/file/search.rb +64 -0
  55. data/lib/shattered_support/core_ext/numeric.rb +5 -0
  56. data/lib/shattered_support/core_ext/numeric/time.rb +72 -0
  57. data/lib/shattered_support/core_ext/string.rb +13 -0
  58. data/lib/shattered_support/core_ext/string/access.rb +58 -0
  59. data/lib/shattered_support/core_ext/string/conversions.rb +19 -0
  60. data/lib/shattered_support/core_ext/string/inflections.rb +64 -0
  61. data/lib/shattered_support/core_ext/string/iterators.rb +17 -0
  62. data/lib/shattered_support/core_ext/string/starts_ends_with.rb +20 -0
  63. data/lib/shattered_support/error.rb +12 -0
  64. data/lib/shattered_support/inflections.rb +53 -0
  65. data/lib/shattered_support/inflector.rb +178 -0
  66. data/lib/shattered_support/pre_initialize.rb +153 -0
  67. data/lib/shattered_support/required.rb +9 -0
  68. data/lib/shattered_support/unload.rb +18 -0
  69. data/lib/shattered_view/camera.rb +7 -0
  70. data/lib/shattered_view/ogrerb/base.rb +28 -0
  71. data/lib/shattered_view/ogrerb/camera.rb +14 -0
  72. data/lib/shattered_view/ogrerb/key_manager.rb +54 -0
  73. data/lib/shattered_view/ogrerb/light.rb +25 -0
  74. data/lib/shattered_view/ogrerb/material.rb +5 -0
  75. data/lib/shattered_view/ogrerb/mesh_instance.rb +85 -0
  76. data/lib/shattered_view/ogrerb/mouse_manager.rb +109 -0
  77. data/lib/shattered_view/ogrerb/particle_system.rb +24 -0
  78. data/lib/shattered_view/ogrerb/rgb.rb +6 -0
  79. data/lib/shattered_view/ogrerb/rmaterial.rb +87 -0
  80. data/lib/shattered_view/ogrerb/scene_node.rb +76 -0
  81. data/lib/shattered_view/ogrerb/vector.rb +243 -0
  82. data/lib/shattered_view/ogrerb/window_event.rb +14 -0
  83. data/lib/shattered_view/resources.rb +64 -0
  84. data/lib/shattered_view/shattered_view.rb +248 -0
  85. data/script/destroy +14 -0
  86. data/script/generate +14 -0
  87. data/setup.rb +1585 -0
  88. data/tasks/deployment.rake +30 -0
  89. data/tasks/environment.rake +7 -0
  90. data/tasks/rcov.rake +7 -0
  91. data/tasks/testing.rake +46 -0
  92. data/tasks/website.rake +15 -0
  93. data/test/acceptance/Rakefile +10 -0
  94. data/test/acceptance/config/game.controls +17 -0
  95. data/test/acceptance/config/ogre_plugins.linux.cfg +12 -0
  96. data/test/acceptance/config/ogre_plugins.osx.cfg +12 -0
  97. data/test/acceptance/config/ogre_plugins.windows.cfg +14 -0
  98. data/test/acceptance/config/ogrerb_defaults.save +8 -0
  99. data/test/acceptance/game.rb +120 -0
  100. data/test/acceptance/lib/acceptance_test.rb +20 -0
  101. data/test/acceptance/lib/console.rb +54 -0
  102. data/test/acceptance/lib/input_test.rb +8 -0
  103. data/test/acceptance/lib/label.rb +30 -0
  104. data/test/acceptance/lib/light_test.rb +60 -0
  105. data/test/acceptance/lib/mesh_test.rb +69 -0
  106. data/test/acceptance/lib/particle_test.rb +9 -0
  107. data/test/acceptance/media/GreenSkin.jpg +0 -0
  108. data/test/acceptance/media/Ogre.material +86 -0
  109. data/test/acceptance/media/WeirdEye.png +0 -0
  110. data/test/acceptance/media/basic.rmaterial +18 -0
  111. data/test/acceptance/media/console.fontdef +7 -0
  112. data/test/acceptance/media/console.material +13 -0
  113. data/test/acceptance/media/console.png +0 -0
  114. data/test/acceptance/media/console.ttf +0 -0
  115. data/test/acceptance/media/dirt01.png +0 -0
  116. data/test/acceptance/media/fountain.material +19 -0
  117. data/test/acceptance/media/fountain.particle +40 -0
  118. data/test/acceptance/media/fountain.png +0 -0
  119. data/test/acceptance/media/fountaincolors.png +0 -0
  120. data/test/acceptance/media/ogre.mesh +0 -0
  121. data/test/acceptance/media/spheremap.png +0 -0
  122. data/test/acceptance/media/win.png +0 -0
  123. data/test/acceptance/spec/spec_helper.rb +7 -0
  124. data/test/integration/actor_generator_test.rb +43 -0
  125. data/test/integration/shattered_generator_test.rb +43 -0
  126. data/test/integration/test_helper.rb +20 -0
  127. data/test/ogre_test_defaults.save +8 -0
  128. data/test/ogre_test_plugins.linux.cfg +12 -0
  129. data/test/ogre_test_plugins.osx.cfg +12 -0
  130. data/test/ogre_test_plugins.windows.cfg +14 -0
  131. data/test/test_helper.rb +109 -0
  132. data/test/unit/shattered_game/actor_test.rb +9 -0
  133. data/test/unit/shattered_game/game_test.rb +49 -0
  134. data/test/unit/shattered_game/runner_test.rb +56 -0
  135. data/test/unit/shattered_model/controls/mouse.controls +4 -0
  136. data/test/unit/shattered_model/controls/player.controls +4 -0
  137. data/test/unit/shattered_model/controls/too_many_delims.controls +1 -0
  138. data/test/unit/shattered_model/key_controls_test.rb +89 -0
  139. data/test/unit/shattered_model/key_converter_test.rb +37 -0
  140. data/test/unit/shattered_model/keyboard_input_test.rb +32 -0
  141. data/test/unit/shattered_model/mouse_controls_test.rb +50 -0
  142. data/test/unit/shattered_model/mouse_input_test.rb +61 -0
  143. data/test/unit/shattered_model/shattered_model_test.rb +117 -0
  144. data/test/unit/shattered_model/timed_event_test.rb +79 -0
  145. data/test/unit/shattered_model/timer_test.rb +325 -0
  146. data/{lib/rails_generator/generators/components/actor/templates/actor.rb → test/unit/shattered_support/directory_test/file.test} +0 -0
  147. data/test/unit/shattered_support/numeric_ext_test.rb +38 -0
  148. data/test/unit/shattered_support/pre_initialize_test.rb +63 -0
  149. data/test/unit/shattered_support/shattered_support_test.rb +39 -0
  150. data/test/unit/shattered_support/unload_test.rb +17 -0
  151. data/test/unit/shattered_view/light_test.rb +38 -0
  152. data/test/unit/shattered_view/material_test.rb +41 -0
  153. data/test/unit/shattered_view/media_test/basic.rmaterial +18 -0
  154. data/{lib/templates/configs/empty.log → test/unit/shattered_view/media_test/beltch.ogg} +0 -0
  155. data/test/unit/shattered_view/media_test/test.mesh +0 -0
  156. data/test/unit/shattered_view/mesh_test.rb +59 -0
  157. data/test/unit/shattered_view/node_test.rb +11 -0
  158. data/test/unit/shattered_view/ogrerb/camera_test.rb +12 -0
  159. data/test/unit/shattered_view/ogrerb/key_manager_test.rb +42 -0
  160. data/test/unit/shattered_view/ogrerb/media/basic.rmaterial +18 -0
  161. data/test/unit/shattered_view/ogrerb/media/test.mesh +0 -0
  162. data/test/unit/shattered_view/ogrerb/media/test.rmaterial +1 -0
  163. data/test/unit/shattered_view/ogrerb/mesh_instance_test.rb +74 -0
  164. data/test/unit/shattered_view/ogrerb/mouse_manager_test.rb +104 -0
  165. data/test/unit/shattered_view/ogrerb/ogrerb.log +51 -0
  166. data/test/unit/shattered_view/ogrerb/resolve_ogrerb_test.rb +13 -0
  167. data/test/unit/shattered_view/ogrerb/rgb_test.rb +10 -0
  168. data/test/unit/shattered_view/ogrerb/rmaterial_test.rb +28 -0
  169. data/test/unit/shattered_view/ogrerb/scene_type_test.rb +12 -0
  170. data/test/unit/shattered_view/ogrerb/vector_test.rb +206 -0
  171. data/test/unit/shattered_view/particle_test.rb +23 -0
  172. data/test/unit/shattered_view/resources_test.rb +45 -0
  173. data/test/unit/shattered_view/test_helper.rb +1 -0
  174. data/test/unit/shattered_view/window_event_test.rb +19 -0
  175. data/test/unit/test_helper.rb +1 -0
  176. metadata +205 -121
  177. data/bin/console +0 -4
  178. data/bin/destroy +0 -9
  179. data/bin/generate +0 -7
  180. data/bin/runner +0 -9
  181. data/bin/shatter +0 -22
  182. data/lib/commands/console.rb +0 -23
  183. data/lib/game_loader.rb +0 -118
  184. data/lib/rails_generator.rb +0 -43
  185. data/lib/rails_generator/base.rb +0 -203
  186. data/lib/rails_generator/commands.rb +0 -519
  187. data/lib/rails_generator/generators/applications/shattered_app/shattered_app_generator.rb +0 -103
  188. data/lib/rails_generator/generators/components/actor/actor_generator.rb +0 -22
  189. data/lib/rails_generator/generators/components/model/USAGE +0 -17
  190. data/lib/rails_generator/generators/components/model/model_generator.rb +0 -22
  191. data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
  192. data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  193. data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -11
  194. data/lib/rails_generator/generators/components/state/USAGE +0 -30
  195. data/lib/rails_generator/generators/components/state/state_generator.rb +0 -19
  196. data/lib/rails_generator/generators/components/state/templates/state.rb +0 -20
  197. data/lib/rails_generator/generators/components/view/USAGE +0 -30
  198. data/lib/rails_generator/generators/components/view/templates/material +0 -4
  199. data/lib/rails_generator/generators/components/view/templates/view.rb +0 -7
  200. data/lib/rails_generator/generators/components/view/view_generator.rb +0 -28
  201. data/lib/rails_generator/lookup.rb +0 -209
  202. data/lib/rails_generator/manifest.rb +0 -53
  203. data/lib/rails_generator/options.rb +0 -143
  204. data/lib/rails_generator/scripts.rb +0 -83
  205. data/lib/rails_generator/scripts/destroy.rb +0 -7
  206. data/lib/rails_generator/scripts/generate.rb +0 -7
  207. data/lib/rails_generator/scripts/update.rb +0 -12
  208. data/lib/rails_generator/simple_logger.rb +0 -46
  209. data/lib/rails_generator/spec.rb +0 -44
  210. data/lib/shatter.rb +0 -7
  211. data/lib/tasks/documentation.rake +0 -46
  212. data/lib/tasks/testing.rake +0 -102
  213. data/lib/templates/MIT-LICENSE +0 -20
  214. data/lib/templates/README +0 -35
  215. data/lib/templates/configs/boot.rb +0 -35
  216. data/lib/templates/configs/ogre.cfg +0 -4
  217. data/lib/templates/configs/runner.rb +0 -5
  218. data/lib/templates/doc/README_FOR_APP +0 -2
  219. data/lib/templates/environments/environment.rb +0 -10
  220. data/lib/templates/media/default.mesh +0 -0
  221. data/lib/templates/media/default.png +0 -0
  222. data/lib/templates/media/offset_map.rmaterial +0 -117
  223. data/lib/templates/test/test_helper.rb +0 -5
@@ -0,0 +1,104 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+ require 'test/unit'
3
+
4
+ include OIS
5
+
6
+ class MouseManagerTest < Test::Unit::TestCase
7
+ def setup
8
+ @mouse_manager = MouseManager.new
9
+ end
10
+
11
+ def test_listener
12
+ end
13
+
14
+ def test_responds_to_button_press
15
+ mouse_state = MouseState.new
16
+ @mouse_manager.respond_to_press 1
17
+ @mouse_manager.respond_to_press 2
18
+ assert @mouse_manager.pressed?(1)
19
+ assert @mouse_manager.pressed?(2)
20
+ assert @mouse_manager.held?(1)
21
+ @mouse_manager.flush
22
+ assert !@mouse_manager.pressed?(1)
23
+ assert @mouse_manager.held?(1)
24
+ end
25
+
26
+ def test_responds_to_new_events
27
+ mouse_state = MouseState.new
28
+ mouse_state.buttons = 1
29
+ @mouse_manager.process_events mouse_state
30
+ assert @mouse_manager.pressed?(0)
31
+ assert @mouse_manager.held?(0)
32
+ assert !@mouse_manager.pressed?(1)
33
+ assert !@mouse_manager.released?(1)
34
+
35
+ mouse_state.buttons = 2
36
+ @mouse_manager.process_events mouse_state
37
+ assert !@mouse_manager.pressed?(0)
38
+ assert @mouse_manager.released?(0)
39
+ assert !@mouse_manager.held?(0)
40
+ assert @mouse_manager.pressed?(1)
41
+ assert @mouse_manager.held?(1)
42
+ assert !@mouse_manager.released?(1)
43
+
44
+ mouse_state.buttons = 4
45
+ @mouse_manager.process_events mouse_state
46
+ assert !@mouse_manager.released?(0)
47
+ assert !@mouse_manager.pressed?(1)
48
+ assert @mouse_manager.released?(1)
49
+ assert @mouse_manager.pressed?(2)
50
+ end
51
+
52
+ def test_responds_to_button_release
53
+ mouse_state = MouseState.new
54
+ @mouse_manager.respond_to_press 1
55
+ @mouse_manager.respond_to_press 2
56
+ @mouse_manager.respond_to_release 1
57
+ assert @mouse_manager.released?(1)
58
+ assert !@mouse_manager.pressed?(1)
59
+
60
+ assert !@mouse_manager.released?(2)
61
+ assert @mouse_manager.pressed?(2)
62
+
63
+ assert !@mouse_manager.held?(1)
64
+ assert @mouse_manager.held?(2)
65
+
66
+ @mouse_manager.flush
67
+ assert !@mouse_manager.released?(1)
68
+ assert !@mouse_manager.held?(1)
69
+
70
+ assert !@mouse_manager.pressed?(2)
71
+ assert @mouse_manager.held?(2)
72
+
73
+ end
74
+
75
+ def test_responds_to_move
76
+ mouse_state = MouseState.new
77
+ mouse_state.X = Axis.new
78
+ mouse_state.X.rel = 10
79
+ mouse_state.X.abs = 100
80
+ mouse_state.Y = Axis.new
81
+ mouse_state.Y.rel = 3
82
+ mouse_state.Y.abs = 30
83
+ @mouse_manager.respond_to_move mouse_state
84
+ assert_equal(10, @mouse_manager.x)
85
+ assert_equal(3, @mouse_manager.y)
86
+ assert_equal(100, @mouse_manager.abs_x)
87
+ assert_equal(30, @mouse_manager.abs_y)
88
+ @mouse_manager.flush
89
+ assert_equal(0, @mouse_manager.x)
90
+ assert_equal(0, @mouse_manager.y)
91
+ assert_equal(100, @mouse_manager.abs_x)
92
+ assert_equal(30, @mouse_manager.abs_y)
93
+ end
94
+
95
+ def test_responds_to_scroll
96
+ mouse_state = MouseState.new
97
+ mouse_state.Z = Axis.new
98
+ mouse_state.Z.rel = 10
99
+ @mouse_manager.respond_to_move mouse_state
100
+ assert_equal(10, @mouse_manager.scrolled)
101
+ @mouse_manager.flush
102
+ assert_equal(0, @mouse_manager.scrolled)
103
+ end
104
+ end
@@ -0,0 +1,51 @@
1
+ 19:46:45: Creating resource group General
2
+ 19:46:45: Creating resource group Internal
3
+ 19:46:45: Creating resource group Autodetect
4
+ 19:46:45: SceneManagerFactory for type 'DefaultSceneManager' registered.
5
+ 19:46:45: Registering ResourceManager for type Material
6
+ 19:46:45: Registering ResourceManager for type Mesh
7
+ 19:46:45: Registering ResourceManager for type Skeleton
8
+ 19:46:45: MovableObjectFactory for type 'ParticleSystem' registered.
9
+ 19:46:45: OverlayElementFactory for type Panel registered.
10
+ 19:46:45: OverlayElementFactory for type BorderPanel registered.
11
+ 19:46:45: OverlayElementFactory for type TextArea registered.
12
+ 19:46:45: Registering ResourceManager for type Font
13
+ 19:46:45: ArchiveFactory for archive type FileSystem registered.
14
+ 19:46:45: ArchiveFactory for archive type Zip registered.
15
+ 19:46:45: FreeImage version: 3.9.1
16
+ 19:46:45: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
17
+ 19:46:45: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,g3,sgi
18
+ 19:46:45: DDS codec registering
19
+ 19:46:45: Registering ResourceManager for type HighLevelGpuProgram
20
+ 19:46:45: Registering ResourceManager for type Compositor
21
+ 19:46:45: MovableObjectFactory for type 'Entity' registered.
22
+ 19:46:45: MovableObjectFactory for type 'Light' registered.
23
+ 19:46:45: MovableObjectFactory for type 'BillboardSet' registered.
24
+ 19:46:45: MovableObjectFactory for type 'ManualObject' registered.
25
+ 19:46:45: MovableObjectFactory for type 'BillboardChain' registered.
26
+ 19:46:45: MovableObjectFactory for type 'RibbonTrail' registered.
27
+ 19:46:45: Loading library RenderSystem_GL
28
+ 19:46:45: Installing plugin: GL RenderSystem
29
+ 19:46:45: OpenGL Rendering Subsystem created.
30
+ 19:46:45: Plugin successfully installed
31
+ 19:46:45: *-*-* OGRE Initialising
32
+ 19:46:45: *-*-* Version 1.4.5 (Eihort)
33
+ 19:46:45: CPU Identifier & Features
34
+ 19:46:45: -------------------------
35
+ 19:46:45: * CPU ID: GenuineIntel: Genuine Intel(R) CPU T2400 @ 1.83GHz
36
+ 19:46:45: * SSE: yes
37
+ 19:46:45: * SSE2: yes
38
+ 19:46:45: * SSE3: yes
39
+ 19:46:45: * MMX: yes
40
+ 19:46:45: * MMXEXT: yes
41
+ 19:46:45: * 3DNOW: no
42
+ 19:46:45: * 3DNOWEXT: no
43
+ 19:46:45: * CMOV: yes
44
+ 19:46:45: * TSC: yes
45
+ 19:46:45: * FPU: yes
46
+ 19:46:45: * PRO: yes
47
+ 19:46:45: * HT: no
48
+ 19:46:45: -------------------------
49
+ 19:46:45: *******************************************
50
+ *** Starting OSX OpenGL Subsystem ***
51
+ *******************************************
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ require 'test/unit'
4
+
5
+ class ResolveOgreTest < Test::Unit::TestCase
6
+ def test_axiom_resolution
7
+ assert_equal( Module, Ogre.class )
8
+ end
9
+ def test_creation_of_ogre_root
10
+ assert_equal( Ogre::Root, @@root.class )
11
+ end
12
+ end
13
+
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+ require 'test/unit'
3
+
4
+ class RGBTest < Test::Unit::TestCase
5
+ # rgb(0,0,0) => Ogre::ColourValue.new(0,0,0)
6
+ def test_rgb_is_colourvalue
7
+ assert_equal(Ogre::ColourValue, rgb(0,0,0).class)
8
+ assert_equal(Ogre::ColourValue.new(0,0,0), rgb(0,0,0))
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class RMaterialTest < Test::Unit::TestCase
4
+ # Test whether we can name and parse an rmaterial through erb
5
+ def test_rmaterial_creation
6
+ material = Ogre::RMaterial.new(File.dirname(__FILE__)+"/media/test.rmaterial")
7
+ material.name = "A Test"
8
+ material.parse
9
+
10
+ assert_equal("A Test", material.result)
11
+ end
12
+
13
+ # Ensure that anonymous attributes on an RMaterial can be set / gotten
14
+ def test_rmaterial_erb_attributes
15
+ material = Ogre::RMaterial.new(File.dirname(__FILE__)+"/media/test.rmaterial")
16
+ material.attribute = "set"
17
+ assert_equal("set", material.attribute)
18
+ end
19
+
20
+ # Ensure that materials are created and loaded in Ogre.
21
+ def test_rmaterial_loads
22
+ material = Ogre::RMaterial.load(File.dirname(__FILE__)+"/media/basic.rmaterial") do |rm|
23
+ rm.name = "TEST"
24
+ end
25
+ assert_kind_of(Ogre::MaterialPtr, material)
26
+ end
27
+
28
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+ require 'test/unit'
3
+
4
+ class SceneTypeTest < Test::Unit::TestCase
5
+
6
+ def test_resolved_scene_type
7
+ assert_equal(Ogre::ST_GENERIC, ShatteredOgre.translate_to_scene_type(:general))
8
+
9
+ assert_raises(StandardError) { ShatteredOgre.translate_to_scene_type(:unknown) }
10
+ end
11
+
12
+ end
@@ -0,0 +1,206 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+ require 'test/unit'
3
+
4
+ class VectorTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @vector = v(1, 2, 3)
8
+ end
9
+
10
+
11
+ def test_vector_shorthand
12
+ assert_kind_of Ogre::Vector3, v(1,2,3)
13
+ assert_kind_of Ogre::Vector3, self.class.v(1,2,3)
14
+ end
15
+
16
+ # Array tests
17
+ def test_array_to_v
18
+ assert_equal @vector, [1, 2, 3].to_v
19
+ end
20
+
21
+ def test_v_equal_vector3
22
+ assert_equal @vector, Ogre::Vector3.new( 1, 2, 3)
23
+ end
24
+
25
+ # Test converting from array to vector and vice versa
26
+
27
+ def test_vector3_to_a
28
+ # to_a is obsoleted.
29
+ # assert_equal [0,0,0], Ogre::Vector3.ZERO.to_a
30
+ # assert_equal [0,0,0], Ogre::Vector3.ZERO.to_a.to_v.to_a
31
+ end
32
+
33
+ # String format
34
+ def test_to_s
35
+ assert_equal "#<Vector [1.0, 2.0, 3.0]>", v(1,2,3).to_s
36
+ end
37
+
38
+ def test_vector_add
39
+ assert_equal v(2, 4, 6), @vector + @vector
40
+ end
41
+
42
+ def test_vector_subtract
43
+ assert_equal v(0, 0, 0), @vector - @vector
44
+ end
45
+
46
+ def test_vector_multiply
47
+ assert_equal v(10, 20, 30), @vector * 10
48
+ assert_equal v(10, 20, 30), @vector * v(10,10,10)
49
+ end
50
+
51
+ def test_vector_divide
52
+ assert_equal v(0.1, 0.2, 0.3), @vector / 10
53
+ end
54
+
55
+ def test_vector_component_assignment
56
+ @vector.x = 5
57
+ @vector.y = 10
58
+ @vector.z = 15.00
59
+
60
+ assert_equal 5, @vector.x
61
+ assert_equal 10, @vector.y
62
+ assert_equal 15, @vector.z
63
+ end
64
+
65
+ def test_vector_length
66
+ vector = v(3, 4, 0)
67
+ assert_equal 5, vector.length
68
+ end
69
+
70
+ def test_vector_normalize
71
+ vector = v(9, 0, 0)
72
+
73
+ assert_equal 1.0, vector.normalize.length
74
+ assert_equal 9.0, vector.length
75
+
76
+ assert_equal 1.0, vector.normalise.length
77
+ assert_equal 9.0, vector.length
78
+ end
79
+
80
+ def test_vector_normalize!
81
+ vector = v(50, 80, 140)
82
+
83
+ vector.normalize!
84
+ assert_equal 1.0, vector.length.round
85
+
86
+ vector.normalise!
87
+ assert_equal 1.0, vector.length.round
88
+ end
89
+
90
+ def test_vector_to_a
91
+ #to_a is deprecated.
92
+ # assert_equal [1, 2, 3], @vector.to_a
93
+ end
94
+
95
+ def test_vector_each
96
+ result = []
97
+ @vector.each do |item|
98
+ result << item * 2
99
+ end
100
+
101
+ assert_equal [2, 4, 6], result
102
+ end
103
+
104
+ def test_vector_to_v
105
+ assert_equal @vector, @vector.to_v
106
+ end
107
+
108
+ def test_get_bracket_notation
109
+ assert_equal 1, @vector[0]
110
+ assert_equal 1, @vector['x']
111
+ assert_equal 1, @vector[:x]
112
+
113
+ assert_equal 2, @vector[1]
114
+ assert_equal 2, @vector['y']
115
+ assert_equal 2, @vector[:y]
116
+
117
+ assert_equal 3, @vector[2]
118
+ assert_equal 3, @vector['z']
119
+ assert_equal 3, @vector[:z]
120
+ end
121
+
122
+ def test_set_bracket_notation
123
+ @vector[0] = 5
124
+ assert_equal 5, @vector[0]
125
+ assert_equal 5, @vector['x']
126
+ assert_equal 5, @vector[:x]
127
+
128
+ @vector['y'] = 6
129
+ assert_equal 6, @vector[1]
130
+ assert_equal 6, @vector['y']
131
+ assert_equal 6, @vector[:y]
132
+
133
+ @vector[:z] = 7
134
+ assert_equal 7, @vector[2]
135
+ assert_equal 7, @vector['z']
136
+ assert_equal 7, @vector[:z]
137
+ end
138
+
139
+ def test_equivalence
140
+ assert_equal v(0,0,1), v(0,0,1)
141
+ assert_not_equal v(0,0,1), v(1,2,3)
142
+ assert_not_equal v(0,0,1), [0,0,1]
143
+ end
144
+
145
+ # Symbols have to_v values (:z.to_v = v(0,0,0))
146
+ def test_symbol_to_v
147
+ definitions = {:x => v(1,0,0),:y => v(0,1,0),:z => v(0,0,1),
148
+ :up => v(0,1,0),:down => v(0,-1,0),
149
+ :left => v(-1,0,0),:right => v(1,0,0),
150
+ :forward => v(0,0,1),:backward => v(0,0,-1),
151
+ :zero => v(0,0,0)}
152
+
153
+ definitions.each_pair do |symbol, vector|
154
+ assert_equal(vector, symbol.to_v)
155
+ assert_equal(vector, symbol)
156
+ assert_equal(symbol.to_v.object_id, symbol.to_v.object_id)
157
+ end
158
+
159
+ assert_raises(SymbolToVectorError) do
160
+ :unknown_vector.to_v
161
+ end
162
+ end
163
+
164
+ # :z * per_second should return a vector
165
+ def test_symbol_multiplication
166
+ assert_equal(v(3,0,0), :x * 3)
167
+ assert_equal(:zero.to_v, :zero * 1)
168
+
169
+ assert_raises(SymbolToVectorError) do
170
+ :unknown_vector*3
171
+ end
172
+ end
173
+
174
+ # Can we add a symbol to a vector?
175
+ def test_symbol_math
176
+ assert_equal(v(1,0,0), v(0,0,0)+:x)
177
+ assert_equal(v(1,0,0), :x+v(0,0,0))
178
+ assert_equal(v(1,0,0), :x+:zero)
179
+ assert_equal(v(-1,0,0), :zero - :x)
180
+ assert_equal(v(1,0,0), :x*:x)
181
+ assert_equal(v(1,0,0), (:x*10)/10)
182
+ end
183
+
184
+
185
+ # Can we access a hash by using the same vector?
186
+ # (Vectors that have the same value should have the same hash)
187
+ def test_accessing_hash
188
+ result = {v(0,0,0) => :result}
189
+ assert_equal(:zero.to_v.hash, v(0,0,0).hash)
190
+ assert(:zero.to_v.eql?(v(0,0,0)))
191
+ assert_equal(:result, result[v(0,0,0)])
192
+ end
193
+
194
+ # -:z should be v(0,0,-1), etc.
195
+ def test_negative_symbols
196
+ assert_equal(-:z, v(0,0,-1))
197
+ end
198
+
199
+ def test_numeric_operations
200
+ assert_equal(v(10,10,10), 10*v(1,1,1))
201
+ assert_equal(v(10,10,10), 10.0*v(1,1,1))
202
+ assert_equal(v(10,0,0), 10*:x)
203
+ assert_equal(v(10,0,0), 10.0*:x)
204
+
205
+ end
206
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ # Test the particle system dsl
4
+ class ParticleTest < Test::Unit::TestCase
5
+ include Shattered::View
6
+ def test_creates_particle_system
7
+ assert_kind_of Ogre::ParticleSystem, create(:particle_system)
8
+ end
9
+ def test_creates_from_template
10
+ p1 = create(:particle_system, :test)
11
+ p1.add_affector "ColourInterpolator"
12
+ assert_equal p1.get_affector(0).get_type, create(:particle_system, :test).get_affector(0).get_type
13
+ end
14
+ def test_creates_from_template_file
15
+ assert_equal "fountain", create(:particle_system, :fountain).get_material_name
16
+ end
17
+ def test_has_methods
18
+ p1 = create(:particle_system)
19
+ [ :position, :position=].each do |method|
20
+ assert p1.methods.include?(method.to_s), "Particle System does not have #{method}"
21
+ end
22
+ end
23
+ end