belts 0.1.1

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 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: []