joybox 0.0.3
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.
- checksums.yaml +15 -0
- data/.gitignore +18 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +27 -0
- data/LICENSE +22 -0
- data/README.md +86 -0
- data/Rakefile +14 -0
- data/app/app_delegate.rb +49 -0
- data/app/layers/box2d_layer.rb +109 -0
- data/app/layers/cocos2d_layer.rb +14 -0
- data/app/layers/cocos_motion_layer.rb +145 -0
- data/app/layers/menu_layer.rb +59 -0
- data/joybox.gemspec +25 -0
- data/lib/joybox.rb +47 -0
- data/lib/joybox/box2d/body.rb +106 -0
- data/lib/joybox/box2d/world.rb +79 -0
- data/lib/joybox/cocos2d/actions/actions.rb +7 -0
- data/lib/joybox/cocos2d/actions/move.rb +31 -0
- data/lib/joybox/cocos2d/actions/repeat.rb +24 -0
- data/lib/joybox/cocos2d/actions/rotate.rb +31 -0
- data/lib/joybox/cocos2d/actions/scale.rb +31 -0
- data/lib/joybox/cocos2d/actions/sequence.rb +22 -0
- data/lib/joybox/cocos2d/actions/skew.rb +36 -0
- data/lib/joybox/cocos2d/cocos2d.rb +15 -0
- data/lib/joybox/cocos2d/common/cg_point.rb +37 -0
- data/lib/joybox/cocos2d/common/color.rb +49 -0
- data/lib/joybox/cocos2d/common/gc_size.rb +39 -0
- data/lib/joybox/cocos2d/common/ns_set.rb +5 -0
- data/lib/joybox/cocos2d/common/numeric.rb +14 -0
- data/lib/joybox/cocos2d/common/screen.rb +39 -0
- data/lib/joybox/cocos2d/common/ui_touch.rb +15 -0
- data/lib/joybox/cocos2d/configuration/configuration.rb +68 -0
- data/lib/joybox/cocos2d/configuration/file_utils.rb +33 -0
- data/lib/joybox/cocos2d/configuration/gl_view.rb +44 -0
- data/lib/joybox/cocos2d/configuration/texture_2d.rb +27 -0
- data/lib/joybox/cocos2d/core/layer.rb +87 -0
- data/lib/joybox/cocos2d/core/node.rb +26 -0
- data/lib/joybox/cocos2d/core/physics_sprite.rb +52 -0
- data/lib/joybox/cocos2d/core/scene.rb +24 -0
- data/lib/joybox/cocos2d/core/sprite.rb +43 -0
- data/lib/joybox/cocos2d/core/sprite_batch.rb +24 -0
- data/lib/joybox/cocos2d/director.rb +43 -0
- data/lib/joybox/cocos2d/macros.rb +234 -0
- data/lib/joybox/cocos2d/ui/label.rb +34 -0
- data/lib/joybox/cocos2d/ui/menu.rb +25 -0
- data/lib/joybox/cocos2d/ui/menu_image.rb +22 -0
- data/lib/joybox/cocos2d/ui/menu_label.rb +45 -0
- data/lib/joybox/cocos2d/ui/ui.rb +7 -0
- data/lib/joybox/version.rb +3 -0
- data/resources/box2d/blocks_sprite_sheet.png +0 -0
- data/resources/cocos_motion/dot.png +0 -0
- data/resources/cocos_motion/dot_selected.png +0 -0
- data/resources/cocos_motion/grossini.png +0 -0
- data/resources/cocos_motion/grossinis_sister.png +0 -0
- data/resources/cocos_motion/grossinis_sister_two.png +0 -0
- data/resources/cocos_motion/left_arrow.png +0 -0
- data/resources/cocos_motion/left_arrow_selected.png +0 -0
- data/resources/cocos_motion/right_arrow.png +0 -0
- data/resources/cocos_motion/right_arrow_selected.png +0 -0
- data/resources/fps_images-hd.png +0 -0
- data/resources/fps_images-ipadhd.png +0 -0
- data/resources/fps_images.png +0 -0
- data/spec/lib/joybox/cocos2d/cocos2d_spec.rb +7 -0
- data/spec/lib/joybox/cocos2d/macros_spec.rb +37 -0
- data/spec/main_spec.rb +9 -0
- data/vendor/Box2D.framework/Box2D +0 -0
- data/vendor/Box2D.framework/Box2D.framework.bridgesupport +166 -0
- data/vendor/Box2D.framework/Versions/A/Box2D +0 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Collision/B2DContactListener.h +25 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DEdgeShape.h +17 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DPolygonShape.h +16 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DShape.h +15 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Dynamics/B2DBody.h +43 -0
- data/vendor/Box2D.framework/Versions/A/Headers/Dynamics/B2DWorld.h +41 -0
- data/vendor/Box2D.framework/Versions/A/Resources/Box2DConfig.cmake +3 -0
- data/vendor/Box2D.framework/Versions/A/Resources/CMakeLists.txt +205 -0
- data/vendor/Cocos2D/Cocos2D.bridgesupport +7808 -0
- data/vendor/Cocos2D/include/CCAction.h +195 -0
- data/vendor/Cocos2D/include/CCActionCamera.h +73 -0
- data/vendor/Cocos2D/include/CCActionCatmullRom.h +139 -0
- data/vendor/Cocos2D/include/CCActionEase.h +159 -0
- data/vendor/Cocos2D/include/CCActionGrid.h +165 -0
- data/vendor/Cocos2D/include/CCActionGrid3D.h +205 -0
- data/vendor/Cocos2D/include/CCActionInstant.h +227 -0
- data/vendor/Cocos2D/include/CCActionInterval.h +431 -0
- data/vendor/Cocos2D/include/CCActionManager.h +113 -0
- data/vendor/Cocos2D/include/CCActionPageTurn3D.h +42 -0
- data/vendor/Cocos2D/include/CCActionProgressTimer.h +59 -0
- data/vendor/Cocos2D/include/CCActionTiledGrid.h +211 -0
- data/vendor/Cocos2D/include/CCActionTween.h +62 -0
- data/vendor/Cocos2D/include/CCAnimation.h +150 -0
- data/vendor/Cocos2D/include/CCAnimationCache.h +74 -0
- data/vendor/Cocos2D/include/CCArray.h +119 -0
- data/vendor/Cocos2D/include/CCAtlasNode.h +96 -0
- data/vendor/Cocos2D/include/CCCamera.h +98 -0
- data/vendor/Cocos2D/include/CCConfiguration.h +126 -0
- data/vendor/Cocos2D/include/CCDirector.h +344 -0
- data/vendor/Cocos2D/include/CCDirectorIOS.h +104 -0
- data/vendor/Cocos2D/include/CCDrawingPrimitives.h +139 -0
- data/vendor/Cocos2D/include/CCES2Renderer.h +83 -0
- data/vendor/Cocos2D/include/CCESRenderer.h +54 -0
- data/vendor/Cocos2D/include/CCFileUtils.h +188 -0
- data/vendor/Cocos2D/include/CCGL.h +72 -0
- data/vendor/Cocos2D/include/CCGLProgram.h +150 -0
- data/vendor/Cocos2D/include/CCGLView.h +160 -0
- data/vendor/Cocos2D/include/CCGrabber.h +44 -0
- data/vendor/Cocos2D/include/CCGrid.h +130 -0
- data/vendor/Cocos2D/include/CCLabelAtlas.h +68 -0
- data/vendor/Cocos2D/include/CCLabelBMFont.h +216 -0
- data/vendor/Cocos2D/include/CCLabelTTF.h +132 -0
- data/vendor/Cocos2D/include/CCLayer.h +280 -0
- data/vendor/Cocos2D/include/CCMenu.h +100 -0
- data/vendor/Cocos2D/include/CCMenuItem.h +423 -0
- data/vendor/Cocos2D/include/CCMotionStreak.h +87 -0
- data/vendor/Cocos2D/include/CCNS.h +54 -0
- data/vendor/Cocos2D/include/CCNode+Debug.h +39 -0
- data/vendor/Cocos2D/include/CCNode.h +569 -0
- data/vendor/Cocos2D/include/CCParallaxNode.h +50 -0
- data/vendor/Cocos2D/include/CCParticleBatchNode.h +99 -0
- data/vendor/Cocos2D/include/CCParticleExamples.h +95 -0
- data/vendor/Cocos2D/include/CCParticleSystem.h +453 -0
- data/vendor/Cocos2D/include/CCParticleSystemQuad.h +73 -0
- data/vendor/Cocos2D/include/CCProfiling.h +89 -0
- data/vendor/Cocos2D/include/CCProgressTimer.h +94 -0
- data/vendor/Cocos2D/include/CCProtocols.h +132 -0
- data/vendor/Cocos2D/include/CCRenderTexture.h +139 -0
- data/vendor/Cocos2D/include/CCScene.h +43 -0
- data/vendor/Cocos2D/include/CCScheduler.h +230 -0
- data/vendor/Cocos2D/include/CCShaderCache.h +60 -0
- data/vendor/Cocos2D/include/CCSprite.h +288 -0
- data/vendor/Cocos2D/include/CCSpriteBatchNode.h +138 -0
- data/vendor/Cocos2D/include/CCSpriteFrame.h +126 -0
- data/vendor/Cocos2D/include/CCSpriteFrameCache.h +121 -0
- data/vendor/Cocos2D/include/CCTMXLayer.h +164 -0
- data/vendor/Cocos2D/include/CCTMXObjectGroup.h +67 -0
- data/vendor/Cocos2D/include/CCTMXTiledMap.h +145 -0
- data/vendor/Cocos2D/include/CCTMXXMLParser.h +217 -0
- data/vendor/Cocos2D/include/CCTexture2D.h +357 -0
- data/vendor/Cocos2D/include/CCTextureAtlas.h +188 -0
- data/vendor/Cocos2D/include/CCTextureCache.h +146 -0
- data/vendor/Cocos2D/include/CCTexturePVR.h +129 -0
- data/vendor/Cocos2D/include/CCTileMapAtlas.h +83 -0
- data/vendor/Cocos2D/include/CCTouchDelegateProtocol.h +75 -0
- data/vendor/Cocos2D/include/CCTouchDispatcher.h +120 -0
- data/vendor/Cocos2D/include/CCTouchHandler.h +93 -0
- data/vendor/Cocos2D/include/CCTransition.h +296 -0
- data/vendor/Cocos2D/include/CCTransitionPageTurn.h +60 -0
- data/vendor/Cocos2D/include/CCTransitionProgress.h +62 -0
- data/vendor/Cocos2D/include/CCVertex.h +36 -0
- data/vendor/Cocos2D/include/CGPointExtension.h +344 -0
- data/vendor/Cocos2D/include/CocosDenshion/CDAudioManager.h +243 -0
- data/vendor/Cocos2D/include/CocosDenshion/CDConfig.h +60 -0
- data/vendor/Cocos2D/include/CocosDenshion/CDOpenALSupport.h +77 -0
- data/vendor/Cocos2D/include/CocosDenshion/CDXPropertyModifierAction.h +45 -0
- data/vendor/Cocos2D/include/CocosDenshion/CocosDenshion.h +440 -0
- data/vendor/Cocos2D/include/CocosDenshion/SimpleAudioEngine.h +90 -0
- data/vendor/Cocos2D/include/NSThread+performBlock.h +22 -0
- data/vendor/Cocos2D/include/OpenGL_Internal.h +86 -0
- data/vendor/Cocos2D/include/RubyMotionSchedule.h +7 -0
- data/vendor/Cocos2D/include/TGAlib.h +55 -0
- data/vendor/Cocos2D/include/TransformUtils.h +36 -0
- data/vendor/Cocos2D/include/ZipUtils.h +91 -0
- data/vendor/Cocos2D/include/base64.h +33 -0
- data/vendor/Cocos2D/include/ccCArray.h +229 -0
- data/vendor/Cocos2D/include/ccConfig.h +245 -0
- data/vendor/Cocos2D/include/ccDeprecated.h +300 -0
- data/vendor/Cocos2D/include/ccGLStateCache.h +138 -0
- data/vendor/Cocos2D/include/ccMacros.h +353 -0
- data/vendor/Cocos2D/include/ccShader_PositionColor_frag.h +12 -0
- data/vendor/Cocos2D/include/ccShader_PositionColor_vert.h +17 -0
- data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_frag.h +16 -0
- data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_vert.h +21 -0
- data/vendor/Cocos2D/include/ccShader_PositionTextureColorAlphaTest_frag.h +23 -0
- data/vendor/Cocos2D/include/ccShader_PositionTextureColor_frag.h +14 -0
- data/vendor/Cocos2D/include/ccShader_PositionTextureColor_vert.h +22 -0
- data/vendor/Cocos2D/include/ccShader_PositionTexture_frag.h +13 -0
- data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_frag.h +16 -0
- data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_vert.h +18 -0
- data/vendor/Cocos2D/include/ccShader_PositionTexture_vert.h +17 -0
- data/vendor/Cocos2D/include/ccShader_Position_uColor_frag.h +12 -0
- data/vendor/Cocos2D/include/ccShader_Position_uColor_vert.h +19 -0
- data/vendor/Cocos2D/include/ccShaders.h +45 -0
- data/vendor/Cocos2D/include/ccTypes.h +374 -0
- data/vendor/Cocos2D/include/ccUtils.h +36 -0
- data/vendor/Cocos2D/include/cocos2d.h +178 -0
- data/vendor/Cocos2D/include/kazmath/GL/mat4stack.h +51 -0
- data/vendor/Cocos2D/include/kazmath/GL/matrix.h +58 -0
- data/vendor/Cocos2D/include/kazmath/aabb.h +53 -0
- data/vendor/Cocos2D/include/kazmath/kazmath.h +39 -0
- data/vendor/Cocos2D/include/kazmath/mat3.h +75 -0
- data/vendor/Cocos2D/include/kazmath/mat4.h +93 -0
- data/vendor/Cocos2D/include/kazmath/neon_matrix_impl.h +41 -0
- data/vendor/Cocos2D/include/kazmath/plane.h +70 -0
- data/vendor/Cocos2D/include/kazmath/quaternion.h +113 -0
- data/vendor/Cocos2D/include/kazmath/ray2.h +50 -0
- data/vendor/Cocos2D/include/kazmath/utility.h +74 -0
- data/vendor/Cocos2D/include/kazmath/vec2.h +64 -0
- data/vendor/Cocos2D/include/kazmath/vec3.h +68 -0
- data/vendor/Cocos2D/include/kazmath/vec4.h +68 -0
- data/vendor/Cocos2D/include/uthash.h +972 -0
- data/vendor/Cocos2D/include/utlist.h +490 -0
- data/vendor/Cocos2D/libCocosDenshion.a +0 -0
- data/vendor/Cocos2D/libcocos2d.a +0 -0
- metadata +277 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
class MenuLayer < Joybox::Core::Layer
|
|
2
|
+
|
|
3
|
+
scene
|
|
4
|
+
|
|
5
|
+
def on_enter
|
|
6
|
+
|
|
7
|
+
layout_title
|
|
8
|
+
layout_menu
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def layout_title
|
|
13
|
+
|
|
14
|
+
title_label = Label.new text: 'Scenes',
|
|
15
|
+
font_size: 50,
|
|
16
|
+
position: [Screen.half_width, Screen.height - 80],
|
|
17
|
+
color: Color.from_hex('#4AA419')
|
|
18
|
+
|
|
19
|
+
self << title_label
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def layout_menu
|
|
24
|
+
|
|
25
|
+
MenuLabel.default_font_size = 40
|
|
26
|
+
|
|
27
|
+
cocos2d_menu_item = MenuLabel.new text: 'Cocos 2D',
|
|
28
|
+
color: Color.new(252, 253, 167),
|
|
29
|
+
do |menu_item|
|
|
30
|
+
|
|
31
|
+
director.replace_scene(Cocos2DLayer.scene)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
box2d_button = MenuLabel.new text: 'Box 2D',
|
|
36
|
+
color: Color.from_hex('82CCFB'),
|
|
37
|
+
do |menu_item|
|
|
38
|
+
|
|
39
|
+
director.replace_scene(Box2DLayer.scene)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
cocos_motion_button = MenuLabel.new text: 'Cocos Motion',
|
|
44
|
+
color: Color.from_hex('FE7058'),
|
|
45
|
+
do |menu_item|
|
|
46
|
+
|
|
47
|
+
director.replace_scene(CocosMotionLayer.scene)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
menu = Menu.new items: [cocos2d_menu_item, box2d_button, cocos_motion_button],
|
|
52
|
+
position: [Screen.half_width, (Screen.height - 80) / 2]
|
|
53
|
+
|
|
54
|
+
menu.align_items_vertically
|
|
55
|
+
|
|
56
|
+
self.add_child(menu, z: 1)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
data/joybox.gemspec
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require File.expand_path('../lib/joybox/version.rb', __FILE__)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |gem|
|
|
5
|
+
gem.name = 'joybox'
|
|
6
|
+
gem.version = Joybox::VERSION
|
|
7
|
+
|
|
8
|
+
gem.authors = ['Juan José Karam']
|
|
9
|
+
gem.email = 'juanjokaram@gmail.com'
|
|
10
|
+
|
|
11
|
+
gem.description = <<-DESC
|
|
12
|
+
A Cocos2D & Box2D DSL for RubyMotion
|
|
13
|
+
DESC
|
|
14
|
+
|
|
15
|
+
gem.summary = 'A Cocos2D & Box2D DSL for RubyMotion'
|
|
16
|
+
gem.homepage = 'http://joybox.io'
|
|
17
|
+
|
|
18
|
+
gem.files = `git ls-files`.split($\)
|
|
19
|
+
gem.require_paths = ['lib']
|
|
20
|
+
gem.test_files = gem.files.grep(%r{^spec/})
|
|
21
|
+
|
|
22
|
+
gem.add_dependency 'rake'
|
|
23
|
+
gem.add_development_dependency 'rspec'
|
|
24
|
+
|
|
25
|
+
end
|
data/lib/joybox.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#unless defined?(Motion::Project::Config)
|
|
2
|
+
# raise "The joybox gem must be required within a RubyMotion project Rakefile."
|
|
3
|
+
#end
|
|
4
|
+
|
|
5
|
+
Motion::Project::App.setup do |app|
|
|
6
|
+
|
|
7
|
+
app.frameworks += ["QuartzCore",
|
|
8
|
+
"CoreGraphics",
|
|
9
|
+
"Foundation",
|
|
10
|
+
"ApplicationServices",
|
|
11
|
+
"OpenAL",
|
|
12
|
+
"AVFoundation",
|
|
13
|
+
"AudioToolbox",
|
|
14
|
+
"QuartzCore"]
|
|
15
|
+
|
|
16
|
+
app.libs << "/usr/lib/libz.dylib"
|
|
17
|
+
|
|
18
|
+
# Scans app.files until it finds app/ (the default)
|
|
19
|
+
# if found, it inserts just before those files, otherwise it will insert to
|
|
20
|
+
# the end of the list
|
|
21
|
+
insert_point = 0
|
|
22
|
+
app.files.each_index do |index|
|
|
23
|
+
file = app.files[index]
|
|
24
|
+
if file =~ /^(?:\.\/)?app\//
|
|
25
|
+
# found app/, so stop looking
|
|
26
|
+
break
|
|
27
|
+
end
|
|
28
|
+
insert_point = index + 1
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
cocos2d_vendor = File.expand_path(File.join(File.dirname(__FILE__), '../vendor/Cocos2D'))
|
|
32
|
+
box2d_vendor = File.expand_path(File.join(File.dirname(__FILE__), '../vendor/Box2D.framework'))
|
|
33
|
+
|
|
34
|
+
app.vendor_project(cocos2d_vendor,
|
|
35
|
+
:static,
|
|
36
|
+
:products => ["libcocos2d.a", "libCocosDenshion.a"],
|
|
37
|
+
:headers_dir => "include")
|
|
38
|
+
|
|
39
|
+
app.vendor_project(box2d_vendor,
|
|
40
|
+
:static,
|
|
41
|
+
:products => ['Box2D'],
|
|
42
|
+
:headers_dir => "Headers")
|
|
43
|
+
|
|
44
|
+
Dir.glob(File.join(File.dirname(__FILE__), 'joybox/**/*.rb')).reverse.each do |file|
|
|
45
|
+
app.files.insert(insert_point, file)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
Joybox::Body = B2DBody
|
|
2
|
+
|
|
3
|
+
class B2DBody
|
|
4
|
+
|
|
5
|
+
def self.defaults
|
|
6
|
+
{
|
|
7
|
+
position: [0, 0],
|
|
8
|
+
type: KStaticBodyType
|
|
9
|
+
}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def self.new(world, options = {})
|
|
14
|
+
|
|
15
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
16
|
+
|
|
17
|
+
# This line is needed to ensure that the position is a CGPoint
|
|
18
|
+
position = CGPointMake(options[:position][0], options[:position][1])
|
|
19
|
+
|
|
20
|
+
world.createBodyInPosition(position.to_pixel_coordinates,
|
|
21
|
+
type: options[:type])
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def fixure_defaults
|
|
26
|
+
{
|
|
27
|
+
friction: 0.2,
|
|
28
|
+
restitution: 0,
|
|
29
|
+
density: 0,
|
|
30
|
+
is_sensor: false
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def edge_fixure(*hash)
|
|
36
|
+
|
|
37
|
+
options = hash.pop
|
|
38
|
+
options = options.nil? ? fixure_defaults : fixure_defaults.merge!(options)
|
|
39
|
+
|
|
40
|
+
# The following lines are needed to ensure that the start_point and
|
|
41
|
+
# end_points are CGPoints
|
|
42
|
+
start_point = CGPointMake(options[:start_point][0], options[:start_point][1])
|
|
43
|
+
end_point = CGPointMake(options[:end_point][0], options[:end_point][1])
|
|
44
|
+
|
|
45
|
+
edge_shape = B2DEdgeShape.alloc.initWithStartPoint(start_point.to_pixel_coordinates,
|
|
46
|
+
endPoint: end_point.to_pixel_coordinates)
|
|
47
|
+
|
|
48
|
+
addFixureForShape(edge_shape,
|
|
49
|
+
friction: options[:friction],
|
|
50
|
+
restitution: options[:restitution],
|
|
51
|
+
density: options[:density],
|
|
52
|
+
isSensor: options[:is_sensor])
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def polygon_fixure(*hash)
|
|
57
|
+
|
|
58
|
+
options = hash.pop
|
|
59
|
+
options = options.nil? ? fixure_defaults : fixure_defaults.merge!(options)
|
|
60
|
+
|
|
61
|
+
# This line is needed to ensure that the box is a CGSize
|
|
62
|
+
box_size = CGSizeMake(options[:box][0], options[:box][1])
|
|
63
|
+
|
|
64
|
+
polygon_shape = B2DPolygonShape.alloc.initWithBoxSize(box_size.to_pixel_coordinates)
|
|
65
|
+
|
|
66
|
+
addFixureForShape(polygon_shape,
|
|
67
|
+
friction: options[:friction],
|
|
68
|
+
restitution: options[:restitution],
|
|
69
|
+
density: options[:density],
|
|
70
|
+
isSensor: options[:is_sensor])
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def apply_force_defaults
|
|
75
|
+
{
|
|
76
|
+
location: self.center,
|
|
77
|
+
as_impulse: true
|
|
78
|
+
}
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def apply_force(options = {})
|
|
83
|
+
|
|
84
|
+
options = options.nil? ? apply_force_defaults : apply_force_defaults.merge!(options)
|
|
85
|
+
|
|
86
|
+
applyForce(options[:force],
|
|
87
|
+
atLocation: options[:location],
|
|
88
|
+
asImpulse: options[:as_impulse])
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def apply_torque_defaults
|
|
93
|
+
{
|
|
94
|
+
as_impulse: true
|
|
95
|
+
}
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def apply_torque(options = {})
|
|
100
|
+
|
|
101
|
+
options = options.nil? ? apply_torque_defaults : apply_torque_defaults.merge!(options)
|
|
102
|
+
|
|
103
|
+
applyTorque(options[:torque],
|
|
104
|
+
asImpulse: options[:as_impulse])
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
module Joybox
|
|
2
|
+
|
|
3
|
+
class World < B2DWorld
|
|
4
|
+
|
|
5
|
+
def self.defaults
|
|
6
|
+
{
|
|
7
|
+
gravity: [0, 0],
|
|
8
|
+
allows_sleeping: true,
|
|
9
|
+
continuos_physics: true
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def self.new(options)
|
|
15
|
+
|
|
16
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
17
|
+
|
|
18
|
+
world = World.alloc.init
|
|
19
|
+
|
|
20
|
+
world.gravity = options[:gravity]
|
|
21
|
+
world.allowsSleeping = options[:allows_sleeping]
|
|
22
|
+
world.continuosPhysics = options[:continuos_physics]
|
|
23
|
+
|
|
24
|
+
world
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def step_defaults
|
|
29
|
+
{
|
|
30
|
+
velocity_interactions: 8,
|
|
31
|
+
position_interactions: 1
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def step(options = {})
|
|
37
|
+
|
|
38
|
+
options = options.nil? ? step_defaults : step_defaults.merge!(options)
|
|
39
|
+
|
|
40
|
+
stepWithDelta(options[:delta],
|
|
41
|
+
velocityInteractions: options[:velocity_interactions],
|
|
42
|
+
positionInteractions: options[:position_interactions])
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def new_body(options = {}, &block)
|
|
47
|
+
|
|
48
|
+
body = Body.new(self, options)
|
|
49
|
+
body.instance_eval(&block)
|
|
50
|
+
|
|
51
|
+
body
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def setup_collision_listener
|
|
56
|
+
|
|
57
|
+
@contact_listener = B2DContactListener.new
|
|
58
|
+
addContactListener(@contact_listener)
|
|
59
|
+
|
|
60
|
+
@listening_bodies = Hash.new
|
|
61
|
+
|
|
62
|
+
@contact_listener.beginContact = lambda { | first_body, second_body, is_touching |
|
|
63
|
+
|
|
64
|
+
@listening_bodies[first_body].call(second_body, is_touching) if @listening_bodies.include? first_body
|
|
65
|
+
@listening_bodies[second_body].call(first_body, is_touching) if @listening_bodies.include? second_body
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def when_collide(body, &block)
|
|
71
|
+
|
|
72
|
+
setup_collision_listener unless @contact_listener
|
|
73
|
+
|
|
74
|
+
@listening_bodies[body] = block
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Joybox
|
|
2
|
+
module Actions
|
|
3
|
+
|
|
4
|
+
class Move
|
|
5
|
+
|
|
6
|
+
def self.defaults
|
|
7
|
+
{
|
|
8
|
+
duration: 0.3,
|
|
9
|
+
position: [0, 0]
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.by(options = {})
|
|
14
|
+
|
|
15
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
16
|
+
|
|
17
|
+
CCMoveBy.actionWithDuration(options[:duration], position: options[:position])
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def self.to(options = {})
|
|
22
|
+
|
|
23
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
24
|
+
|
|
25
|
+
CCMoveTo.actionWithDuration(options[:duration], position: options[:position])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Joybox
|
|
2
|
+
module Actions
|
|
3
|
+
|
|
4
|
+
class Repeat
|
|
5
|
+
|
|
6
|
+
def self.defaults
|
|
7
|
+
{
|
|
8
|
+
action: nil
|
|
9
|
+
}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
#TODO: Revisar esto, no estoy completamente seguro que deba de cambiar la implementacion
|
|
13
|
+
# original (nombre del metodo)
|
|
14
|
+
def self.forever(options = {})
|
|
15
|
+
|
|
16
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
17
|
+
|
|
18
|
+
CCRepeatForever.actionWithAction(options[:action])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Joybox
|
|
2
|
+
module Actions
|
|
3
|
+
|
|
4
|
+
class Rotate
|
|
5
|
+
|
|
6
|
+
def self.defaults
|
|
7
|
+
{
|
|
8
|
+
duration: 0.3,
|
|
9
|
+
angle: 0
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.by(options = {})
|
|
14
|
+
|
|
15
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
16
|
+
|
|
17
|
+
CCRotateBy.actionWithDuration(options[:duration], angle: options[:angle])
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def self.to(options = {})
|
|
22
|
+
|
|
23
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
24
|
+
|
|
25
|
+
CCRotateTo.actionWithDuration(options[:duration], angle: options[:angle])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Joybox
|
|
2
|
+
module Actions
|
|
3
|
+
|
|
4
|
+
class Scale
|
|
5
|
+
|
|
6
|
+
def self.defaults
|
|
7
|
+
{
|
|
8
|
+
duration: 0.3,
|
|
9
|
+
scale: 0
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.by(options = {})
|
|
14
|
+
|
|
15
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
16
|
+
|
|
17
|
+
CCScaleBy.actionWithDuration(options[:duration], scale: options[:scale])
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def self.to(options = {})
|
|
22
|
+
|
|
23
|
+
options = options.nil? ? defaults : defaults.merge!(options)
|
|
24
|
+
|
|
25
|
+
CCScaleTo.actionWithDuration(options[:duration], scale: options[:scale])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|