belts 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b0903430f0f1a0f6fad3768aefe49e5fae3f70521480a9a6def841ce15992ede
4
+ data.tar.gz: 112b831db0f9f1e9699109a19b35c6b14523087c9c9a4c5fe92c5fa543e7f8bb
5
+ SHA512:
6
+ metadata.gz: 643ce0ca3130c152f96095d5126bcc5344e2b69201080fc4e2e5f7d2e6247f80c19f2dc9c502eddc5c5e9a717a9a119f592cd8e659555f38b2a72e9398b71c38
7
+ data.tar.gz: 345e803b6a713c25fa2ba7aeb06af32c47027a3780a03369f7a7845b3746d6f2bed35366c14b1f28c16cd64cc031a56bb2239839148b3341c2e5f3bd61485ac8
data/bin/belts ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'thor'
3
+ require 'belts'
4
+
5
+ class BeltsCLI < Thor
6
+ default_task :start
7
+
8
+ desc "start", "Starts the game"
9
+ subcommand "start", Belts::Initializer
10
+
11
+ desc "new NAME", "Generate a new project in the current directory with the given NAME"
12
+ subcommand "new", Belts::Generator
13
+ end
14
+
15
+ BeltsCLI.start
@@ -0,0 +1,42 @@
1
+ module Belts
2
+ class Engine < Thor::Group
3
+ include Thor::Actions
4
+
5
+ argument :name
6
+ class_option :ruby_version, default: RUBY_VERSION
7
+
8
+ def self.source_root
9
+ File.dirname(__FILE__)
10
+ end
11
+
12
+ def create_gemfile
13
+ template("templates/.ruby-version.tt", "#{name}/.ruby-version")
14
+ template("templates/Gemfile.tt", "#{name}/Gemfile")
15
+ end
16
+
17
+ def create_config
18
+ config_files = [
19
+ "application.rb",
20
+ "game.rb"
21
+ ]
22
+
23
+ config_files.each do |file|
24
+ template("templates/config/#{file}.tt", "#{name}/config/#{file}")
25
+ end
26
+ end
27
+
28
+ def create_app
29
+ app_files = [
30
+ "components/spinner.rb",
31
+ "prefabs/spinning_cube.rb",
32
+ "prefabs/camera_3d.rb",
33
+ "scenes/main_scene.rb",
34
+ "systems/spinner_system.rb"
35
+ ]
36
+
37
+ app_files.each do |file|
38
+ template("templates/app/#{file}.tt", "#{name}/app/#{file}")
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,12 @@
1
+ module Belts
2
+ class Generator < Thor
3
+ default_task :new
4
+
5
+ desc "new NAME", "Generate a new project in the current directory with the given NAME"
6
+ def new(name)
7
+ invoke :engine, name
8
+ end
9
+
10
+ register(Belts::Engine, "engine", "engine", "Badjoras")
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module Belts
2
+ class Initializer < Thor
3
+ default_task :start
4
+
5
+ desc "start", "Starts the game"
6
+ def start
7
+ app_loader = Zeitwerk::Loader.new
8
+ app_loader.push_dir('config')
9
+ Dir.glob('app/*').each do |dir|
10
+ app_loader.push_dir dir
11
+ end
12
+ app_loader.setup
13
+
14
+ Application.new
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '<%= options[:ruby_version] %>'
4
+
5
+ gem 'belts'
@@ -0,0 +1 @@
1
+ Spinner = Struct.new(nil)
@@ -0,0 +1,3 @@
1
+ class Camera3d < BeltsEngine::Prefab
2
+ component :camera_data, CameraData.new(:perspective)
3
+ end
@@ -0,0 +1,4 @@
1
+ class SpinningCube < BeltsEngine::Prefab
2
+ component :render_data, RenderData.new(:cube, Vec3.right)
3
+ component :spinner, Spinner.new
4
+ end
@@ -0,0 +1,4 @@
1
+ class MainScene < BeltsEngine::Scene
2
+ prefab :Camera3d, position: Vec3.back * 5
3
+ prefab :SpinningCube, position: Vec3.zero
4
+ end
@@ -0,0 +1,14 @@
1
+ class SpinnerSystem < BeltsEngine::System
2
+ collection :spinners,
3
+ with: [:transform, :spinner]
4
+
5
+ def update
6
+ speed = @time.delta_time * 30
7
+
8
+ spinners.each_with_components do |transform:, **|
9
+ transform.rotation.x += speed
10
+ transform.rotation.y += speed
11
+ transform.rotation.z += speed
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ class Application < BeltsEngine::Application
2
+ config.plugins << BeltsOpengl
3
+ end
@@ -0,0 +1,3 @@
1
+ class Game < BeltsEngine::Game
2
+ config.main_scene = :MainScene
3
+ end
data/lib/belts.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'belts_engine'
2
+ require 'belts_opengl'
3
+
4
+ loader = Zeitwerk::Loader.for_gem
5
+ loader.setup
6
+
7
+ module Belts
8
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: belts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Guilherme Graca
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: belts_engine
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: belts_opengl
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.2.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.1
55
+ description:
56
+ email:
57
+ executables:
58
+ - belts
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - bin/belts
63
+ - lib/belts.rb
64
+ - lib/belts/engine.rb
65
+ - lib/belts/generator.rb
66
+ - lib/belts/initializer.rb
67
+ - lib/belts/templates/Gemfile.tt
68
+ - lib/belts/templates/app/components/spinner.rb.tt
69
+ - lib/belts/templates/app/prefabs/camera_3d.rb.tt
70
+ - lib/belts/templates/app/prefabs/spinning_cube.rb.tt
71
+ - lib/belts/templates/app/scenes/main_scene.rb.tt
72
+ - lib/belts/templates/app/systems/spinner_system.rb.tt
73
+ - lib/belts/templates/config/application.rb.tt
74
+ - lib/belts/templates/config/game.rb.tt
75
+ homepage: https://github.com/ggraca/belts
76
+ licenses:
77
+ - MIT
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 3.1.2
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubygems_version: 3.3.7
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: A data-oriented game engine for Ruby.
98
+ test_files: []