mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-16 16:12:35 +00:00
Compare commits
171 Commits
v0.0.1
...
f10b98b0f0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f10b98b0f0 | ||
| 8f2d7ff905 | |||
| 580c9d79ce | |||
| 07c8dfa45b | |||
|
|
b69bdc8e46 | ||
| 3481de2498 | |||
|
|
7bcd973a88 | ||
| 1d34cbb63d | |||
|
|
2df2df8488 | ||
| 87bff4ab82 | |||
| cf37b94d80 | |||
| 0fe1d85924 | |||
| ec2b32ff92 | |||
| 3986b1b0af | |||
| 58b2f8b890 | |||
| 5cb48233fb | |||
| da54bf5c53 | |||
| 3570a80d67 | |||
| 51363d2e3d | |||
| a16e14b0e5 | |||
|
|
4ebc4772a1 | ||
| 15ba3fb15b | |||
| c5e0f33f21 | |||
| d3fbf5dcf5 | |||
| 5b662f83cf | |||
| 55bfe6ed79 | |||
| bd414cf765 | |||
| c848a11c12 | |||
| 5759055838 | |||
| f04217ccc7 | |||
| 5ebcc56c33 | |||
| 8420ccd364 | |||
| 95bea199ed | |||
| aa30ff73d0 | |||
| 791351f2f5 | |||
| 9aa5dc7174 | |||
| c7590366a6 | |||
| b9c30ade80 | |||
| ecbbc77ca7 | |||
| 85ec285263 | |||
| 4c8e6c3d5f | |||
| 9558370ab9 | |||
| e09bd06d24 | |||
| 87b4b8ef92 | |||
| 2a36c58abe | |||
| e69dd3402d | |||
| dd7a7ac602 | |||
| 985f7c331f | |||
| b6c64b4b6b | |||
| d91398b529 | |||
| f7945bf47d | |||
| d72e8ccbd0 | |||
| 4ee97cca4b | |||
| ce90284001 | |||
| 1d7cd19b41 | |||
| f6e4a509fd | |||
| b4a0a7a8bc | |||
| 65cfc1a124 | |||
| 9264ef6e58 | |||
| 635f4e3720 | |||
| 5827f0b907 | |||
| bac0311263 | |||
| 94c3dea7b9 | |||
| fbdea30015 | |||
| dae950c72a | |||
| 7c81dd93e3 | |||
| fa2873bb8f | |||
| f72a8d4c35 | |||
| d03c3ffcd8 | |||
| 644c1916b2 | |||
| a0f8ce4bfb | |||
| cf1e72225c | |||
| e94f2582f9 | |||
| bae6a6a332 | |||
| e3a2c9abe0 | |||
| bc695df4a1 | |||
| bc480f9fae | |||
| d212691b71 | |||
| 95fc6272b8 | |||
| d3603947cc | |||
| 029d9b1951 | |||
| 6520051938 | |||
| 8d956131d1 | |||
| 7f16efe0a4 | |||
| c92ea9ec73 | |||
| c9ba1ab94a | |||
| 2000f601d8 | |||
| a078645b94 | |||
| c1eb02a106 | |||
| a3b4c6e651 | |||
| fd3785cdcd | |||
| 06fb2c0e43 | |||
| d524c21332 | |||
| 85dd90b2f4 | |||
| 1629cf4605 | |||
| f3c3a1047f | |||
| face4b092a | |||
| 75185425b6 | |||
| bb21de2e2a | |||
| c53d42166b | |||
| c05009a000 | |||
| 9593d341bf | |||
| 27de5667be | |||
| bb8e210362 | |||
| 15e5d0a5e1 | |||
| 87ae77a9cb | |||
| d293772690 | |||
| 9a195fbf68 | |||
| d839811cfd | |||
| 578c00673d | |||
| 2ad1385fb4 | |||
| cb7b3d4883 | |||
| 87fcc3a05c | |||
| 18a62b81cc | |||
| 45021a92aa | |||
| 3d86661921 | |||
| f32dbfabeb | |||
| 0d1d7ff6bc | |||
| 35d6061198 | |||
| fd228aa0c0 | |||
| d6802c8756 | |||
| 99ae19c34d | |||
| 1b6019419b | |||
| eb1bfe204b | |||
| dbf4edbb93 | |||
| b8e53c7a88 | |||
| 8b35bf037e | |||
| 31f0fa141b | |||
| 4f1b490600 | |||
| 201ddabbcc | |||
| ea68748234 | |||
| c1b5e72d7d | |||
| 46cffa293e | |||
| c25df59819 | |||
| e7b84bd123 | |||
| 75f94963b2 | |||
| 59334132c8 | |||
| e4333a82b8 | |||
| ff1d34deec | |||
| af19166af2 | |||
| e076ce8612 | |||
| 6aeee41a71 | |||
| 93a9e2215c | |||
| 18595bdf7f | |||
| 2ae97aa993 | |||
| c1ec292570 | |||
| 40d1105fb8 | |||
| e038dcbe24 | |||
| 4af7f21a51 | |||
| f3d3ceebb8 | |||
| b091a489af | |||
| 1bfc6e6929 | |||
| 0b40e042bf | |||
| 819b3989de | |||
| b559c7c383 | |||
| 8df05eda13 | |||
| f7936b38bc | |||
| f72008369d | |||
| b6d7a6ebdb | |||
| e41a2b6524 | |||
| eb7a7fc6d6 | |||
| 19f5a0cd9c | |||
| ecee086590 | |||
| 954c6899be | |||
| f41078b14b | |||
| a2089c0ae1 | |||
| 93522703f9 | |||
| ee844f256f | |||
| 42191729ae | |||
| 06502abe3e | |||
| 9cc97fd6ec |
37
.github/workflows/ruby.yml
vendored
Normal file
37
.github/workflows/ruby.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
|
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
||||||
|
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
||||||
|
|
||||||
|
name: Ruby
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Ruby
|
||||||
|
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
||||||
|
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
||||||
|
# uses: ruby/setup-ruby@v1
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: 2.7
|
||||||
|
- name: Install Gosu dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update -y -qq
|
||||||
|
sudo apt-get install -y libsdl2-dev libgl1-mesa-dev libfontconfig1-dev libopenal-dev libsndfile1-dev libmpg123-dev cmake:
|
||||||
|
- name: Install dependencies
|
||||||
|
run: bundle install
|
||||||
|
- name: Run tests
|
||||||
|
run: bundle exec rake
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,5 @@
|
|||||||
*.dat
|
*.dat
|
||||||
profile.*
|
profile.*
|
||||||
|
pkg/*
|
||||||
|
data/*
|
||||||
|
!data/.gitkeep
|
||||||
|
|||||||
8
.rubocop.yml
Normal file
8
.rubocop.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Style/StringLiterals:
|
||||||
|
EnforcedStyle: double_quotes
|
||||||
|
|
||||||
|
Metrics/MethodLength:
|
||||||
|
Max: 40
|
||||||
|
|
||||||
|
Style/EmptyMethod:
|
||||||
|
EnforcedStyle: expanded
|
||||||
16
Gemfile
16
Gemfile
@@ -1,3 +1,15 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
gem "opengl-bindings"
|
gem "cyberarm_engine", git: "https://github.com/cyberarm/cyberarm_engine"
|
||||||
gem "cyberarm_engine"
|
gem "i18n"
|
||||||
|
gem "nokogiri", ">= 1.11.0.rc1"
|
||||||
|
gem "opengl-bindings", require: "opengl"
|
||||||
|
gem "rake"
|
||||||
|
|
||||||
|
group(:packaging) do
|
||||||
|
gem "excon"
|
||||||
|
gem "ocra"
|
||||||
|
gem "releasy", github: "gosu/releasy"
|
||||||
|
gem "rubyzip"
|
||||||
|
end
|
||||||
|
|||||||
54
Gemfile.lock
54
Gemfile.lock
@@ -1,19 +1,57 @@
|
|||||||
|
GIT
|
||||||
|
remote: https://github.com/cyberarm/cyberarm_engine
|
||||||
|
revision: d1d87db070578fefe97f275b63157b4212a44a89
|
||||||
|
specs:
|
||||||
|
cyberarm_engine (0.22.0)
|
||||||
|
excon (~> 0.88)
|
||||||
|
gosu (~> 1.1)
|
||||||
|
gosu_more_drawables (~> 0.3)
|
||||||
|
|
||||||
|
GIT
|
||||||
|
remote: https://github.com/gosu/releasy.git
|
||||||
|
revision: e8a24c079c4930c6ddbab17fc444027ba41491ca
|
||||||
|
specs:
|
||||||
|
releasy (0.2.3)
|
||||||
|
bundler (>= 1.2.1)
|
||||||
|
cri (~> 2.1.0)
|
||||||
|
ocra (~> 1.3.0)
|
||||||
|
rake (>= 0.9.2.2)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
cyberarm_engine (0.10.2)
|
concurrent-ruby (1.1.10)
|
||||||
gosu (~> 0.14.0)
|
cri (2.1.0)
|
||||||
gosu (0.14.5)
|
excon (0.96.0)
|
||||||
gosu (0.14.5-x86-mingw32)
|
gosu (1.4.5)
|
||||||
opengl-bindings (1.6.9)
|
gosu_more_drawables (0.3.1)
|
||||||
|
i18n (1.12.0)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
mini_portile2 (2.8.1)
|
||||||
|
nokogiri (1.14.3)
|
||||||
|
mini_portile2 (~> 2.8.0)
|
||||||
|
racc (~> 1.4)
|
||||||
|
ocra (1.3.11)
|
||||||
|
opengl-bindings (1.6.13)
|
||||||
|
racc (1.6.2)
|
||||||
|
rake (13.0.6)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
x86-mingw32
|
x64-mingw-ucrt
|
||||||
|
x64-mingw32
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
cyberarm_engine
|
cyberarm_engine!
|
||||||
|
excon
|
||||||
|
i18n
|
||||||
|
nokogiri (>= 1.11.0.rc1)
|
||||||
|
ocra
|
||||||
opengl-bindings
|
opengl-bindings
|
||||||
|
rake
|
||||||
|
releasy!
|
||||||
|
rubyzip
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.17.3
|
2.4.1
|
||||||
|
|||||||
36
README.md
36
README.md
@@ -1,14 +1,46 @@
|
|||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
# I-MIC FPS
|
# I-MIC FPS
|
||||||
An endeavor to create a multiplayer first-person-shooter in pure Ruby; Using C extensions only for Rendering, Sound, and Input. ([Gosu](https://libgosu.org) and [opengl-bindings](https://github.com/vaiorabbit/ruby-opengl/))
|

|
||||||
|
|
||||||
|
Creating a multiplayer first-person-shooter in pure Ruby; Using C extensions only for Rendering, Sound, and Input. ([Gosu](https://libgosu.org) and [opengl-bindings](https://github.com/vaiorabbit/ruby-opengl/))
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Using
|
## Using
|
||||||
Requires a Ruby runtime that supports the gosu and opengl-bindings C-extensions (truffleruby 1.0.0-rc12 did not work when tested. Rubinus was not tested.)
|
Ruby 3.0+ interpeter with support for the Gosu game library C extension.
|
||||||
* Clone or download this repo
|
* Clone or download this repo
|
||||||
* `bundle install`
|
* `bundle install`
|
||||||
* `bundle exec ruby i-mic-fps.rb [options]`
|
* `bundle exec ruby i-mic-fps.rb [options]`
|
||||||
|
|
||||||
|
### System Requirements
|
||||||
|
| Minimum | |
|
||||||
|
| :------ | ----------------------: |
|
||||||
|
| OS | Windows 10 or GNU/Linux |
|
||||||
|
| CPU | Intel Core i5-3320M |
|
||||||
|
| RAM | 512 MB |
|
||||||
|
| GPU | OpenGL 3.30 Capable |
|
||||||
|
| Storage | To Be Determined |
|
||||||
|
| Network | To Be Determined |
|
||||||
|
| Display | 1280x720 |
|
||||||
|
|
||||||
|
| Recommended | |
|
||||||
|
| :---------- | ----------------------------: |
|
||||||
|
| OS | Windows 10 or GNU/Linux |
|
||||||
|
| CPU | AMD Ryzen 5 3600 |
|
||||||
|
| RAM | 1 GB+ |
|
||||||
|
| GPU | AMD Radeon RX 5700 XT |
|
||||||
|
| Storage | To Be Determined (< 4 GB) |
|
||||||
|
| Network | Broadband Internet Connection |
|
||||||
|
| Display | 1920x1080 60Hz |
|
||||||
|
|
||||||
|
Note: Recommended CPU and GPU are those of the primary development system and are overkill at this point.
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
* `--native` - Launch in fullscreen using primary displays resolution
|
* `--native` - Launch in fullscreen using primary displays resolution
|
||||||
* `--profile` - Run ruby-prof profiler
|
* `--profile` - Run ruby-prof profiler
|
||||||
|
* `--mesa-override` - (Linux) Force MESA to use OpenGL/GLSL version 3.30
|
||||||
* `--savedemo` - Record camera movement and key events to playback later *(alpha-quality feature)*
|
* `--savedemo` - Record camera movement and key events to playback later *(alpha-quality feature)*
|
||||||
* `--playdemo` - Plays the previously recorded demo *(alpha-quality feature)*
|
* `--playdemo` - Plays the previously recorded demo *(alpha-quality feature)*
|
||||||
27
Rakefile
Normal file
27
Rakefile
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "json"
|
||||||
|
require "tmpdir"
|
||||||
|
require "fileutils"
|
||||||
|
|
||||||
|
require "zip"
|
||||||
|
require "excon"
|
||||||
|
require "releasy"
|
||||||
|
require "bundler/setup" # Releasy requires that your application uses bundler.
|
||||||
|
require_relative "lib/version"
|
||||||
|
|
||||||
|
Releasy::Project.new do
|
||||||
|
name IMICFPS::NAME
|
||||||
|
version IMICFPS::VERSION
|
||||||
|
|
||||||
|
executable "i-mic-fps.rb"
|
||||||
|
files ["lib/**/*.*", "assets/**/*.*", "blends/**/*.*", "shaders/**/*.*", "static/**/*.*", "maps/**/*.*", "data/**/*.*"]
|
||||||
|
exclude_encoding # Applications that don't use advanced encoding (e.g. Japanese characters) can save build size with this.
|
||||||
|
verbose
|
||||||
|
|
||||||
|
add_build :windows_folder do
|
||||||
|
icon "static/icon.ico"
|
||||||
|
executable_type :console # Assuming you don't want it to run with a console window.
|
||||||
|
add_package :exe # Windows self-extracting archive.
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,16 +1,21 @@
|
|||||||
require "gosu"
|
# frozen_string_literal: true
|
||||||
require_relative "lib/objects/text"
|
|
||||||
|
begin
|
||||||
|
require_relative "../cyberarm_engine/lib/cyberarm_engine"
|
||||||
|
rescue LoadError
|
||||||
|
require "cyberarm_engine"
|
||||||
|
end
|
||||||
|
|
||||||
class Window < Gosu::Window
|
class Window < Gosu::Window
|
||||||
def initialize
|
def initialize
|
||||||
super(Gosu.screen_width, Gosu.screen_height, fullscreen: true)
|
super(Gosu.screen_width, Gosu.screen_height, fullscreen: true)
|
||||||
$window = self
|
CyberarmEngine::Window.instance = self
|
||||||
@size = 50
|
@size = 50
|
||||||
@slope = 250
|
@slope = 250
|
||||||
@color_step = 10
|
@color_step = 10
|
||||||
@base_color = Gosu::Color.rgb(255, 127, 0)
|
@base_color = Gosu::Color.rgb(255, 127, 0)
|
||||||
@title = Text.new("I-MIC FPS", color: Gosu::Color.rgb(255,127,0), size: 100, x: 0, y: 15, alignment: :center)
|
@title = CyberarmEngine::Text.new("I-MIC FPS", color: Gosu::Color.rgb(255, 127, 0), size: 100, x: 0, y: 15, alignment: :center)
|
||||||
@singleplayer = Text.new("Singleplayer", color: Gosu::Color.rgb(0,127,127), size: 50, x: 0, y: 150, alignment: :center)
|
@singleplayer = CyberarmEngine::Text.new("Singleplayer", color: Gosu::Color.rgb(0, 127, 127), size: 50, x: 0, y: 150, alignment: :center)
|
||||||
end
|
end
|
||||||
|
|
||||||
def draw
|
def draw
|
||||||
|
|||||||
35
assets/README.md
Normal file
35
assets/README.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# IMIC FPS Assets
|
||||||
|
## Directory Structure
|
||||||
|
* /__package__
|
||||||
|
* /__name__
|
||||||
|
* /model
|
||||||
|
* model.obj
|
||||||
|
* /scripts
|
||||||
|
* script.rb
|
||||||
|
* /textures
|
||||||
|
* texture.png
|
||||||
|
* manifest.yaml
|
||||||
|
|
||||||
|
## Manifest File
|
||||||
|
```yaml
|
||||||
|
name: "Friendly Name of Object"
|
||||||
|
model: "model.obj" # path to model relative to package/name/model/
|
||||||
|
|
||||||
|
# optional options:
|
||||||
|
# Type of collision detection to use: null, boundingbox, orientated_bb, mesh
|
||||||
|
collision: "mesh"
|
||||||
|
# Path to collision model or null to use `model`
|
||||||
|
collision_mesh: null
|
||||||
|
# Array of scripts to load, relative to package/name/scripts/
|
||||||
|
# Optionally shared scripts can be loaded from package/shared/scripts/ if prefixed with an exclaimation mark "!"
|
||||||
|
scripts: [
|
||||||
|
"script",
|
||||||
|
"!shared_script"
|
||||||
|
]
|
||||||
|
# Array of assets to preload that this asset uses/requires
|
||||||
|
uses: [
|
||||||
|
-
|
||||||
|
package: "base"
|
||||||
|
name: "door"
|
||||||
|
]
|
||||||
|
```
|
||||||
5
assets/base/alternate_tank/manifest.yaml
Normal file
5
assets/base/alternate_tank/manifest.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
name: "Alternate Tank"
|
||||||
|
model: "alternate_tank.obj"
|
||||||
|
scripts: [
|
||||||
|
"!vehicle"
|
||||||
|
]
|
||||||
42
assets/base/alternate_tank/model/alternate_tank.mtl
Normal file
42
assets/base/alternate_tank/model/alternate_tank.mtl
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Blender MTL File: 'alternate_tank.blend'
|
||||||
|
# Material Count: 4
|
||||||
|
|
||||||
|
newmtl Body
|
||||||
|
Ns 110.250015
|
||||||
|
Ka 0.900000 0.900000 0.900000
|
||||||
|
Kd 0.029064 0.018578 0.011797
|
||||||
|
Ks 0.883333 0.883333 0.883333
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 3
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.527719 0.213857 0.101860
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.001
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.029064 0.018578 0.011797
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl wheel
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.044455 0.044455 0.044455
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
2461
assets/base/alternate_tank/model/alternate_tank.obj
Normal file
2461
assets/base/alternate_tank/model/alternate_tank.obj
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,6 @@
|
|||||||
name: "biped"
|
name: "biped"
|
||||||
model: "biped.obj"
|
model: "biped.obj"
|
||||||
|
collision: "mesh"
|
||||||
|
collision_mesh: null
|
||||||
|
collision_resolution: "dynamic"
|
||||||
|
physics: true
|
||||||
6
assets/base/character/manifest.yaml
Normal file
6
assets/base/character/manifest.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
name: "character"
|
||||||
|
model: "character.obj"
|
||||||
|
collision: "mesh"
|
||||||
|
collision_mesh: null
|
||||||
|
collision_resolution: "dynamic"
|
||||||
|
physics: true
|
||||||
13
assets/base/character/model/character.mtl
Normal file
13
assets/base/character/model/character.mtl
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Blender MTL File: 'character.blend'
|
||||||
|
# Material Count: 1
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 323.999994
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.800000 0.800000 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd /home/cyberarm/Code/i-mic-fps/assets/base/character/textures/Base.png
|
||||||
1558
assets/base/character/model/character.obj
Normal file
1558
assets/base/character/model/character.obj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
assets/base/character/textures/Base.png
Normal file
BIN
assets/base/character/textures/Base.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 223 KiB |
7
assets/base/door/manifest.yaml
Normal file
7
assets/base/door/manifest.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
name: "door"
|
||||||
|
model: "door.obj"
|
||||||
|
collision: "boundingbox"
|
||||||
|
scripts: [
|
||||||
|
"door"
|
||||||
|
]
|
||||||
13
assets/base/door/model/door.mtl
Normal file
13
assets/base/door/model/door.mtl
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Blender MTL File: 'door.blend'
|
||||||
|
# Material Count: 1
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 323.999994
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.800000 0.800000 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd /home/cyberarm/Code/i-mic-fps/assets/base/door/textures/door.png
|
||||||
55
assets/base/door/model/door.obj
Normal file
55
assets/base/door/model/door.obj
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Blender v2.80 (sub 75) OBJ File: 'door.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib door.mtl
|
||||||
|
o Cube
|
||||||
|
v 1.250000 2.400000 -0.125000
|
||||||
|
v 1.250000 0.000000 -0.125000
|
||||||
|
v 1.250000 2.400000 0.125000
|
||||||
|
v 1.250000 0.000000 0.125000
|
||||||
|
v 0.000000 0.000000 -0.125000
|
||||||
|
v 0.000000 2.400000 0.125000
|
||||||
|
v 0.000000 0.000000 0.125000
|
||||||
|
v 0.000000 2.400000 -0.125000
|
||||||
|
vt 0.923077 0.000000
|
||||||
|
vt 1.000000 0.500000
|
||||||
|
vt 0.923077 0.500000
|
||||||
|
vt 0.923077 0.960000
|
||||||
|
vt 0.846154 0.000000
|
||||||
|
vt 0.000000 0.959961
|
||||||
|
vt 0.384766 -0.000000
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 0.384615 0.960000
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 0.384615 0.000000
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt 0.923077 0.500000
|
||||||
|
vt 1.000000 0.500000
|
||||||
|
vt 0.769231 0.960000
|
||||||
|
vt 0.846154 0.000000
|
||||||
|
vt 0.846154 0.960000
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt 0.846154 0.960000
|
||||||
|
vt 0.384766 0.959961
|
||||||
|
vt 0.000000 0.960000
|
||||||
|
vt 0.923077 1.000000
|
||||||
|
vt 0.769231 0.000000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 2/1/1 7/2/1 5/3/1
|
||||||
|
f 1/4/2 4/5/2 2/1/2
|
||||||
|
f 8/6/3 2/7/3 5/8/3
|
||||||
|
f 3/9/4 7/10/4 4/11/4
|
||||||
|
f 8/12/5 3/13/5 1/14/5
|
||||||
|
f 7/15/6 8/16/6 5/17/6
|
||||||
|
f 2/1/1 4/18/1 7/2/1
|
||||||
|
f 1/4/2 3/19/2 4/5/2
|
||||||
|
f 8/6/3 1/20/3 2/7/3
|
||||||
|
f 3/9/4 6/21/4 7/10/4
|
||||||
|
f 8/12/5 6/22/5 3/13/5
|
||||||
|
f 7/15/6 6/23/6 8/16/6
|
||||||
11
assets/base/door/scripts/door.rb
Normal file
11
assets/base/door/scripts/door.rb
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
origin = entity.position
|
||||||
|
|
||||||
|
on.entity_moved do |event|
|
||||||
|
entity.position = if origin.distance3d(event.entity.position) <= 3.0
|
||||||
|
origin + Vector.up * 2.4
|
||||||
|
else
|
||||||
|
origin
|
||||||
|
end
|
||||||
|
end
|
||||||
BIN
assets/base/door/textures/door.png
Normal file
BIN
assets/base/door/textures/door.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
3
assets/base/editor/manifest.yaml
Normal file
3
assets/base/editor/manifest.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
name: "editor"
|
||||||
|
model: "editor.obj"
|
||||||
|
collision: "mesh"
|
||||||
32
assets/base/editor/model/editor.mtl
Normal file
32
assets/base/editor/model/editor.mtl
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Blender MTL File: 'editor.blend'
|
||||||
|
# Material Count: 3
|
||||||
|
|
||||||
|
newmtl body
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.011935 0.113782 0.401969
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl energy
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.000000 0.653036 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl eye
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.710554 0.177754 0.000000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
4703
assets/base/editor/model/editor.obj
Normal file
4703
assets/base/editor/model/editor.obj
Normal file
File diff suppressed because it is too large
Load Diff
4
assets/base/evergreen_tree/manifest.yaml
Normal file
4
assets/base/evergreen_tree/manifest.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
name: "evergreen_tree"
|
||||||
|
model: "evergreen_tree.dae"
|
||||||
|
collision: "boundingbox"
|
||||||
303
assets/base/evergreen_tree/model/evergreen_tree.dae
Normal file
303
assets/base/evergreen_tree/model/evergreen_tree.dae
Normal file
@@ -0,0 +1,303 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<asset>
|
||||||
|
<contributor>
|
||||||
|
<author>Blender User</author>
|
||||||
|
<authoring_tool>Blender 2.81.16 commit date:2019-12-04, commit time:11:32, hash:f1aa4d18d49d</authoring_tool>
|
||||||
|
</contributor>
|
||||||
|
<created>2020-01-30T13:33:36</created>
|
||||||
|
<modified>2020-01-30T13:33:36</modified>
|
||||||
|
<unit name="meter" meter="1"/>
|
||||||
|
<up_axis>Z_UP</up_axis>
|
||||||
|
</asset>
|
||||||
|
<library_effects>
|
||||||
|
<effect id="Material_002-effect">
|
||||||
|
<profile_COMMON>
|
||||||
|
<technique sid="common">
|
||||||
|
<lambert>
|
||||||
|
<emission>
|
||||||
|
<color sid="emission">0 0 0 1</color>
|
||||||
|
</emission>
|
||||||
|
<diffuse>
|
||||||
|
<color sid="diffuse">0 0.4868966 0.07537682 1</color>
|
||||||
|
</diffuse>
|
||||||
|
<index_of_refraction>
|
||||||
|
<float sid="ior">1.45</float>
|
||||||
|
</index_of_refraction>
|
||||||
|
</lambert>
|
||||||
|
</technique>
|
||||||
|
</profile_COMMON>
|
||||||
|
</effect>
|
||||||
|
<effect id="Material_003-effect">
|
||||||
|
<profile_COMMON>
|
||||||
|
<technique sid="common">
|
||||||
|
<lambert>
|
||||||
|
<emission>
|
||||||
|
<color sid="emission">0 0 0 1</color>
|
||||||
|
</emission>
|
||||||
|
<diffuse>
|
||||||
|
<color sid="diffuse">0 0.5173332 0.03164556 1</color>
|
||||||
|
</diffuse>
|
||||||
|
<index_of_refraction>
|
||||||
|
<float sid="ior">1.45</float>
|
||||||
|
</index_of_refraction>
|
||||||
|
</lambert>
|
||||||
|
</technique>
|
||||||
|
</profile_COMMON>
|
||||||
|
</effect>
|
||||||
|
<effect id="Material_001-effect">
|
||||||
|
<profile_COMMON>
|
||||||
|
<technique sid="common">
|
||||||
|
<lambert>
|
||||||
|
<emission>
|
||||||
|
<color sid="emission">0 0 0 1</color>
|
||||||
|
</emission>
|
||||||
|
<diffuse>
|
||||||
|
<color sid="diffuse">0.3031975 0.1076129 0.05296437 1</color>
|
||||||
|
</diffuse>
|
||||||
|
<index_of_refraction>
|
||||||
|
<float sid="ior">1.45</float>
|
||||||
|
</index_of_refraction>
|
||||||
|
</lambert>
|
||||||
|
</technique>
|
||||||
|
</profile_COMMON>
|
||||||
|
</effect>
|
||||||
|
</library_effects>
|
||||||
|
<library_images/>
|
||||||
|
<library_materials>
|
||||||
|
<material id="Material_002-material" name="Material.002">
|
||||||
|
<instance_effect url="#Material_002-effect"/>
|
||||||
|
</material>
|
||||||
|
<material id="Material_003-material" name="Material.003">
|
||||||
|
<instance_effect url="#Material_003-effect"/>
|
||||||
|
</material>
|
||||||
|
<material id="Material_001-material" name="Material.001">
|
||||||
|
<instance_effect url="#Material_001-effect"/>
|
||||||
|
</material>
|
||||||
|
</library_materials>
|
||||||
|
<library_geometries>
|
||||||
|
<geometry id="Plane_002-mesh" name="Plane.002">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane_002-mesh-positions">
|
||||||
|
<float_array id="Plane_002-mesh-positions-array" count="15">-0.7701593 0 0.7701593 0.7701593 0 0.7701593 -0.7701593 0 -0.7701593 0.7701593 0 -0.7701593 0 0.6063125 0</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_002-mesh-positions-array" count="5" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane_002-mesh-normals">
|
||||||
|
<float_array id="Plane_002-mesh-normals-array" count="15">0 -1 0 0 0.7857296 0.6185703 0.6185703 0.7857295 0 -0.6185703 0.7857295 0 0 0.7857296 -0.6185703</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_002-mesh-normals-array" count="5" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane_002-mesh-map-0">
|
||||||
|
<float_array id="Plane_002-mesh-map-0-array" count="36">0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_002-mesh-map-0-array" count="18" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane_002-mesh-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane_002-mesh-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles material="Material_002-material" count="6">
|
||||||
|
<input semantic="VERTEX" source="#Plane_002-mesh-vertices" offset="0"/>
|
||||||
|
<input semantic="NORMAL" source="#Plane_002-mesh-normals" offset="1"/>
|
||||||
|
<input semantic="TEXCOORD" source="#Plane_002-mesh-map-0" offset="2" set="0"/>
|
||||||
|
<p>2 0 0 1 0 1 0 0 2 0 1 3 1 1 4 4 1 5 1 2 6 3 2 7 4 2 8 2 3 9 0 3 10 4 3 11 3 4 12 2 4 13 4 4 14 2 0 15 3 0 16 1 0 17</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane_001-mesh" name="Plane.001">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane_001-mesh-positions">
|
||||||
|
<float_array id="Plane_001-mesh-positions-array" count="24">-1 0 1 1 0 1 -1 0 -1 1 0 -1 -0.4597772 0.5360521 0.4597772 0.4597772 0.5360521 0.4597772 -0.4597772 0.5360521 -0.4597772 0.4597772 0.5360521 -0.4597772</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_001-mesh-positions-array" count="8" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane_001-mesh-normals">
|
||||||
|
<float_array id="Plane_001-mesh-normals-array" count="30">0 -1 0 0 1 0 0 0.7098416 0.7043614 0.7043614 0.7098416 0 -0.7043614 0.7098416 0 0 0.7098416 -0.7043614 0 0.7098415 0.7043614 0.7043614 0.7098416 0 -0.7043614 0.7098416 0 0 0.7098415 -0.7043614</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_001-mesh-normals-array" count="10" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane_001-mesh-map-0">
|
||||||
|
<float_array id="Plane_001-mesh-map-0-array" count="72">0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane_001-mesh-map-0-array" count="36" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane_001-mesh-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane_001-mesh-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles material="Material_003-material" count="12">
|
||||||
|
<input semantic="VERTEX" source="#Plane_001-mesh-vertices" offset="0"/>
|
||||||
|
<input semantic="NORMAL" source="#Plane_001-mesh-normals" offset="1"/>
|
||||||
|
<input semantic="TEXCOORD" source="#Plane_001-mesh-map-0" offset="2" set="0"/>
|
||||||
|
<p>2 0 0 1 0 1 0 0 2 5 1 3 6 1 4 4 1 5 1 2 6 4 2 7 0 2 8 3 3 9 5 3 10 1 3 11 0 4 12 6 4 13 2 4 14 2 5 15 7 5 16 3 5 17 2 0 18 3 0 19 1 0 20 5 1 21 7 1 22 6 1 23 1 6 24 5 6 25 4 6 26 3 7 27 7 7 28 5 7 29 0 8 30 4 8 31 6 8 32 2 9 33 6 9 34 7 9 35</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-mesh" name="Plane">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-mesh-positions">
|
||||||
|
<float_array id="Plane-mesh-positions-array" count="24">-1.366034 0 1.366034 1.366034 0 1.366034 -1.366034 0 -1.366034 1.366034 0 -1.366034 -0.7 0.5 0.7 0.7 0.5 0.7 -0.7 0.5 -0.7 0.7 0.5 -0.7</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane-mesh-positions-array" count="8" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-mesh-normals">
|
||||||
|
<float_array id="Plane-mesh-normals-array" count="30">0 -1 0 0 1 0 0 0.7997263 0.6003649 0.6003648 0.7997263 0 -0.6003648 0.7997263 0 0 0.7997263 -0.6003649 0 0.7997263 0.6003648 0.6003648 0.7997263 0 -0.6003648 0.7997263 0 0 0.7997263 -0.6003648</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane-mesh-normals-array" count="10" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-mesh-map-0">
|
||||||
|
<float_array id="Plane-mesh-map-0-array" count="72">0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Plane-mesh-map-0-array" count="36" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-mesh-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-mesh-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles material="Material_002-material" count="12">
|
||||||
|
<input semantic="VERTEX" source="#Plane-mesh-vertices" offset="0"/>
|
||||||
|
<input semantic="NORMAL" source="#Plane-mesh-normals" offset="1"/>
|
||||||
|
<input semantic="TEXCOORD" source="#Plane-mesh-map-0" offset="2" set="0"/>
|
||||||
|
<p>2 0 0 1 0 1 0 0 2 5 1 3 6 1 4 4 1 5 1 2 6 4 2 7 0 2 8 3 3 9 5 3 10 1 3 11 0 4 12 6 4 13 2 4 14 2 5 15 7 5 16 3 5 17 2 0 18 3 0 19 1 0 20 5 1 21 7 1 22 6 1 23 1 6 24 5 6 25 4 6 26 3 7 27 7 7 28 5 7 29 0 8 30 4 8 31 6 8 32 2 9 33 6 9 34 7 9 35</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Circle-mesh" name="Circle">
|
||||||
|
<mesh>
|
||||||
|
<source id="Circle-mesh-positions">
|
||||||
|
<float_array id="Circle-mesh-positions-array" count="75">0 0 -0.5 -0.4755282 0 -0.1545085 -0.2938926 0 0.4045085 0.2938927 0 0.4045085 0.4755282 0 -0.1545085 0 2 -0.4 -0.3804226 2 -0.1236068 -0.235114 2 0.3236068 0.2351141 2 0.3236068 0.3804226 2 -0.1236068 3.64108e-7 4.3 -0.42 -0.3043377 4.3 -0.1988854 -0.1880909 4.3 0.1588854 0.1880916 4.3 0.1588854 0.3043384 4.3 -0.1988855 -8.83978e-7 6 -0.156 -0.2434713 6 0.0208916 -0.1504738 6 0.3071084 0.1504722 6 0.3071084 0.2434695 6 0.02089154 -1.64407e-6 7 -0.02799999 -0.1217368 7 0.06044578 -0.0752381 7 0.2035542 0.07523488 7 0.2035542 0.1217336 7 0.06044578</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Circle-mesh-positions-array" count="25" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Circle-mesh-normals">
|
||||||
|
<float_array id="Circle-mesh-normals-array" count="129">0 -1 0 0.5877706 -0.007034838 -0.8089972 -0.587305 0.04041773 -0.8083561 0.9502794 0.04041779 0.3087643 -0.9502794 0.04041779 0.3087645 0.5873049 0.04041779 -0.808356 0 0.04041779 0.9991829 0.95104 -0.005896985 0.3090115 0 0.07143497 0.9974453 -0.5877708 -0.007034659 -0.808997 0.9502357 0.04153919 0.3087501 -0.9502357 0.04153949 0.3087502 0.5846588 0.1030038 -0.8047139 -0.9510399 -0.005898416 0.3090118 0.5832006 0.124656 -0.8027067 0 -0.08686035 0.9962205 -0.5832004 0.1246552 -0.8027069 0 1 0 0 0.1030034 0.994681 -0.5846592 0.1030029 -0.8047137 0.9459978 0.1030041 0.3073732 -0.945998 0.1030026 0.3073735 0.5877708 -0.007034838 -0.808997 -0.587305 0.04041779 -0.808356 0.9502794 0.04041779 0.3087643 -0.9502794 0.04041779 0.3087646 0.587305 0.04041779 -0.808356 0 0.04041779 0.9991829 0.9510402 -0.005896985 0.3090113 0 0.07143497 0.9974453 -0.5877707 -0.007034659 -0.808997 0.9502358 0.04153919 0.3087501 -0.9502357 0.04153949 0.3087503 0.5846586 0.1030038 -0.804714 -0.9510401 -0.005898416 0.3090116 0.5832004 0.124656 -0.8027068 0 -0.08686041 0.9962205 -0.5832005 0.1246553 -0.802707 -1.10718e-5 1 0 0 0.1030033 0.994681 -0.5846592 0.1030029 -0.8047137 0.9459979 0.1030041 0.3073732 -0.9459978 0.1030027 0.3073736</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Circle-mesh-normals-array" count="43" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Circle-mesh-map-0">
|
||||||
|
<float_array id="Circle-mesh-map-0-array" count="276">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor source="#Circle-mesh-map-0-array" count="138" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Circle-mesh-vertices">
|
||||||
|
<input semantic="POSITION" source="#Circle-mesh-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles material="Material_001-material" count="46">
|
||||||
|
<input semantic="VERTEX" source="#Circle-mesh-vertices" offset="0"/>
|
||||||
|
<input semantic="NORMAL" source="#Circle-mesh-normals" offset="1"/>
|
||||||
|
<input semantic="TEXCOORD" source="#Circle-mesh-map-0" offset="2" set="0"/>
|
||||||
|
<p>4 0 0 3 0 1 2 0 2 5 1 3 14 1 4 9 1 5 1 2 6 5 2 7 0 2 8 4 3 9 8 3 10 3 3 11 2 4 12 6 4 13 1 4 14 0 5 15 9 5 16 4 5 17 3 6 18 7 6 19 2 6 20 13 7 21 19 7 22 18 7 23 8 8 24 12 8 25 7 8 26 5 9 27 11 9 28 10 9 29 9 10 30 13 10 31 8 10 32 6 11 33 12 11 34 11 11 35 15 12 36 24 12 37 19 12 38 12 13 39 16 13 40 11 13 41 14 14 42 15 14 43 19 14 44 12 15 45 18 15 46 17 15 47 11 16 48 15 16 49 10 16 50 22 17 51 24 17 52 20 17 53 17 18 54 23 18 55 22 18 56 16 19 57 20 19 58 15 19 59 18 20 60 24 20 61 23 20 62 16 21 63 22 21 64 21 21 65 2 0 66 1 0 67 0 0 68 0 0 69 4 0 70 2 0 71 5 22 72 10 22 73 14 22 74 1 23 75 6 23 76 5 23 77 4 24 78 9 24 79 8 24 80 2 25 81 7 25 82 6 25 83 0 26 84 5 26 85 9 26 86 3 27 87 8 27 88 7 27 89 13 28 90 14 28 91 19 28 92 8 29 93 13 29 94 12 29 95 5 30 96 6 30 97 11 30 98 9 31 99 14 31 100 13 31 101 6 32 102 7 32 103 12 32 104 15 33 105 20 33 106 24 33 107 12 34 108 17 34 109 16 34 110 14 35 111 10 35 112 15 35 113 12 36 114 13 36 115 18 36 116 11 37 117 16 37 118 15 37 119 20 38 120 21 38 121 22 38 122 22 17 123 23 17 124 24 17 125 17 39 126 18 39 127 23 39 128 16 40 129 21 40 130 20 40 131 18 41 132 19 41 133 24 41 134 16 42 135 17 42 136 22 42 137</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</library_geometries>
|
||||||
|
<library_visual_scenes>
|
||||||
|
<visual_scene id="Scene" name="Scene">
|
||||||
|
<node id="Plane_002" name="Plane.002" type="NODE">
|
||||||
|
<matrix sid="transform">1.326094 0 -0.4826588 0 0 3.66912 0 5.393049 0.4826588 0 1.326094 0 0 0 0 1</matrix>
|
||||||
|
<instance_geometry url="#Plane_002-mesh" name="Plane.002">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="Material_002-material" target="#Material_002-material">
|
||||||
|
<bind_vertex_input semantic="UVMap" input_semantic="TEXCOORD" input_set="0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="Plane_001" name="Plane.001" type="NODE">
|
||||||
|
<matrix sid="transform">1.544178 0 -0.2722803 0 0 4.0768 0 3.677205 0.2722803 0 1.544178 0 0 0 0 1</matrix>
|
||||||
|
<instance_geometry url="#Plane_001-mesh" name="Plane.001">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="Material_003-material" target="#Material_003-material">
|
||||||
|
<bind_vertex_input semantic="UVMap" input_semantic="TEXCOORD" input_set="0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="Plane" name="Plane" type="NODE">
|
||||||
|
<matrix sid="transform">1.6 0 0 0 0 4.16 0 2 0 0 1.6 0 0 0 0 1</matrix>
|
||||||
|
<instance_geometry url="#Plane-mesh" name="Plane">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="Material_002-material" target="#Material_002-material">
|
||||||
|
<bind_vertex_input semantic="UVMap" input_semantic="TEXCOORD" input_set="0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="Circle" name="Circle" type="NODE">
|
||||||
|
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
|
||||||
|
<instance_geometry url="#Circle-mesh" name="Circle">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="Material_001-material" target="#Material_001-material">
|
||||||
|
<bind_vertex_input semantic="UVMap" input_semantic="TEXCOORD" input_set="0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
</visual_scene>
|
||||||
|
</library_visual_scenes>
|
||||||
|
<scene>
|
||||||
|
<instance_visual_scene url="#Scene"/>
|
||||||
|
</scene>
|
||||||
|
</COLLADA>
|
||||||
4
assets/base/information_panel/manifest.yaml
Normal file
4
assets/base/information_panel/manifest.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
name: "information_panel"
|
||||||
|
model: "information_panel.obj"
|
||||||
|
collision: "mesh"
|
||||||
|
collision_mesh: null
|
||||||
32
assets/base/information_panel/model/information_panel.mtl
Normal file
32
assets/base/information_panel/model/information_panel.mtl
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Blender MTL File: 'information_panel.blend'
|
||||||
|
# Material Count: 3
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 323.999994
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.310814 0.310814 0.310814
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.001
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.000000 0.581504 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.002
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.496923 0.455629 0.203897
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
266
assets/base/information_panel/model/information_panel.obj
Normal file
266
assets/base/information_panel/model/information_panel.obj
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
# Blender v2.80 (sub 75) OBJ File: 'information_panel.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib information_panel.mtl
|
||||||
|
o Cube
|
||||||
|
v 0.892570 1.235657 -0.268793
|
||||||
|
v 0.900000 1.077635 -0.301229
|
||||||
|
v 0.900000 1.054090 0.375000
|
||||||
|
v 0.900000 0.875000 0.375000
|
||||||
|
v -0.907430 1.235657 -0.268793
|
||||||
|
v -0.900000 1.077635 -0.301229
|
||||||
|
v -1.000000 1.125000 0.375000
|
||||||
|
v -1.000000 0.875000 0.375000
|
||||||
|
v -0.900000 1.054090 0.375000
|
||||||
|
v -0.900000 0.875000 0.375000
|
||||||
|
v 0.970903 1.084925 0.196072
|
||||||
|
v 1.000000 0.898673 0.200000
|
||||||
|
v -0.970903 1.084925 0.196072
|
||||||
|
v -1.000000 0.898673 0.200000
|
||||||
|
v 1.000000 0.975000 -0.137500
|
||||||
|
v 0.970903 1.237112 0.019890
|
||||||
|
v -0.970903 1.237112 0.019890
|
||||||
|
v -1.000000 0.975000 -0.137500
|
||||||
|
v 1.000000 1.240505 0.015962
|
||||||
|
v 1.000000 1.081532 0.200000
|
||||||
|
v -1.000000 1.240505 0.015962
|
||||||
|
v -1.000000 1.081532 0.200000
|
||||||
|
v 0.970903 1.230140 0.013868
|
||||||
|
v 0.970903 1.077953 0.190049
|
||||||
|
v -0.970903 1.230140 0.013868
|
||||||
|
v -0.970903 1.077953 0.190049
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.375000 0.375000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.625000 0.875000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.437500 0.875000
|
||||||
|
vt 0.125000 0.625000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.875000 0.750000
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.625000 0.375000
|
||||||
|
vt 0.625000 0.187500
|
||||||
|
vt 0.406250 0.812500
|
||||||
|
vt 0.625000 0.093750
|
||||||
|
vt 0.125000 0.562500
|
||||||
|
vt 0.375000 0.625000
|
||||||
|
vt 0.625000 0.812500
|
||||||
|
vt 0.377823 0.123666
|
||||||
|
vt 0.560344 0.123666
|
||||||
|
vt 0.560344 0.123666
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.375000 0.562500
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.375000 0.125000
|
||||||
|
vt 0.378087 0.063834
|
||||||
|
vt 0.593750 0.062500
|
||||||
|
vt 0.589996 0.063834
|
||||||
|
vt 0.378087 0.063834
|
||||||
|
vt 0.377823 0.123666
|
||||||
|
vt 0.589996 0.063834
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.875000 0.500000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.562500 0.125000
|
||||||
|
vt 0.375000 0.062500
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.500000 0.250000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 -0.9910 -0.1341
|
||||||
|
vn 0.8682 0.0000 0.4961
|
||||||
|
vn 0.0000 0.2011 -0.9796
|
||||||
|
vn -0.8682 0.0000 0.4961
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 -0.9754 -0.2206
|
||||||
|
vn 0.0000 0.6537 -0.7568
|
||||||
|
vn 0.0000 -0.8473 -0.5311
|
||||||
|
vn 0.8880 0.2301 -0.3981
|
||||||
|
vn -0.9507 0.0188 -0.3094
|
||||||
|
vn 0.0000 0.7568 0.6537
|
||||||
|
vn 0.0000 -0.6537 0.7568
|
||||||
|
vn 0.9287 0.1160 -0.3523
|
||||||
|
vn -0.8880 0.2301 -0.3981
|
||||||
|
vn 0.0000 0.9879 0.1549
|
||||||
|
vn 0.0000 0.9999 -0.0170
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 3/1/1 10/2/1 4/3/1
|
||||||
|
f 12/4/2 10/5/2 14/6/2
|
||||||
|
f 12/7/3 3/8/3 4/9/3
|
||||||
|
f 6/10/4 1/11/4 2/12/4
|
||||||
|
f 14/6/5 9/13/5 22/14/5
|
||||||
|
f 18/15/6 22/14/6 21/16/6
|
||||||
|
f 15/17/7 20/18/7 12/7/7
|
||||||
|
f 15/19/8 14/6/8 18/15/8
|
||||||
|
f 11/20/9 26/21/9 13/22/9
|
||||||
|
f 2/12/10 18/15/10 6/23/10
|
||||||
|
f 2/24/11 19/25/11 15/17/11
|
||||||
|
f 6/23/12 21/16/12 5/26/12
|
||||||
|
f 13/22/13 20/27/13 11/20/13
|
||||||
|
f 16/28/13 21/29/13 17/30/13
|
||||||
|
f 11/20/6 23/31/6 24/32/6
|
||||||
|
f 17/30/14 23/31/14 16/28/14
|
||||||
|
f 13/22/7 25/33/7 17/30/7
|
||||||
|
f 3/1/1 9/13/1 10/2/1
|
||||||
|
f 12/4/2 4/34/2 10/5/2
|
||||||
|
f 12/7/3 20/18/3 3/8/3
|
||||||
|
f 6/10/4 5/35/4 1/11/4
|
||||||
|
f 14/6/5 10/5/5 9/13/5
|
||||||
|
f 18/15/6 14/6/6 22/14/6
|
||||||
|
f 15/17/7 19/25/7 20/18/7
|
||||||
|
f 15/19/8 12/4/8 14/6/8
|
||||||
|
f 11/20/9 24/32/9 26/21/9
|
||||||
|
f 2/12/10 15/19/10 18/15/10
|
||||||
|
f 2/24/15 1/36/15 19/25/15
|
||||||
|
f 6/23/16 18/15/16 21/16/16
|
||||||
|
f 13/22/13 22/37/13 20/27/13
|
||||||
|
f 16/28/13 19/38/13 21/29/13
|
||||||
|
f 11/20/6 16/28/6 23/31/6
|
||||||
|
f 17/30/14 25/33/14 23/31/14
|
||||||
|
f 13/22/7 26/21/7 25/33/7
|
||||||
|
usemtl Material.001
|
||||||
|
f 25/33/13 24/32/13 23/31/13
|
||||||
|
f 25/33/13 26/21/13 24/32/13
|
||||||
|
usemtl Material.002
|
||||||
|
f 22/37/17 3/39/17 20/27/17
|
||||||
|
f 1/40/18 21/29/18 19/38/18
|
||||||
|
f 16/28/13 20/27/13 19/38/13
|
||||||
|
f 17/30/13 22/37/13 13/22/13
|
||||||
|
f 22/37/17 9/41/17 3/39/17
|
||||||
|
f 1/40/18 5/26/18 21/29/18
|
||||||
|
f 16/28/13 11/20/13 20/27/13
|
||||||
|
f 17/30/13 21/29/13 22/37/13
|
||||||
|
o Cube.001_Cube.002
|
||||||
|
v -0.030000 0.000000 -0.170000
|
||||||
|
v -0.030000 1.062657 -0.170000
|
||||||
|
v -0.030000 0.000000 -0.230000
|
||||||
|
v -0.030000 1.062657 -0.230000
|
||||||
|
v 0.030000 0.000000 -0.170000
|
||||||
|
v 0.030000 1.062657 -0.170000
|
||||||
|
v 0.030000 0.000000 -0.230000
|
||||||
|
v 0.030000 1.062657 -0.230000
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.875000 0.500000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.875000 0.750000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 28/42/19 29/43/19 27/44/19
|
||||||
|
f 30/45/20 33/46/20 29/43/20
|
||||||
|
f 34/47/21 31/48/21 33/46/21
|
||||||
|
f 32/49/22 27/50/22 31/48/22
|
||||||
|
f 33/46/23 27/51/23 29/52/23
|
||||||
|
f 30/53/24 32/49/24 34/47/24
|
||||||
|
f 28/42/19 30/45/19 29/43/19
|
||||||
|
f 30/45/20 34/47/20 33/46/20
|
||||||
|
f 34/47/21 32/49/21 31/48/21
|
||||||
|
f 32/49/22 28/54/22 27/50/22
|
||||||
|
f 33/46/23 31/48/23 27/51/23
|
||||||
|
f 30/53/24 28/55/24 32/49/24
|
||||||
|
o Cube.002
|
||||||
|
v -0.930000 -0.000000 0.230000
|
||||||
|
v -0.930000 1.062657 0.230000
|
||||||
|
v -0.930000 -0.000000 0.170000
|
||||||
|
v -0.930000 1.062657 0.170000
|
||||||
|
v -0.870000 -0.000000 0.230000
|
||||||
|
v -0.870000 1.062657 0.230000
|
||||||
|
v -0.870000 -0.000000 0.170000
|
||||||
|
v -0.870000 1.062657 0.170000
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.875000 0.500000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.875000 0.750000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 36/56/25 37/57/25 35/58/25
|
||||||
|
f 38/59/26 41/60/26 37/57/26
|
||||||
|
f 42/61/27 39/62/27 41/60/27
|
||||||
|
f 40/63/28 35/64/28 39/62/28
|
||||||
|
f 41/60/29 35/65/29 37/66/29
|
||||||
|
f 38/67/30 40/63/30 42/61/30
|
||||||
|
f 36/56/25 38/59/25 37/57/25
|
||||||
|
f 38/59/26 42/61/26 41/60/26
|
||||||
|
f 42/61/27 40/63/27 39/62/27
|
||||||
|
f 40/63/28 36/68/28 35/64/28
|
||||||
|
f 41/60/29 39/62/29 35/65/29
|
||||||
|
f 38/67/30 36/69/30 40/63/30
|
||||||
|
o Cube.003_Cube.002
|
||||||
|
v 0.870000 -0.000000 0.230000
|
||||||
|
v 0.870000 1.062657 0.230000
|
||||||
|
v 0.870000 -0.000000 0.170000
|
||||||
|
v 0.870000 1.062657 0.170000
|
||||||
|
v 0.930000 -0.000000 0.230000
|
||||||
|
v 0.930000 1.062657 0.230000
|
||||||
|
v 0.930000 -0.000000 0.170000
|
||||||
|
v 0.930000 1.062657 0.170000
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.875000 0.500000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.875000 0.750000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 44/70/31 45/71/31 43/72/31
|
||||||
|
f 46/73/32 49/74/32 45/71/32
|
||||||
|
f 50/75/33 47/76/33 49/74/33
|
||||||
|
f 48/77/34 43/78/34 47/76/34
|
||||||
|
f 49/74/35 43/79/35 45/80/35
|
||||||
|
f 46/81/36 48/77/36 50/75/36
|
||||||
|
f 44/70/31 46/73/31 45/71/31
|
||||||
|
f 46/73/32 50/75/32 49/74/32
|
||||||
|
f 50/75/33 48/77/33 47/76/33
|
||||||
|
f 48/77/34 44/82/34 43/78/34
|
||||||
|
f 49/74/35 47/76/35 43/79/35
|
||||||
|
f 46/81/36 44/83/36 48/77/36
|
||||||
3
assets/base/islands_terrain/manifest.yaml
Normal file
3
assets/base/islands_terrain/manifest.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
name: "islands_terrain"
|
||||||
|
model: "islands_terrain.obj"
|
||||||
|
collision: "mesh"
|
||||||
32
assets/base/islands_terrain/model/islands_terrain.mtl
Normal file
32
assets/base/islands_terrain/model/islands_terrain.mtl
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Blender MTL File: 'islands_terrain.blend'
|
||||||
|
# Material Count: 3
|
||||||
|
|
||||||
|
newmtl Ground
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.137348 0.064835 0.000000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Rock
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.388300 0.159443 0.000000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Water
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.003266 0.332269 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
5920
assets/base/islands_terrain/model/islands_terrain.obj
Normal file
5920
assets/base/islands_terrain/model/islands_terrain.obj
Normal file
File diff suppressed because it is too large
Load Diff
17
assets/base/power_plant/manifest.yaml
Normal file
17
assets/base/power_plant/manifest.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
name: "power_plant"
|
||||||
|
model: "power_plant.obj"
|
||||||
|
collision: "mesh"
|
||||||
|
collision_mesh: null # Use model mesh for collision detection
|
||||||
|
scripts: [
|
||||||
|
"power_plant"
|
||||||
|
]
|
||||||
|
uses:
|
||||||
|
-
|
||||||
|
package: "base"
|
||||||
|
name: "purchase_terminal"
|
||||||
|
-
|
||||||
|
package: "base"
|
||||||
|
name: "information_panel"
|
||||||
|
-
|
||||||
|
package: "base"
|
||||||
|
name: "door"
|
||||||
42
assets/base/power_plant/model/power_plant.mtl
Normal file
42
assets/base/power_plant/model/power_plant.mtl
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Blender MTL File: 'power_plant.blend'
|
||||||
|
# Material Count: 4
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 323.999994
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.142401 0.072932 0.051375
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.002
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.800000 0.057602 0.000000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.004
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.350556 0.350556 0.350556
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl pipes
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.420023 0.371232 0.326654
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.000000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
1998
assets/base/power_plant/model/power_plant.obj
Normal file
1998
assets/base/power_plant/model/power_plant.obj
Normal file
File diff suppressed because it is too large
Load Diff
10
assets/base/power_plant/scripts/power_plant.rb
Normal file
10
assets/base/power_plant/scripts/power_plant.rb
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
component(:building)
|
||||||
|
|
||||||
|
on.create do |event|
|
||||||
|
map.insert_entity("base", "purchase_terminal", event.entity.position + Vector.new(-1.5, 1.5, -4.52), Vector.new(0, 20, 0), data: { team: nil })
|
||||||
|
map.insert_entity("base", "information_panel", event.entity.position + Vector.new(3, 0, 1), Vector.new(0, -90, 0))
|
||||||
|
map.insert_entity("base", "door", event.entity.position + Vector.new(0, 0, 6), Vector.new(0, 0, 0))
|
||||||
|
map.insert_entity("base", "door", event.entity.position + Vector.new(0, 0, 6), Vector.new(0, 180, 0))
|
||||||
|
end
|
||||||
3
assets/base/purchase_terminal/manifest.yaml
Normal file
3
assets/base/purchase_terminal/manifest.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
name: "purchase_terminal"
|
||||||
|
model: "purchase_terminal.obj"
|
||||||
|
collision: "boundingbox"
|
||||||
23
assets/base/purchase_terminal/model/purchase_terminal.mtl
Normal file
23
assets/base/purchase_terminal/model/purchase_terminal.mtl
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Blender MTL File: 'purchase_terminal.blend'
|
||||||
|
# Material Count: 2
|
||||||
|
|
||||||
|
newmtl Material
|
||||||
|
Ns 323.999994
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.094626 0.094626 0.094626
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
|
||||||
|
newmtl Material.001
|
||||||
|
Ns 225.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 0.800000 0.800000 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
|
Ni 1.450000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd /home/cyberarm/Code/i-mic-fps/assets/base/purchase_terminal/textures/purchase_terminal_screen.png
|
||||||
108
assets/base/purchase_terminal/model/purchase_terminal.obj
Normal file
108
assets/base/purchase_terminal/model/purchase_terminal.obj
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
# Blender v2.80 (sub 75) OBJ File: 'purchase_terminal.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib purchase_terminal.mtl
|
||||||
|
o Cube
|
||||||
|
v 0.750000 1.000000 0.000000
|
||||||
|
v 0.750000 0.000000 0.000000
|
||||||
|
v 0.721107 0.980738 0.250000
|
||||||
|
v 0.750000 0.000000 0.300000
|
||||||
|
v 0.721107 0.219262 0.250000
|
||||||
|
v 0.750000 0.200000 0.000000
|
||||||
|
v -0.750000 1.000000 0.000000
|
||||||
|
v -0.750000 0.000000 0.000000
|
||||||
|
v -0.721107 0.980738 0.250000
|
||||||
|
v -0.750000 0.000000 0.300000
|
||||||
|
v 0.000000 0.200000 0.250000
|
||||||
|
v 0.000000 0.200000 0.000000
|
||||||
|
v -0.721107 0.219262 0.250000
|
||||||
|
v -0.750000 0.200000 0.000000
|
||||||
|
v 0.000000 0.000000 0.000000
|
||||||
|
v 0.000000 1.000000 0.250000
|
||||||
|
v 0.000000 0.000000 0.250000
|
||||||
|
v 0.000000 1.000000 0.000000
|
||||||
|
v 0.750000 1.000000 0.250000
|
||||||
|
v 0.750000 0.200000 0.250000
|
||||||
|
v -0.750000 1.000000 0.250000
|
||||||
|
v -0.750000 0.200000 0.250000
|
||||||
|
v 0.721107 0.980738 0.224828
|
||||||
|
v 0.721107 0.219262 0.224828
|
||||||
|
v -0.721107 0.980738 0.224828
|
||||||
|
v -0.721107 0.219262 0.224828
|
||||||
|
v 0.750000 0.100000 0.300000
|
||||||
|
v -0.750000 0.100000 0.300000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.250000 0.750000
|
||||||
|
vt 0.187500 0.750000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.125000 0.750000
|
||||||
|
vt 0.187500 0.750000
|
||||||
|
vt 0.250000 0.750000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.253010 0.750000
|
||||||
|
vt 0.371990 0.750000
|
||||||
|
vt 0.371990 0.750000
|
||||||
|
vt 0.253010 0.750000
|
||||||
|
vt 0.371990 0.750000
|
||||||
|
vt 0.371990 0.750000
|
||||||
|
vt 0.253010 0.750000
|
||||||
|
vt 0.253010 0.750000
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt -0.000000 0.000000
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt -0.000000 1.000000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.4472 0.8944
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
usemtl Material
|
||||||
|
s off
|
||||||
|
f 8/1/1 6/2/1 2/3/1
|
||||||
|
f 20/4/2 27/5/2 4/6/2
|
||||||
|
f 4/6/3 8/1/3 2/3/3
|
||||||
|
f 1/7/2 20/4/2 6/2/2
|
||||||
|
f 1/7/4 21/8/4 19/9/4
|
||||||
|
f 10/10/5 28/11/5 22/12/5
|
||||||
|
f 20/4/6 28/11/6 27/5/6
|
||||||
|
f 22/12/5 7/13/5 14/14/5
|
||||||
|
f 13/15/2 25/16/2 9/17/2
|
||||||
|
f 7/13/1 6/2/1 14/14/1
|
||||||
|
f 5/18/7 19/9/7 3/19/7
|
||||||
|
f 3/19/7 21/8/7 9/17/7
|
||||||
|
f 13/15/7 20/4/7 5/18/7
|
||||||
|
f 9/17/7 22/12/7 13/15/7
|
||||||
|
f 9/17/3 23/20/3 3/19/3
|
||||||
|
f 5/18/4 26/21/4 13/15/4
|
||||||
|
f 3/19/5 24/22/5 5/18/5
|
||||||
|
f 27/5/7 10/10/7 4/6/7
|
||||||
|
f 8/1/1 14/14/1 6/2/1
|
||||||
|
f 4/6/2 2/3/2 20/4/2
|
||||||
|
f 2/3/2 6/2/2 20/4/2
|
||||||
|
f 4/6/3 10/10/3 8/1/3
|
||||||
|
f 1/7/2 19/9/2 20/4/2
|
||||||
|
f 1/7/4 7/13/4 21/8/4
|
||||||
|
f 14/14/5 8/1/5 22/12/5
|
||||||
|
f 8/1/5 10/10/5 22/12/5
|
||||||
|
f 20/4/6 22/12/6 28/11/6
|
||||||
|
f 22/12/5 21/8/5 7/13/5
|
||||||
|
f 13/15/2 26/21/2 25/16/2
|
||||||
|
f 7/13/1 1/7/1 6/2/1
|
||||||
|
f 5/18/7 20/4/7 19/9/7
|
||||||
|
f 3/19/7 19/9/7 21/8/7
|
||||||
|
f 13/15/7 22/12/7 20/4/7
|
||||||
|
f 9/17/7 21/8/7 22/12/7
|
||||||
|
f 9/17/3 25/16/3 23/20/3
|
||||||
|
f 5/18/4 24/22/4 26/21/4
|
||||||
|
f 3/19/5 23/20/5 24/22/5
|
||||||
|
f 27/5/7 28/11/7 10/10/7
|
||||||
|
usemtl Material.001
|
||||||
|
f 23/23/7 26/24/7 24/25/7
|
||||||
|
f 23/23/7 25/26/7 26/24/7
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
@@ -1,3 +1,3 @@
|
|||||||
---
|
|
||||||
name: "randomish_terrain"
|
name: "randomish_terrain"
|
||||||
model: "randomish_terrain.obj"
|
model: "randomish_terrain.obj"
|
||||||
|
collision: "mesh"
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
---
|
|
||||||
name: "river_terrain"
|
name: "river_terrain"
|
||||||
model: "river_terrain.obj"
|
model: "river_terrain.obj"
|
||||||
|
collision: "mesh"
|
||||||
|
|||||||
BIN
assets/base/shared/particles/smoke/smoke.png
Normal file
BIN
assets/base/shared/particles/smoke/smoke.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
12
assets/base/shared/scripts/vehicle.rb
Normal file
12
assets/base/shared/scripts/vehicle.rb
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
component(:vehicle) # Generic, Weapon
|
||||||
|
|
||||||
|
on.button_down(:interact) do |event|
|
||||||
|
CyberarmEngine::Window.instance.console.stdin("#{event.entity.name} handled button_down(:interact)")
|
||||||
|
# if event.player.touching?(event.entity)
|
||||||
|
# event.player.enter_vehicle
|
||||||
|
# elsif event.player.driving?(event.entity) or event.player.passenger?(event.entity)
|
||||||
|
# event.player.exit_vehicle
|
||||||
|
# end
|
||||||
|
end
|
||||||
22
assets/base/shared/sound/master.json
Normal file
22
assets/base/shared/sound/master.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"playlists": {
|
||||||
|
"menus": [
|
||||||
|
"menu_background"
|
||||||
|
],
|
||||||
|
"nighttime": [],
|
||||||
|
"daytime": []
|
||||||
|
},
|
||||||
|
"music": [
|
||||||
|
{
|
||||||
|
"name": "menu_background",
|
||||||
|
"path": "music/untitled-2-revised-extended_mixed.ogg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sounds": [
|
||||||
|
{
|
||||||
|
"name": "shield_regen",
|
||||||
|
"type": "sfx",
|
||||||
|
"path": "sfx/shield_regen.wav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
BIN
assets/base/shared/sound/sfx/shield_regen.wav
Normal file
BIN
assets/base/shared/sound/sfx/shield_regen.wav
Normal file
Binary file not shown.
@@ -1,2 +1,3 @@
|
|||||||
name: "skydome"
|
name: "skydome"
|
||||||
model: "skydome.obj"
|
model: "skydome.obj"
|
||||||
|
collision: null
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
name: sponza_demo
|
||||||
|
model: sponza.obj
|
||||||
@@ -1,2 +1,5 @@
|
|||||||
name: "war_factory"
|
name: "war_factory"
|
||||||
model: "war_factory.obj"
|
model: "war_factory.obj"
|
||||||
|
scripts: [
|
||||||
|
"war_factory"
|
||||||
|
]
|
||||||
@@ -1,42 +1,32 @@
|
|||||||
# Blender MTL File: 'war_factory.blend'
|
# Blender MTL File: 'war_factory.blend'
|
||||||
# Material Count: 4
|
# Material Count: 3
|
||||||
|
|
||||||
newmtl Material
|
newmtl Material
|
||||||
Ns 96.078431
|
Ns 225.000000
|
||||||
Ka 1.000000 1.000000 1.000000
|
Ka 1.000000 1.000000 1.000000
|
||||||
Kd 0.640000 0.527055 0.242208
|
Kd 0.800000 0.658819 0.302760
|
||||||
Ks 0.500000 0.500000 0.500000
|
Ks 0.500000 0.500000 0.500000
|
||||||
Ke 0.000000 0.000000 0.000000
|
Ke 0.0 0.0 0.0
|
||||||
Ni 1.000000
|
|
||||||
d 1.000000
|
|
||||||
illum 2
|
|
||||||
|
|
||||||
newmtl door
|
|
||||||
Ns 96.078431
|
|
||||||
Ka 1.000000 1.000000 1.000000
|
|
||||||
Kd 0.000000 0.006044 0.640000
|
|
||||||
Ks 0.500000 0.500000 0.500000
|
|
||||||
Ke 0.000000 0.000000 0.000000
|
|
||||||
Ni 1.000000
|
Ni 1.000000
|
||||||
d 1.000000
|
d 1.000000
|
||||||
illum 2
|
illum 2
|
||||||
|
|
||||||
newmtl garage
|
newmtl garage
|
||||||
Ns 96.078431
|
Ns 225.000000
|
||||||
Ka 1.000000 1.000000 1.000000
|
Ka 1.000000 1.000000 1.000000
|
||||||
Kd 0.358382 0.358382 0.358382
|
Kd 0.447978 0.447978 0.447978
|
||||||
Ks 0.500000 0.500000 0.500000
|
Ks 0.500000 0.500000 0.500000
|
||||||
Ke 0.000000 0.000000 0.000000
|
Ke 0.0 0.0 0.0
|
||||||
Ni 1.000000
|
Ni 1.000000
|
||||||
d 1.000000
|
d 1.000000
|
||||||
illum 2
|
illum 2
|
||||||
|
|
||||||
newmtl pipes
|
newmtl pipes
|
||||||
Ns 96.078431
|
Ns 225.000000
|
||||||
Ka 1.000000 1.000000 1.000000
|
Ka 1.000000 1.000000 1.000000
|
||||||
Kd 0.336018 0.296986 0.261323
|
Kd 0.420023 0.371232 0.326654
|
||||||
Ks 0.500000 0.500000 0.500000
|
Ks 0.500000 0.500000 0.500000
|
||||||
Ke 0.000000 0.000000 0.000000
|
Ke 0.0 0.0 0.0
|
||||||
Ni 1.000000
|
Ni 1.000000
|
||||||
d 1.000000
|
d 1.000000
|
||||||
illum 2
|
illum 2
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Blender v2.79 (sub 6) OBJ File: 'war_factory.blend'
|
# Blender v2.80 (sub 75) OBJ File: 'war_factory.blend'
|
||||||
# www.blender.org
|
# www.blender.org
|
||||||
mtllib war_factory.mtl
|
mtllib war_factory.mtl
|
||||||
o smoke_stacks_Cube.001
|
o smoke_stacks_Cube.001
|
||||||
@@ -263,86 +263,86 @@ f 65//15 66//15 18//15
|
|||||||
f 18//16 66//16 67//16
|
f 18//16 66//16 67//16
|
||||||
f 67//17 68//17 20//17
|
f 67//17 68//17 20//17
|
||||||
o outlets_pipes_Cube.002
|
o outlets_pipes_Cube.002
|
||||||
v 3.358796 7.940995 0.866388
|
v 3.358797 7.940995 0.866388
|
||||||
v 3.887199 7.940995 0.350280
|
v 3.887200 7.940995 0.350280
|
||||||
v 3.895892 7.940995 -0.388300
|
v 3.895893 7.940995 -0.388300
|
||||||
v 3.379785 7.940995 -0.916703
|
v 3.379785 7.940995 -0.916703
|
||||||
v 2.641204 7.940995 -0.925396
|
v 2.641204 7.940995 -0.925396
|
||||||
v 2.112801 7.940995 -0.409289
|
v 2.112801 7.940995 -0.409289
|
||||||
v 2.104108 7.940995 0.329292
|
v 2.104108 7.940995 0.329292
|
||||||
v 2.620216 7.940995 0.857695
|
v 2.620216 7.940995 0.857695
|
||||||
v 5.358797 7.940995 0.866388
|
v 5.358797 7.940995 0.866388
|
||||||
v 5.887199 7.940995 0.350280
|
v 5.887200 7.940995 0.350280
|
||||||
v 5.895893 7.940995 -0.388300
|
v 5.895893 7.940995 -0.388301
|
||||||
v 5.379785 7.940995 -0.916704
|
v 5.379785 7.940995 -0.916704
|
||||||
v 4.641204 7.940995 -0.925396
|
v 4.641205 7.940995 -0.925396
|
||||||
v 4.112801 7.940995 -0.409289
|
v 4.112801 7.940995 -0.409289
|
||||||
v 4.104108 7.940995 0.329292
|
v 4.104108 7.940995 0.329292
|
||||||
v 4.620215 7.940995 0.857695
|
v 4.620216 7.940995 0.857695
|
||||||
v 3.358796 15.179012 0.866388
|
v 3.358797 15.179012 0.866388
|
||||||
v 3.887199 15.179012 0.350280
|
v 3.887200 15.179012 0.350280
|
||||||
v 3.895892 15.179010 -0.388300
|
v 3.895893 15.179010 -0.388300
|
||||||
v 3.379785 15.179012 -0.916703
|
v 3.379785 15.179012 -0.916703
|
||||||
v 2.641204 15.179010 -0.925396
|
v 2.641204 15.179010 -0.925396
|
||||||
v 2.112801 15.179012 -0.409289
|
v 2.112801 15.179012 -0.409289
|
||||||
v 2.104108 15.179010 0.329292
|
v 2.104108 15.179010 0.329292
|
||||||
v 2.620216 15.179012 0.857695
|
v 2.620216 15.179012 0.857695
|
||||||
v 5.358797 15.179012 0.866388
|
v 5.358797 15.179012 0.866388
|
||||||
v 5.887199 15.179012 0.350280
|
v 5.887200 15.179012 0.350280
|
||||||
v 5.895893 15.179010 -0.388300
|
v 5.895893 15.179010 -0.388301
|
||||||
v 5.379785 15.179012 -0.916704
|
v 5.379785 15.179012 -0.916704
|
||||||
v 4.641204 15.179010 -0.925396
|
v 4.641205 15.179010 -0.925396
|
||||||
v 4.112801 15.179012 -0.409289
|
v 4.112801 15.179012 -0.409289
|
||||||
v 4.104108 15.179010 0.329292
|
v 4.104108 15.179010 0.329292
|
||||||
v 4.620215 15.179012 0.857695
|
v 4.620216 15.179012 0.857695
|
||||||
v 3.394676 15.179012 0.955977
|
v 3.394676 15.179012 0.955977
|
||||||
v 3.975919 15.179012 0.388259
|
v 3.975919 15.179012 0.388259
|
||||||
v 3.985482 15.179010 -0.424180
|
v 3.985482 15.179010 -0.424180
|
||||||
v 3.417763 15.179012 -1.005423
|
v 3.417763 15.179012 -1.005423
|
||||||
v 2.605324 15.179010 -1.014985
|
v 2.605325 15.179010 -1.014985
|
||||||
v 2.024081 15.179012 -0.447267
|
v 2.024081 15.179012 -0.447267
|
||||||
v 2.014518 15.179010 0.365172
|
v 2.014519 15.179010 0.365172
|
||||||
v 2.582237 15.179012 0.946415
|
v 2.582237 15.179012 0.946415
|
||||||
v 5.394676 15.179012 0.955977
|
v 5.394677 15.179012 0.955977
|
||||||
v 5.975919 15.179012 0.388258
|
v 5.975920 15.179012 0.388259
|
||||||
v 5.985482 15.179010 -0.424180
|
v 5.985483 15.179010 -0.424180
|
||||||
v 5.417763 15.179012 -1.005423
|
v 5.417764 15.179012 -1.005424
|
||||||
v 4.605325 15.179010 -1.014985
|
v 4.605325 15.179010 -1.014986
|
||||||
v 4.024081 15.179012 -0.447267
|
v 4.024081 15.179012 -0.447268
|
||||||
v 4.014519 15.179010 0.365172
|
v 4.014519 15.179010 0.365172
|
||||||
v 4.582237 15.179012 0.946415
|
v 4.582238 15.179012 0.946415
|
||||||
v 3.394676 15.379012 0.955977
|
v 3.394676 15.379012 0.955977
|
||||||
v 3.975919 15.379012 0.388259
|
v 3.975919 15.379012 0.388259
|
||||||
v 3.985482 15.379010 -0.424180
|
v 3.985482 15.379010 -0.424180
|
||||||
v 3.417763 15.379012 -1.005423
|
v 3.417763 15.379012 -1.005423
|
||||||
v 2.605324 15.379010 -1.014985
|
v 2.605325 15.379010 -1.014985
|
||||||
v 2.024081 15.379012 -0.447267
|
v 2.024081 15.379012 -0.447267
|
||||||
v 2.014518 15.379010 0.365172
|
v 2.014519 15.379010 0.365172
|
||||||
v 2.582237 15.379012 0.946415
|
v 2.582237 15.379012 0.946415
|
||||||
v 5.394676 15.379012 0.955977
|
v 5.394677 15.379012 0.955977
|
||||||
v 5.975919 15.379012 0.388258
|
v 5.975920 15.379012 0.388259
|
||||||
v 5.985482 15.379010 -0.424180
|
v 5.985483 15.379010 -0.424180
|
||||||
v 5.417763 15.379012 -1.005423
|
v 5.417764 15.379012 -1.005424
|
||||||
v 4.605325 15.379010 -1.014985
|
v 4.605325 15.379010 -1.014986
|
||||||
v 4.024081 15.379012 -0.447267
|
v 4.024081 15.379012 -0.447268
|
||||||
v 4.014519 15.379010 0.365172
|
v 4.014519 15.379010 0.365172
|
||||||
v 4.582237 15.379012 0.946415
|
v 4.582238 15.379012 0.946415
|
||||||
v 3.355209 15.379012 0.857429
|
v 3.355209 15.379012 0.857429
|
||||||
v 3.878327 15.379012 0.346483
|
v 3.878328 15.379012 0.346483
|
||||||
v 3.886934 15.379010 -0.384712
|
v 3.886934 15.379010 -0.384712
|
||||||
v 3.375987 15.379012 -0.907831
|
v 3.375987 15.379012 -0.907831
|
||||||
v 2.644792 15.379010 -0.916437
|
v 2.644792 15.379010 -0.916437
|
||||||
v 2.121673 15.379012 -0.405491
|
v 2.121673 15.379012 -0.405491
|
||||||
v 2.113067 15.379010 0.325705
|
v 2.113067 15.379010 0.325705
|
||||||
v 2.624013 15.379012 0.848823
|
v 2.624014 15.379012 0.848823
|
||||||
v 5.355209 15.379012 0.857429
|
v 5.355209 15.379012 0.857429
|
||||||
v 5.878327 15.379012 0.346482
|
v 5.878328 15.379012 0.346482
|
||||||
v 5.886934 15.379010 -0.384713
|
v 5.886935 15.379010 -0.384713
|
||||||
v 5.375987 15.379012 -0.907832
|
v 5.375987 15.379012 -0.907832
|
||||||
v 4.644792 15.379010 -0.916437
|
v 4.644793 15.379010 -0.916438
|
||||||
v 4.121673 15.379012 -0.405491
|
v 4.121673 15.379012 -0.405491
|
||||||
v 4.113067 15.379010 0.325704
|
v 4.113067 15.379010 0.325704
|
||||||
v 4.624013 15.379012 0.848823
|
v 4.624014 15.379012 0.848823
|
||||||
v 3.000000 8.000000 -4.800000
|
v 3.000000 8.000000 -4.800000
|
||||||
v 3.000000 8.800000 -4.800000
|
v 3.000000 8.800000 -4.800000
|
||||||
v 3.565686 8.000000 -4.565685
|
v 3.565686 8.000000 -4.565685
|
||||||
@@ -504,29 +504,29 @@ v 4.434315 9.249737 -2.039999
|
|||||||
v 4.200000 9.815423 -2.039998
|
v 4.200000 9.815423 -2.039998
|
||||||
v 4.434315 10.381108 -2.039999
|
v 4.434315 10.381108 -2.039999
|
||||||
v 2.200000 9.773436 -0.494458
|
v 2.200000 9.773436 -0.494458
|
||||||
v 5.379784 9.142219 -0.916704
|
v 5.379786 9.142220 -0.916704
|
||||||
v 5.379784 10.427595 -0.916704
|
v 5.379786 10.427595 -0.916704
|
||||||
v 3.379785 9.142219 -0.916703
|
v 3.379785 9.142220 -0.916704
|
||||||
v 3.379785 10.427595 -0.916703
|
v 3.379785 10.427595 -0.916703
|
||||||
v 4.200000 9.773436 -0.494459
|
v 4.200000 9.773436 -0.494459
|
||||||
v 2.641204 9.133761 -0.925396
|
v 2.641204 9.133760 -0.925396
|
||||||
v 2.434314 9.213968 -0.723321
|
v 2.434314 9.213968 -0.723321
|
||||||
v 2.641204 10.436524 -0.925396
|
v 2.641204 10.436524 -0.925396
|
||||||
v 2.434314 10.345339 -0.723321
|
v 2.434314 10.345339 -0.723320
|
||||||
v 5.000000 10.585028 -0.921174
|
v 5.000000 10.585028 -0.921174
|
||||||
v 5.000000 8.985029 -0.921174
|
v 5.000000 8.985029 -0.921174
|
||||||
v 4.641204 9.133760 -0.925396
|
v 4.641205 9.133760 -0.925396
|
||||||
v 4.641204 10.436524 -0.925396
|
v 4.641205 10.436525 -0.925396
|
||||||
v 4.434315 9.213968 -0.723321
|
v 4.434315 9.213968 -0.723320
|
||||||
v 4.434315 10.345339 -0.723321
|
v 4.434315 10.345339 -0.723320
|
||||||
v 3.565686 9.214050 -0.726374
|
v 3.565686 9.214050 -0.726374
|
||||||
v 3.800000 9.773219 -0.486477
|
v 3.800000 9.773219 -0.486478
|
||||||
v 3.565686 10.345422 -0.726374
|
v 3.565686 10.345422 -0.726374
|
||||||
v 3.000000 10.585028 -0.921173
|
v 3.000000 10.585028 -0.921173
|
||||||
v 3.000000 8.985029 -0.921173
|
v 3.000000 8.985029 -0.921173
|
||||||
v 5.800000 9.773219 -0.486478
|
v 5.800000 9.773219 -0.486478
|
||||||
v 5.565685 9.214050 -0.726374
|
v 5.565685 9.214050 -0.726375
|
||||||
v 5.565685 10.345422 -0.726374
|
v 5.565685 10.345422 -0.726375
|
||||||
vn 0.0118 0.0000 -0.9999
|
vn 0.0118 0.0000 -0.9999
|
||||||
vn -0.6987 0.0000 -0.7154
|
vn -0.6987 0.0000 -0.7154
|
||||||
vn -0.9999 0.0000 -0.0118
|
vn -0.9999 0.0000 -0.0118
|
||||||
@@ -713,7 +713,7 @@ f 83//26 338//26 99//26
|
|||||||
f 91//26 342//26 107//26
|
f 91//26 342//26 107//26
|
||||||
f 102//27 117//27 101//27
|
f 102//27 117//27 101//27
|
||||||
f 110//27 125//27 109//27
|
f 110//27 125//27 109//27
|
||||||
f 102//27 119//27 118//27
|
f 103//27 118//27 102//27
|
||||||
f 110//27 127//27 126//27
|
f 110//27 127//27 126//27
|
||||||
f 104//27 119//27 103//27
|
f 104//27 119//27 103//27
|
||||||
f 112//27 127//27 111//27
|
f 112//27 127//27 111//27
|
||||||
@@ -745,19 +745,19 @@ f 126//20 141//20 125//20
|
|||||||
f 118//21 135//21 134//21
|
f 118//21 135//21 134//21
|
||||||
f 133//28 148//28 132//28
|
f 133//28 148//28 132//28
|
||||||
f 141//28 156//28 140//28
|
f 141//28 156//28 140//28
|
||||||
f 134//28 149//28 133//28
|
f 133//28 150//28 149//28
|
||||||
f 141//28 158//28 157//28
|
f 141//28 158//28 157//28
|
||||||
f 134//28 151//28 150//28
|
f 135//28 150//28 134//28
|
||||||
f 143//28 158//28 142//28
|
f 143//28 158//28 142//28
|
||||||
f 136//28 151//28 135//28
|
f 135//28 152//28 151//28
|
||||||
f 143//28 160//28 159//28
|
f 143//28 160//28 159//28
|
||||||
f 129//28 152//28 136//28
|
f 129//28 152//28 136//28
|
||||||
f 130//28 145//28 129//28
|
f 130//28 145//28 129//28
|
||||||
f 137//28 160//28 144//28
|
f 137//28 160//28 144//28
|
||||||
f 138//28 153//28 137//28
|
f 137//28 154//28 153//28
|
||||||
f 131//28 146//28 130//28
|
f 130//28 147//28 146//28
|
||||||
f 138//28 155//28 154//28
|
f 138//28 155//28 154//28
|
||||||
f 131//28 148//28 147//28
|
f 132//28 147//28 131//28
|
||||||
f 139//28 156//28 155//28
|
f 139//28 156//28 155//28
|
||||||
f 157//29 110//29 109//29
|
f 157//29 110//29 109//29
|
||||||
f 159//30 110//30 158//30
|
f 159//30 110//30 158//30
|
||||||
@@ -770,7 +770,7 @@ f 157//36 108//36 156//36
|
|||||||
f 149//29 102//29 101//29
|
f 149//29 102//29 101//29
|
||||||
f 151//31 104//31 103//31
|
f 151//31 104//31 103//31
|
||||||
f 152//32 97//32 104//32
|
f 152//32 97//32 104//32
|
||||||
f 145//33 98//33 97//33
|
f 97//33 146//33 98//33
|
||||||
f 98//34 147//34 99//34
|
f 98//34 147//34 99//34
|
||||||
f 147//35 100//35 99//35
|
f 147//35 100//35 99//35
|
||||||
f 162//37 163//37 161//37
|
f 162//37 163//37 161//37
|
||||||
@@ -975,7 +975,7 @@ f 91//26 343//26 342//26
|
|||||||
f 342//26 344//26 107//26
|
f 342//26 344//26 107//26
|
||||||
f 102//27 118//27 117//27
|
f 102//27 118//27 117//27
|
||||||
f 110//27 126//27 125//27
|
f 110//27 126//27 125//27
|
||||||
f 102//27 103//27 119//27
|
f 103//27 119//27 118//27
|
||||||
f 110//27 111//27 127//27
|
f 110//27 111//27 127//27
|
||||||
f 104//27 120//27 119//27
|
f 104//27 120//27 119//27
|
||||||
f 112//27 128//27 127//27
|
f 112//27 128//27 127//27
|
||||||
@@ -1007,19 +1007,19 @@ f 126//20 142//20 141//20
|
|||||||
f 118//21 119//21 135//21
|
f 118//21 119//21 135//21
|
||||||
f 133//28 149//28 148//28
|
f 133//28 149//28 148//28
|
||||||
f 141//28 157//28 156//28
|
f 141//28 157//28 156//28
|
||||||
f 134//28 150//28 149//28
|
f 133//28 134//28 150//28
|
||||||
f 141//28 142//28 158//28
|
f 141//28 142//28 158//28
|
||||||
f 134//28 135//28 151//28
|
f 135//28 151//28 150//28
|
||||||
f 143//28 159//28 158//28
|
f 143//28 159//28 158//28
|
||||||
f 136//28 152//28 151//28
|
f 135//28 136//28 152//28
|
||||||
f 143//28 144//28 160//28
|
f 143//28 144//28 160//28
|
||||||
f 129//28 145//28 152//28
|
f 129//28 145//28 152//28
|
||||||
f 130//28 146//28 145//28
|
f 130//28 146//28 145//28
|
||||||
f 137//28 153//28 160//28
|
f 137//28 153//28 160//28
|
||||||
f 138//28 154//28 153//28
|
f 137//28 138//28 154//28
|
||||||
f 131//28 147//28 146//28
|
f 130//28 131//28 147//28
|
||||||
f 138//28 139//28 155//28
|
f 138//28 139//28 155//28
|
||||||
f 131//28 132//28 148//28
|
f 132//28 148//28 147//28
|
||||||
f 139//28 140//28 156//28
|
f 139//28 140//28 156//28
|
||||||
f 157//29 158//29 110//29
|
f 157//29 158//29 110//29
|
||||||
f 159//30 111//30 110//30
|
f 159//30 111//30 110//30
|
||||||
@@ -1036,7 +1036,7 @@ f 103//30 102//30 151//30
|
|||||||
f 102//30 150//30 151//30
|
f 102//30 150//30 151//30
|
||||||
f 151//31 152//31 104//31
|
f 151//31 152//31 104//31
|
||||||
f 152//32 145//32 97//32
|
f 152//32 145//32 97//32
|
||||||
f 145//33 146//33 98//33
|
f 97//33 145//33 146//33
|
||||||
f 98//34 146//34 147//34
|
f 98//34 146//34 147//34
|
||||||
f 147//35 148//35 100//35
|
f 147//35 148//35 100//35
|
||||||
f 162//37 164//37 163//37
|
f 162//37 164//37 163//37
|
||||||
@@ -1216,46 +1216,35 @@ v 5.999997 0.000000 -5.999997
|
|||||||
v 5.999997 0.000000 5.999997
|
v 5.999997 0.000000 5.999997
|
||||||
v -5.999998 0.000000 5.999996
|
v -5.999998 0.000000 5.999996
|
||||||
v -5.999995 0.000000 -5.999999
|
v -5.999995 0.000000 -5.999999
|
||||||
v -5.999999 12.000000 5.999995
|
v -5.999999 11.000000 5.999995
|
||||||
v -5.999997 12.000000 -5.999997
|
v -5.999997 10.000000 -5.999997
|
||||||
v 5.999997 0.000000 0.000000
|
v 5.999997 0.000000 0.000000
|
||||||
v 2.000001 0.000000 -5.999998
|
v 2.000001 0.000000 -5.999998
|
||||||
v 5.999999 6.000000 -5.999995
|
|
||||||
v 2.000000 0.000000 5.999997
|
v 2.000000 0.000000 5.999997
|
||||||
v 5.999995 6.000000 5.999999
|
|
||||||
v -5.999997 0.000000 -0.000002
|
v -5.999997 0.000000 -0.000002
|
||||||
v -5.999999 6.000000 5.999996
|
v -5.999999 6.000000 5.999996
|
||||||
v -5.999996 6.000000 -5.999999
|
v 2.000001 10.000000 -5.999996
|
||||||
v 2.000001 12.000000 -5.999996
|
v 1.999997 11.000000 5.999998
|
||||||
v 1.999997 12.000000 5.999998
|
v -5.999998 11.000000 -2.000001
|
||||||
v -5.999998 12.000000 -0.000001
|
v 1.999999 11.000000 -1.999999
|
||||||
v 2.000001 6.000000 -5.999997
|
|
||||||
v -5.999997 6.000000 -0.000001
|
|
||||||
v 1.999998 4.000000 5.999997
|
|
||||||
v 5.999997 6.000000 0.000002
|
|
||||||
v 1.999999 12.000000 0.000001
|
|
||||||
v 2.000000 0.000000 -0.000001
|
v 2.000000 0.000000 -0.000001
|
||||||
v 3.999999 0.000000 -5.999997
|
v 3.999999 0.000000 -5.999997
|
||||||
v 3.999999 0.000000 5.999997
|
v 3.999999 0.000000 5.999997
|
||||||
v 4.000000 6.000000 -5.999997
|
|
||||||
v 3.999996 4.000000 5.999998
|
|
||||||
v 3.999999 0.000000 -0.000000
|
v 3.999999 0.000000 -0.000000
|
||||||
v 0.000003 0.000000 -5.999999
|
v 0.000003 0.000000 -5.999999
|
||||||
v 0.000001 0.000000 5.999997
|
v 1.000001 0.000000 5.999997
|
||||||
v 0.000002 12.000000 -5.999997
|
v 0.000002 10.000000 -5.999997
|
||||||
v -0.000001 12.000000 5.999997
|
v -0.000001 11.000000 5.999997
|
||||||
v 0.000003 6.000000 -5.999998
|
v 1.000000 8.000000 5.999997
|
||||||
v -0.000000 8.000000 5.999997
|
v 0.000001 12.000000 -2.000000
|
||||||
v 0.000001 12.000000 0.000000
|
|
||||||
v 0.000002 0.000000 -0.000001
|
v 0.000002 0.000000 -0.000001
|
||||||
v -3.999996 0.000000 -5.999999
|
v -3.999996 0.000000 -5.999999
|
||||||
v -3.999999 0.000000 5.999997
|
v -4.999999 0.000000 5.999997
|
||||||
v -3.999997 12.000000 -5.999997
|
v -3.999997 10.000000 -5.999997
|
||||||
v -4.000000 12.000000 5.999996
|
v -4.000000 11.000000 5.999996
|
||||||
v -3.999996 6.000000 -5.999999
|
v -4.999999 8.000000 5.999996
|
||||||
v -3.999999 8.000000 5.999996
|
|
||||||
v -3.999997 0.000000 -0.000002
|
v -3.999997 0.000000 -0.000002
|
||||||
v -3.999999 12.000000 -0.000001
|
v -3.999999 12.000000 -2.000001
|
||||||
v 6.000000 8.000000 -5.999994
|
v 6.000000 8.000000 -5.999994
|
||||||
v 5.999993 8.000000 6.000000
|
v 5.999993 8.000000 6.000000
|
||||||
v 5.999997 8.000000 0.000003
|
v 5.999997 8.000000 0.000003
|
||||||
@@ -1265,183 +1254,157 @@ v 1.999999 8.000000 0.000001
|
|||||||
v 4.000000 8.000000 -5.999995
|
v 4.000000 8.000000 -5.999995
|
||||||
v 3.999995 8.000000 5.999999
|
v 3.999995 8.000000 5.999999
|
||||||
v 3.999998 8.000000 0.000002
|
v 3.999998 8.000000 0.000002
|
||||||
v 0.000001 0.000000 6.199996
|
v 1.000001 0.000000 6.199996
|
||||||
v -0.000000 8.000000 6.199996
|
v 1.000000 8.000000 6.199996
|
||||||
v -3.999999 0.000000 6.199996
|
v -4.999999 0.000000 6.199996
|
||||||
v -3.999999 8.000000 6.199996
|
v -4.999999 8.000000 6.199996
|
||||||
v -0.400000 0.000000 6.200000
|
v 0.600000 0.000000 6.200000
|
||||||
v -0.400000 7.606016 6.200000
|
v 0.600000 7.606016 6.200000
|
||||||
v -3.600000 0.000000 6.200000
|
v -4.600000 0.000000 6.200000
|
||||||
v -3.600000 7.606016 6.200000
|
v -4.600000 7.606016 6.200000
|
||||||
v -0.400000 7.606016 6.000000
|
v 0.600000 7.606016 6.000000
|
||||||
v -0.400000 0.000000 6.000000
|
v 0.600000 0.000000 6.000000
|
||||||
v -3.600000 0.000000 6.000000
|
v -4.600000 0.000000 6.000000
|
||||||
v -3.600000 7.606016 6.000000
|
v -4.600000 7.606016 6.000000
|
||||||
v 2.000000 0.000000 6.199996
|
v 4.550002 0.000000 5.999997
|
||||||
v 1.999998 4.000000 6.199997
|
v 2.049999 0.000000 5.999997
|
||||||
v 3.999999 0.000000 6.199997
|
v 3.999998 2.400000 5.999998
|
||||||
v 3.999996 4.000000 6.199997
|
v 4.550001 2.400000 5.999998
|
||||||
v 2.200000 0.000000 6.200000
|
v 2.049999 2.400000 5.999997
|
||||||
v 2.200000 3.800000 6.200000
|
v -5.999999 11.000000 2.999997
|
||||||
v 3.800000 0.000000 6.200000
|
v -0.000000 12.000000 2.999998
|
||||||
v 3.800000 3.800000 6.200000
|
v 1.999998 11.000000 2.999999
|
||||||
v 3.800000 0.000000 6.000000
|
v -3.999999 12.000000 2.999998
|
||||||
v 2.200000 0.000000 6.000000
|
|
||||||
v 3.800000 3.800000 6.000000
|
|
||||||
v 2.200000 3.800000 6.000000
|
|
||||||
vn 0.0000 -1.0000 0.0000
|
vn 0.0000 -1.0000 0.0000
|
||||||
vn 0.0000 1.0000 0.0000
|
vn -0.4472 0.8944 -0.0000
|
||||||
vn -0.0000 0.0000 1.0000
|
vn -0.0000 0.0000 1.0000
|
||||||
vn -1.0000 0.0000 -0.0000
|
|
||||||
vn 0.0000 0.0000 -1.0000
|
|
||||||
vn 1.0000 0.0000 0.0000
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn -0.4082 0.8165 -0.4082
|
||||||
|
vn 0.0000 0.9701 -0.2425
|
||||||
|
vn 0.4472 0.8944 0.0000
|
||||||
|
vn 0.0000 0.8944 -0.4472
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn -0.0000 0.9487 0.3162
|
||||||
|
vn -0.4286 0.8571 0.2857
|
||||||
|
vn 0.4082 0.8165 -0.4082
|
||||||
|
vn 0.4286 0.8571 0.2857
|
||||||
usemtl Material
|
usemtl Material
|
||||||
s off
|
s off
|
||||||
f 382//185 356//185 387//185
|
f 372//185 354//185 376//185
|
||||||
f 361//186 384//186 388//186
|
f 358//186 407//186 377//186
|
||||||
f 386//187 349//187 357//187
|
f 375//187 349//187 355//187
|
||||||
f 361//188 358//188 363//188
|
f 372//187 355//187 347//187
|
||||||
f 381//189 358//189 385//189
|
f 346//188 380//188 379//188
|
||||||
f 385//189 350//189 383//189
|
f 373//189 358//189 377//189
|
||||||
f 368//189 362//189 370//189
|
f 376//185 348//185 371//185
|
||||||
f 363//188 348//188 356//188
|
f 361//185 360//185 352//185
|
||||||
f 357//188 356//188 347//188
|
f 400//185 353//185 360//185
|
||||||
f 349//188 363//188 357//188
|
f 399//185 362//185 363//185
|
||||||
f 382//187 357//187 347//187
|
f 345//185 363//185 361//185
|
||||||
f 419//185 410//185 354//185
|
f 352//185 370//185 364//185
|
||||||
f 365//190 346//190 351//190
|
f 366//190 359//190 356//190
|
||||||
f 353//190 351//190 345//190
|
f 359//191 405//191 406//191
|
||||||
f 350//186 388//186 383//186
|
f 360//185 365//185 370//185
|
||||||
f 387//185 348//185 381//185
|
f 370//185 371//185 364//185
|
||||||
f 368//185 367//185 352//185
|
f 373//192 369//192 366//192
|
||||||
f 372//185 354//185 367//185
|
f 368//188 387//188 365//188
|
||||||
f 351//185 369//185 372//185
|
f 367//187 375//187 368//187
|
||||||
f 345//185 372//185 368//185
|
f 377//193 405//193 369//193
|
||||||
f 346//187 371//187 369//187
|
f 370//185 372//185 376//185
|
||||||
f 345//189 370//189 353//189
|
f 381//193 386//193 384//193
|
||||||
f 352//185 380//185 373//185
|
f 384//193 380//193 378//193
|
||||||
f 375//186 366//186 359//186
|
f 386//193 379//193 380//193
|
||||||
f 364//187 374//187 354//187
|
f 389//187 394//187 390//187
|
||||||
f 352//189 377//189 362//189
|
f 375//193 388//193 368//193
|
||||||
f 379//186 360//186 366//186
|
f 372//194 390//194 375//194
|
||||||
f 354//185 380//185 367//185
|
f 394//185 395//185 392//185
|
||||||
f 380//185 381//185 373//185
|
f 390//187 392//187 388//187
|
||||||
f 383//186 379//186 375//186
|
f 387//187 392//187 391//187
|
||||||
f 378//190 398//190 374//190
|
f 392//194 396//194 391//194
|
||||||
f 377//189 383//189 375//189
|
f 393//188 398//188 394//188
|
||||||
f 377//189 381//189 385//189
|
f 387//185 396//185 365//185
|
||||||
f 376//187 386//187 378//187
|
f 397//185 389//185 372//185
|
||||||
f 388//186 376//186 379//186
|
f 359//188 381//188 356//188
|
||||||
f 374//185 387//185 380//185
|
f 382//193 386//193 383//193
|
||||||
f 392//186 397//186 395//186
|
f 357//187 368//187 382//187
|
||||||
f 395//186 391//186 389//186
|
f 383//188 359//188 406//188
|
||||||
f 397//186 390//186 391//186
|
f 382//187 365//187 353//187
|
||||||
f 395//189 353//189 370//189
|
f 354//194 347//194 355//194
|
||||||
f 355//190 391//190 390//190
|
f 354//194 350//194 348//194
|
||||||
f 365//190 389//190 391//190
|
f 350//195 371//195 348//195
|
||||||
f 400//187 405//187 401//187
|
f 373//195 364//195 371//195
|
||||||
f 386//186 399//186 378//186
|
f 366//195 352//195 364//195
|
||||||
f 382//188 401//188 386//188
|
f 381//195 361//195 352//195
|
||||||
f 405//185 406//185 403//185
|
f 384//195 345//195 361//195
|
||||||
f 401//187 403//187 399//187
|
f 351//188 378//188 380//188
|
||||||
f 398//187 403//187 402//187
|
f 402//187 399//187 346//187
|
||||||
f 403//188 407//188 402//188
|
f 403//187 385//187 382//187
|
||||||
f 404//190 409//190 405//190
|
f 407//196 367//196 405//196
|
||||||
f 398//185 407//185 374//185
|
f 406//193 367//193 357//193
|
||||||
f 408//185 400//185 382//185
|
f 404//197 374//197 407//197
|
||||||
f 410//187 415//187 411//187
|
f 372//185 347//185 354//185
|
||||||
f 354//188 411//188 364//188
|
f 358//186 404//186 407//186
|
||||||
f 371//190 412//190 369//190
|
f 375//187 374//187 349//187
|
||||||
f 414//190 421//190 415//190
|
f 372//187 375//187 355//187
|
||||||
f 418//185 412//185 416//185
|
f 346//188 351//188 380//188
|
||||||
f 412//187 417//187 416//187
|
f 373//190 350//190 358//190
|
||||||
f 413//187 415//187 417//187
|
f 376//185 354//185 348//185
|
||||||
f 417//188 418//188 416//188
|
f 361//185 363//185 360//185
|
||||||
f 415//185 420//185 417//185
|
f 360//185 363//185 400//185
|
||||||
f 362//189 395//189 370//189
|
f 363//185 362//185 400//185
|
||||||
f 394//190 359//190 366//190
|
f 363//185 351//185 399//185
|
||||||
f 375//189 359//189 392//189
|
f 351//185 346//185 399//185
|
||||||
f 393//186 397//186 394//186
|
f 345//185 351//185 363//185
|
||||||
f 371//186 411//186 413//186
|
f 352//185 360//185 370//185
|
||||||
f 355//187 396//187 371//187
|
f 366//198 369//198 359//198
|
||||||
f 378//187 393//187 360//187
|
f 359//191 369//191 405//191
|
||||||
f 393//190 366//190 360//190
|
f 360//185 353//185 365//185
|
||||||
f 396//187 364//187 371//187
|
f 370//185 376//185 371//185
|
||||||
f 382//185 347//185 356//185
|
f 373//192 377//192 369//192
|
||||||
f 361//186 349//186 384//186
|
f 368//188 388//188 387//188
|
||||||
f 386//187 384//187 349//187
|
f 367//187 374//187 375//187
|
||||||
f 361//188 350//188 358//188
|
f 377//193 407//193 405//193
|
||||||
f 381//189 348//189 358//189
|
f 370//185 365//185 372//185
|
||||||
f 385//189 358//189 350//189
|
f 381//193 383//193 386//193
|
||||||
f 368//189 352//189 362//189
|
f 384//193 386//193 380//193
|
||||||
f 363//188 358//188 348//188
|
f 386//193 385//193 379//193
|
||||||
f 357//188 363//188 356//188
|
f 389//187 393//187 394//187
|
||||||
f 349//188 361//188 363//188
|
f 375//193 390//193 388//193
|
||||||
f 382//187 386//187 357//187
|
f 372//194 389//194 390//194
|
||||||
f 419//185 414//185 410//185
|
f 394//185 398//185 395//185
|
||||||
f 365//190 355//190 346//190
|
f 390//187 394//187 392//187
|
||||||
f 353//190 365//190 351//190
|
f 387//187 388//187 392//187
|
||||||
f 350//186 361//186 388//186
|
f 392//194 395//194 396//194
|
||||||
f 387//185 356//185 348//185
|
f 393//188 397//188 398//188
|
||||||
f 368//185 372//185 367//185
|
f 387//185 391//185 396//185
|
||||||
f 372//185 369//185 354//185
|
f 397//185 393//185 389//185
|
||||||
f 351//185 346//185 369//185
|
f 359//188 383//188 381//188
|
||||||
f 345//185 351//185 372//185
|
f 382//193 385//193 386//193
|
||||||
f 346//187 355//187 371//187
|
f 357//187 367//187 368//187
|
||||||
f 345//189 368//189 370//189
|
f 406//188 357//188 382//188
|
||||||
f 352//185 367//185 380//185
|
f 382//188 383//188 406//188
|
||||||
f 375//186 379//186 366//186
|
f 382//187 368//187 365//187
|
||||||
f 364//187 378//187 374//187
|
f 355//194 349//194 404//194
|
||||||
f 352//189 373//189 377//189
|
f 404//194 358//194 355//194
|
||||||
f 379//186 376//186 360//186
|
f 358//194 354//194 355//194
|
||||||
f 354//185 374//185 380//185
|
f 354//194 358//194 350//194
|
||||||
f 380//185 387//185 381//185
|
f 350//195 373//195 371//195
|
||||||
f 383//186 388//186 379//186
|
f 373//195 366//195 364//195
|
||||||
f 378//190 399//190 398//190
|
f 366//195 356//195 352//195
|
||||||
f 377//189 385//189 383//189
|
f 381//195 384//195 361//195
|
||||||
f 377//189 373//189 381//189
|
f 384//195 378//195 345//195
|
||||||
f 376//187 384//187 386//187
|
f 351//188 345//188 378//188
|
||||||
f 388//186 384//186 376//186
|
f 346//187 379//187 402//187
|
||||||
f 374//185 382//185 387//185
|
f 379//187 385//187 402//187
|
||||||
f 392//186 394//186 397//186
|
f 385//187 401//187 402//187
|
||||||
f 395//186 397//186 391//186
|
f 353//187 400//187 403//187
|
||||||
f 397//186 396//186 390//186
|
f 403//187 401//187 385//187
|
||||||
f 395//189 389//189 353//189
|
f 382//187 353//187 403//187
|
||||||
f 355//190 365//190 391//190
|
f 407//196 374//196 367//196
|
||||||
f 365//190 353//190 389//190
|
f 406//199 405//199 367//199
|
||||||
f 400//187 404//187 405//187
|
f 404//193 349//193 374//193
|
||||||
f 386//186 401//186 399//186
|
|
||||||
f 382//188 400//188 401//188
|
|
||||||
f 405//185 409//185 406//185
|
|
||||||
f 401//187 405//187 403//187
|
|
||||||
f 398//187 399//187 403//187
|
|
||||||
f 403//188 406//188 407//188
|
|
||||||
f 404//190 408//190 409//190
|
|
||||||
f 398//185 402//185 407//185
|
|
||||||
f 408//185 404//185 400//185
|
|
||||||
f 410//187 414//187 415//187
|
|
||||||
f 354//188 410//188 411//188
|
|
||||||
f 371//190 413//190 412//190
|
|
||||||
f 414//190 419//190 421//190
|
|
||||||
f 418//185 369//185 412//185
|
|
||||||
f 412//187 413//187 417//187
|
|
||||||
f 413//187 411//187 415//187
|
|
||||||
f 417//188 420//188 418//188
|
|
||||||
f 415//185 421//185 420//185
|
|
||||||
f 362//189 392//189 395//189
|
|
||||||
f 394//190 392//190 359//190
|
|
||||||
f 392//189 362//189 377//189
|
|
||||||
f 377//189 375//189 392//189
|
|
||||||
f 393//186 396//186 397//186
|
|
||||||
f 371//186 364//186 411//186
|
|
||||||
f 355//187 390//187 396//187
|
|
||||||
f 360//187 376//187 378//187
|
|
||||||
f 378//187 364//187 393//187
|
|
||||||
f 393//190 394//190 366//190
|
|
||||||
f 396//187 393//187 364//187
|
|
||||||
usemtl garage
|
usemtl garage
|
||||||
f 406//187 408//187 407//187
|
f 395//187 397//187 396//187
|
||||||
f 406//187 409//187 408//187
|
f 395//187 398//187 397//187
|
||||||
usemtl door
|
|
||||||
f 420//187 419//187 418//187
|
|
||||||
f 420//187 421//187 419//187
|
|
||||||
|
|||||||
13
assets/base/war_factory/scripts/war_factory.rb
Normal file
13
assets/base/war_factory/scripts/war_factory.rb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
component(:building)
|
||||||
|
|
||||||
|
on.create do |event|
|
||||||
|
map.insert_entity("base", "purchase_terminal", event.entity.position + Vector.new(6, 1.5, 3), Vector.new(0, -90, 0), data: { team: nil })
|
||||||
|
map.insert_entity("base", "information_panel", event.entity.position + Vector.new(0.5, 0, 3), Vector.new(0, 90, 0))
|
||||||
|
map.insert_entity("base", "door", event.entity.position + Vector.new(3.3, 0, 6), Vector.new(0, 0, 0))
|
||||||
|
map.insert_entity("base", "door", event.entity.position + Vector.new(3.3, 0, 6), Vector.new(0, 180, 0))
|
||||||
|
|
||||||
|
# map.insert_particle_emitter(Vector.new(3.0, 15.379, 0.029), Texture.new(path: ["base", "shared", "particles", "smoke", "smoke.png"]))
|
||||||
|
# map.insert_particle_emitter(Vector.new(5.0, 15.379, 0.029), Texture.new(path: ["base", "shared", "particles", "smoke", "smoke.png"]))
|
||||||
|
end
|
||||||
BIN
blends/STD_cutters.blend
Normal file
BIN
blends/STD_cutters.blend
Normal file
Binary file not shown.
BIN
blends/alternate_tank.blend
Normal file
BIN
blends/alternate_tank.blend
Normal file
Binary file not shown.
BIN
blends/alternate_tank.blend1
Normal file
BIN
blends/alternate_tank.blend1
Normal file
Binary file not shown.
BIN
blends/character.blend
Normal file
BIN
blends/character.blend
Normal file
Binary file not shown.
BIN
blends/character.blend1
Normal file
BIN
blends/character.blend1
Normal file
Binary file not shown.
BIN
blends/door.blend
Normal file
BIN
blends/door.blend
Normal file
Binary file not shown.
BIN
blends/door.blend1
Normal file
BIN
blends/door.blend1
Normal file
Binary file not shown.
BIN
blends/editor.blend
Normal file
BIN
blends/editor.blend
Normal file
Binary file not shown.
BIN
blends/editor.blend1
Normal file
BIN
blends/editor.blend1
Normal file
Binary file not shown.
BIN
blends/evergreen_tree.blend
Normal file
BIN
blends/evergreen_tree.blend
Normal file
Binary file not shown.
BIN
blends/information_panel.blend
Normal file
BIN
blends/information_panel.blend
Normal file
Binary file not shown.
BIN
blends/information_panel.blend1
Normal file
BIN
blends/information_panel.blend1
Normal file
Binary file not shown.
BIN
blends/islands_terrain.blend
Normal file
BIN
blends/islands_terrain.blend
Normal file
Binary file not shown.
BIN
blends/power_plant.blend
Normal file
BIN
blends/power_plant.blend
Normal file
Binary file not shown.
BIN
blends/power_plant.blend1
Normal file
BIN
blends/power_plant.blend1
Normal file
Binary file not shown.
BIN
blends/purchase_terminal.blend
Normal file
BIN
blends/purchase_terminal.blend
Normal file
Binary file not shown.
BIN
blends/purchase_terminal.blend1
Normal file
BIN
blends/purchase_terminal.blend1
Normal file
Binary file not shown.
@@ -1,13 +0,0 @@
|
|||||||
# Blender MTL File: 'randomish_terrain.blend'
|
|
||||||
# Material Count: 1
|
|
||||||
|
|
||||||
newmtl Material.001
|
|
||||||
Ns 96.078431
|
|
||||||
Ka 1.000000 1.000000 1.000000
|
|
||||||
Kd 0.640000 0.640000 0.640000
|
|
||||||
Ks 0.500000 0.500000 0.500000
|
|
||||||
Ke 0.000000 0.000000 0.000000
|
|
||||||
Ni 1.000000
|
|
||||||
d 1.000000
|
|
||||||
illum 2
|
|
||||||
map_Kd randomish_terrain.png
|
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 250 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 169 KiB |
Binary file not shown.
Binary file not shown.
1
data/.gitkeep
Normal file
1
data/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
11
i-mic-fps-server.rb
Normal file
11
i-mic-fps-server.rb
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
IMICFPS_SERVER_MODE = true
|
||||||
|
require_relative "i-mic-fps"
|
||||||
|
|
||||||
|
director = IMICFPS::Networking::Director.new(mode: :server, hostname: "0.0.0.0", port: 56_789, interface: IMICFPS::Networking::MemoryServer)
|
||||||
|
director.define_singleton_method(:tick) do |dt|
|
||||||
|
puts "Ticked: #{dt}"
|
||||||
|
end
|
||||||
|
|
||||||
|
director.run.join
|
||||||
172
i-mic-fps.rb
172
i-mic-fps.rb
@@ -1,136 +1,114 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "fiddle"
|
require "fiddle"
|
||||||
require "yaml"
|
require "yaml"
|
||||||
|
require "json"
|
||||||
require "abbrev"
|
require "abbrev"
|
||||||
|
require "time"
|
||||||
|
require "socket"
|
||||||
|
require "tmpdir"
|
||||||
|
require "securerandom"
|
||||||
|
|
||||||
require "opengl"
|
require "opengl"
|
||||||
require "glu"
|
require "glu"
|
||||||
|
require "nokogiri"
|
||||||
|
require "i18n"
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require_relative "../cyberarm_engine/lib/cyberarm_engine"
|
require_relative "../cyberarm_engine/lib/cyberarm_engine"
|
||||||
rescue LoadError
|
require_relative "../cyberarm_engine/lib/cyberarm_engine/opengl"
|
||||||
|
rescue LoadError => e
|
||||||
|
pp e
|
||||||
require "cyberarm_engine"
|
require "cyberarm_engine"
|
||||||
|
require "cyberarm_engine/opengl"
|
||||||
end
|
end
|
||||||
|
|
||||||
Dir.chdir(File.dirname(__FILE__))
|
Dir.chdir(File.dirname(__FILE__))
|
||||||
|
|
||||||
case OpenGL.get_platform
|
|
||||||
when :OPENGL_PLATFORM_WINDOWS
|
|
||||||
OpenGL.load_lib("opengl32.dll", "C:/Windows/System32")
|
|
||||||
GLU.load_lib("GLU32.dll", "C:/Windows/System32")
|
|
||||||
when :OPENGL_PLATFORM_MACOSX
|
|
||||||
OpenGL.load_lib("libGL.dylib", "/System/Library/Frameworks/OpenGL.framework/Libraries")
|
|
||||||
GLU.load_lib("libGLU.dylib", "/System/Library/Frameworks/OpenGL.framework/Libraries")
|
|
||||||
when :OPENGL_PLATFORM_LINUX
|
|
||||||
# Black magic to get GLSL 3.30 support on older Intel hardware
|
|
||||||
# if `glxinfo | egrep "OpenGL vendor|OpenGL renderer"`.include?("Intel")
|
|
||||||
# ENV["MESA_GL_VERSION_OVERRIDE"] = "3.3"
|
|
||||||
# ENV["MESA_GLSL_VERSION_OVERRIDE"] = "330"
|
|
||||||
# end
|
|
||||||
|
|
||||||
gl_library_path = nil
|
|
||||||
|
|
||||||
if File.exist?("/usr/lib/x86_64-linux-gnu/libGL.so") # Ubuntu (Debian)
|
|
||||||
gl_library_path = "/usr/lib/x86_64-linux-gnu"
|
|
||||||
|
|
||||||
elsif File.exist?("/usr/lib/libGL.so") # Manjaro (ARCH)
|
|
||||||
gl_library_path = "/usr/lib"
|
|
||||||
|
|
||||||
elsif File.exist?("/usr/lib/arm-linux-gnueabihf/libGL.so") # Raspbian (ARM/Raspberry Pi)
|
|
||||||
gl_library_path = "/usr/lib/arm-linux-gnueabihf"
|
|
||||||
end
|
|
||||||
|
|
||||||
if gl_library_path
|
|
||||||
OpenGL.load_lib("libGL.so", gl_library_path)
|
|
||||||
GLU.load_lib("libGLU.so", gl_library_path)
|
|
||||||
else
|
|
||||||
raise RuntimeError, "Couldn't find GL libraries"
|
|
||||||
end
|
|
||||||
else
|
|
||||||
raise RuntimeError, "Unsupported platform."
|
|
||||||
end
|
|
||||||
|
|
||||||
if RUBY_VERSION < "2.5.0"
|
|
||||||
puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
|
|
||||||
puts "|NOTICE| Ruby is #{RUBY_VERSION} not 2.5.0+..............................|Notice|"
|
|
||||||
puts "|NOTICE| Monkey Patching Float to add required '.clamp' method.|Notice|"
|
|
||||||
puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
|
|
||||||
puts
|
|
||||||
class Float
|
|
||||||
def clamp(min, max)
|
|
||||||
if self < min
|
|
||||||
min
|
|
||||||
elsif self > max
|
|
||||||
max
|
|
||||||
else
|
|
||||||
return self
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
include CyberarmEngine
|
include CyberarmEngine
|
||||||
include OpenGL
|
include OpenGL
|
||||||
include GLU
|
include GLU
|
||||||
|
|
||||||
require_relative "lib/version"
|
def require_all(directory)
|
||||||
require_relative "lib/constants"
|
files = Dir["#{directory}/**/*.rb"].sort!
|
||||||
require_relative "lib/common_methods"
|
file_order = []
|
||||||
|
|
||||||
require_relative "lib/trees/aabb_tree_debug"
|
loop do
|
||||||
require_relative "lib/trees/aabb_tree"
|
failed = []
|
||||||
require_relative "lib/trees/aabb_node"
|
first_name_error = nil
|
||||||
|
|
||||||
require_relative "lib/managers/input_mapper"
|
files.each do |file|
|
||||||
require_relative "lib/managers/entity_manager"
|
begin
|
||||||
require_relative "lib/managers/light_manager"
|
require_relative file
|
||||||
require_relative "lib/managers/network_manager"
|
file_order << file
|
||||||
require_relative "lib/managers/collision_manager"
|
rescue NameError => e
|
||||||
require_relative "lib/managers/physics_manager"
|
failed << file
|
||||||
|
first_name_error ||= e
|
||||||
require_relative "lib/renderer/renderer"
|
end
|
||||||
require_relative "lib/renderer/opengl_renderer"
|
|
||||||
require_relative "lib/renderer/bounding_box_renderer"
|
|
||||||
|
|
||||||
require_relative "lib/states/game_state"
|
|
||||||
require_relative "lib/ui/menu"
|
|
||||||
|
|
||||||
require_relative "lib/ui/command"
|
|
||||||
require_relative "lib/ui/subcommand"
|
|
||||||
Dir.glob("#{IMICFPS::GAME_ROOT_PATH}/lib/ui/commands/*.rb").each do |cmd|
|
|
||||||
require_relative cmd
|
|
||||||
end
|
end
|
||||||
require_relative "lib/ui/console"
|
|
||||||
require_relative "lib/ui/menus/main_menu"
|
|
||||||
|
|
||||||
require_relative "lib/states/game_states/game"
|
if failed.size == files.size
|
||||||
require_relative "lib/states/game_states/loading_state"
|
raise first_name_error
|
||||||
|
else
|
||||||
|
files = failed
|
||||||
|
end
|
||||||
|
break if failed.empty?
|
||||||
|
end
|
||||||
|
|
||||||
require_relative "lib/objects/entity"
|
# pp file_order.map { |f| f.gsub(".rb", "")}
|
||||||
require_relative "lib/objects/model_loader"
|
end
|
||||||
require_relative "lib/objects/light"
|
|
||||||
|
|
||||||
require_relative "lib/objects/camera"
|
require_all "lib"
|
||||||
require_relative "lib/objects/entities/player"
|
|
||||||
require_relative "lib/objects/entities/tree"
|
|
||||||
require_relative "lib/objects/entities/skydome"
|
|
||||||
require_relative "lib/objects/entities/test_object"
|
|
||||||
require_relative "lib/objects/entities/terrain"
|
|
||||||
|
|
||||||
require_relative "lib/wavefront/model"
|
# Don't launch game if IMICFPS_SERVER_MODE is defined
|
||||||
|
# or if game is being packaged
|
||||||
|
def prevent_launch?
|
||||||
|
packaging_lockfile = File.expand_path("i-mic-fps-packaging.lock", Dir.tmpdir)
|
||||||
|
m = "Game client not launched"
|
||||||
|
|
||||||
require_relative "lib/window"
|
return [true, "#{m}: Server is running"] if defined?(IMICFPS_SERVER_MODE) && IMICFPS_SERVER_MODE
|
||||||
|
|
||||||
|
return [true, "#{m}: Packaging is running"] if defined?(Ocra)
|
||||||
|
|
||||||
|
if File.exist?(packaging_lockfile) && File.read(packaging_lockfile).strip == IMICFPS::VERSION
|
||||||
|
return [true, "#{m}: Packaging lockfile is present (#{packaging_lockfile})"]
|
||||||
|
end
|
||||||
|
|
||||||
|
[false, ""]
|
||||||
|
end
|
||||||
|
|
||||||
|
if prevent_launch?[0]
|
||||||
|
puts prevent_launch?[1]
|
||||||
|
else
|
||||||
|
native = ARGV.join.include?("--native")
|
||||||
|
fps_target = ARGV.first.to_i != 0 ? ARGV.first.to_i : 60
|
||||||
|
window_width = native ? Gosu.screen_width : 1280
|
||||||
|
window_height = native ? Gosu.screen_height : 720
|
||||||
|
window_fullscreen = native ? true : false
|
||||||
|
|
||||||
|
window = IMICFPS::Window.new(
|
||||||
|
width: window_width,
|
||||||
|
height: window_height,
|
||||||
|
fullscreen: window_fullscreen,
|
||||||
|
resizable: !window_fullscreen,
|
||||||
|
update_interval: 1000.0 / fps_target
|
||||||
|
)
|
||||||
|
|
||||||
if ARGV.join.include?("--profile")
|
if ARGV.join.include?("--profile")
|
||||||
begin
|
begin
|
||||||
require "ruby-prof"
|
require "ruby-prof"
|
||||||
RubyProf.start
|
RubyProf.start
|
||||||
IMICFPS::Window.new.show
|
|
||||||
|
window.show
|
||||||
|
|
||||||
result = RubyProf.stop
|
result = RubyProf.stop
|
||||||
printer = RubyProf::MultiPrinter.new(result)
|
printer = RubyProf::MultiPrinter.new(result)
|
||||||
printer.print(path: ".", profile: "profile", min_percent: 2)
|
printer.print(path: ".", profile: "profile", min_percent: 2)
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
puts "ruby-prof not installed!"
|
puts "ruby-prof not installed!"
|
||||||
|
raise
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
IMICFPS::Window.new.show
|
window.show
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
149
lib/camera_controller.rb
Normal file
149
lib/camera_controller.rb
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class CameraController
|
||||||
|
include CommonMethods
|
||||||
|
|
||||||
|
attr_accessor :mode, :camera, :entity, :distance, :origin_distance,
|
||||||
|
:constant_pitch, :mouse_sensitivity, :mouse_captured
|
||||||
|
|
||||||
|
def initialize(camera:, entity: nil, mode: :fpv)
|
||||||
|
# :fpv - First Person View
|
||||||
|
# :tpv - Third Person View
|
||||||
|
@mode = mode
|
||||||
|
@camera = camera
|
||||||
|
@entity = entity
|
||||||
|
|
||||||
|
@distance = 4
|
||||||
|
@origin_distance = @distance
|
||||||
|
@constant_pitch = 20.0
|
||||||
|
|
||||||
|
window.mouse_x = window.width / 2
|
||||||
|
window.mouse_y = window.height / 2
|
||||||
|
|
||||||
|
@true_mouse = Point.new(window.width / 2, window.height / 2)
|
||||||
|
@mouse_sensitivity = 20.0 # Less is faster, more is slower
|
||||||
|
@mouse_captured = true
|
||||||
|
@mouse_checked = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def first_person_view?
|
||||||
|
@mode == :fpv
|
||||||
|
end
|
||||||
|
|
||||||
|
def distance_from_object
|
||||||
|
@distance
|
||||||
|
end
|
||||||
|
|
||||||
|
def horizontal_distance_from_object
|
||||||
|
distance_from_object * Math.cos(@constant_pitch)
|
||||||
|
end
|
||||||
|
|
||||||
|
def vertical_distance_from_object
|
||||||
|
distance_from_object * Math.sin(@constant_pitch)
|
||||||
|
end
|
||||||
|
|
||||||
|
def position_camera
|
||||||
|
@distance = if first_person_view?
|
||||||
|
0
|
||||||
|
else
|
||||||
|
@origin_distance
|
||||||
|
end
|
||||||
|
|
||||||
|
x_offset = horizontal_distance_from_object * Math.sin(@entity.orientation.y.degrees_to_radians)
|
||||||
|
z_offset = horizontal_distance_from_object * Math.cos(@entity.orientation.y.degrees_to_radians)
|
||||||
|
|
||||||
|
eye_height = @entity.normalize_bounding_box.max.y
|
||||||
|
|
||||||
|
@camera.position.x = @entity.position.x - x_offset
|
||||||
|
@camera.position.y = @entity.position.y + eye_height
|
||||||
|
@camera.position.z = @entity.position.z - z_offset
|
||||||
|
|
||||||
|
@camera.orientation.y = 180 - @entity.orientation.y
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
position_camera if @entity
|
||||||
|
|
||||||
|
return unless @mouse_captured
|
||||||
|
|
||||||
|
delta = Float(@true_mouse.x - mouse_x) / (@mouse_sensitivity * @camera.field_of_view) * 70
|
||||||
|
@camera.orientation.y -= delta
|
||||||
|
@camera.orientation.y %= 360.0
|
||||||
|
|
||||||
|
@camera.orientation.x -= Float(@true_mouse.y - window.mouse_y) / (@mouse_sensitivity * @camera.field_of_view) * 70
|
||||||
|
@camera.orientation.x = @camera.orientation.x.clamp(-90.0, 90.0)
|
||||||
|
|
||||||
|
if @entity
|
||||||
|
@entity.orientation.y += delta
|
||||||
|
@entity.orientation.y %= 360.0
|
||||||
|
end
|
||||||
|
|
||||||
|
window.mouse_x = window.width / 2 if window.mouse_x <= 1 || window.mouse_x >= window.width - 1
|
||||||
|
window.mouse_y = window.height / 2 if window.mouse_y <= 1 || window.mouse_y >= window.height - 1
|
||||||
|
@true_mouse.x = window.mouse_x
|
||||||
|
@true_mouse.y = window.mouse_y
|
||||||
|
end
|
||||||
|
|
||||||
|
def button_down(id)
|
||||||
|
actions = InputMapper.actions(id)
|
||||||
|
|
||||||
|
if actions.include?(:release_mouse)
|
||||||
|
@mouse_captured = false
|
||||||
|
window.needs_cursor = true
|
||||||
|
elsif actions.include?(:capture_mouse)
|
||||||
|
@mouse_captured = true
|
||||||
|
window.needs_cursor = false
|
||||||
|
|
||||||
|
elsif actions.include?(:decrease_view_distance)
|
||||||
|
@camera.max_view_distance -= 0.5
|
||||||
|
elsif actions.include?(:increase_view_distance)
|
||||||
|
@camera.max_view_distance += 0.5
|
||||||
|
elsif actions.include?(:toggle_first_person_view)
|
||||||
|
@mode = first_person_view? ? :tpv : :fpv
|
||||||
|
@entity.visible = !first_person_view? if @entity
|
||||||
|
elsif actions.include?(:turn_180)
|
||||||
|
@entity.orientation.y += 180 if @entity
|
||||||
|
@entity.orientation.y %= 360.0 if @entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def button_up(id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def free_move
|
||||||
|
relative_y_rotation = (@camera.orientation.y + 180)
|
||||||
|
relative_speed = 2.5
|
||||||
|
relative_speed = 1.5 if InputMapper.down?(:sneak)
|
||||||
|
relative_speed = 10.0 if InputMapper.down?(:sprint)
|
||||||
|
relative_speed *= window.dt
|
||||||
|
|
||||||
|
if InputMapper.down?( :forward)
|
||||||
|
@camera.position.z += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@camera.position.x -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
if InputMapper.down?(:backward)
|
||||||
|
@camera.position.z -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@camera.position.x += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
if InputMapper.down?(:strife_left)
|
||||||
|
@camera.position.z += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@camera.position.x += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
if InputMapper.down?(:strife_right)
|
||||||
|
@camera.position.z -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@camera.position.x -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
if InputMapper.down?(:ascend)
|
||||||
|
@camera.position.y += relative_speed
|
||||||
|
end
|
||||||
|
if InputMapper.down?(:descend)
|
||||||
|
@camera.position.y -= relative_speed
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,19 +1,38 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class IMICFPS
|
class IMICFPS
|
||||||
def self.assets_path
|
def self.assets_path
|
||||||
File.expand_path("./../../assets", __FILE__)
|
File.expand_path("../assets", __dir__)
|
||||||
end
|
end
|
||||||
|
|
||||||
module CommonMethods
|
module CommonMethods
|
||||||
|
def window
|
||||||
|
CyberarmEngine::Window.instance
|
||||||
|
end
|
||||||
|
|
||||||
def window; $window; end
|
def delta_time
|
||||||
|
(Gosu.milliseconds - window.delta_time) / 1000.0
|
||||||
|
end
|
||||||
|
|
||||||
def delta_time; (Gosu.milliseconds - @delta_time) / 1000.0; end
|
def button_down?(id)
|
||||||
def button_down?(id); window.button_down?(id); end
|
window.button_down?(id)
|
||||||
|
end
|
||||||
|
|
||||||
def mouse_x; window.mouse_x; end
|
def mouse_x
|
||||||
def mouse_y; window.mouse_y; end
|
window.mouse_x
|
||||||
def mouse_x=(int); window.mouse_x = int; end
|
end
|
||||||
def mouse_y=(int); window.mouse_y = int; end
|
|
||||||
|
def mouse_y
|
||||||
|
window.mouse_y
|
||||||
|
end
|
||||||
|
|
||||||
|
def mouse_x=(int)
|
||||||
|
window.mouse_x = int
|
||||||
|
end
|
||||||
|
|
||||||
|
def mouse_y=(int)
|
||||||
|
window.mouse_y = int
|
||||||
|
end
|
||||||
|
|
||||||
def gl(&block)
|
def gl(&block)
|
||||||
window.gl do
|
window.gl do
|
||||||
@@ -24,32 +43,79 @@ class IMICFPS
|
|||||||
def formatted_number(number)
|
def formatted_number(number)
|
||||||
string = number.to_s.reverse.scan(/\d{1,3}/).join(",").reverse
|
string = number.to_s.reverse.scan(/\d{1,3}/).join(",").reverse
|
||||||
|
|
||||||
string.insert(0, "-") if number < 0
|
string.insert(0, "-") if number.negative?
|
||||||
|
|
||||||
return string
|
string
|
||||||
end
|
end
|
||||||
|
|
||||||
def control_down?; button_down?(Gosu::KbLeftControl) || button_down?(Gosu::KbRightControl); end
|
def control_down?
|
||||||
def shift_down?; button_down?(Gosu::KbLeftShift) || button_down?(Gosu::KbRightShift); end
|
button_down?(Gosu::KbLeftControl) || button_down?(Gosu::KbRightControl)
|
||||||
def alt_down?; button_down?(Gosu::KbLeftAlt) || button_down?(Gosu::KbRightAlt); end
|
end
|
||||||
|
|
||||||
|
def shift_down?
|
||||||
|
button_down?(Gosu::KbLeftShift) || button_down?(Gosu::KbRightShift)
|
||||||
|
end
|
||||||
|
|
||||||
|
def alt_down?
|
||||||
|
button_down?(Gosu::KbLeftAlt) || button_down?(Gosu::KbRightAlt)
|
||||||
|
end
|
||||||
|
|
||||||
def draw_rect(*args)
|
def draw_rect(*args)
|
||||||
window.draw_rect(*args)
|
window.draw_rect(*args)
|
||||||
end
|
end
|
||||||
|
|
||||||
def draw_quad(*args)
|
def draw_quad(*args)
|
||||||
window.draw_quad(*args)
|
window.draw_quad(*args)
|
||||||
end
|
end
|
||||||
def fill(color = Gosu::Color::WHITE)
|
|
||||||
draw_rect(0, 0, window.width, window.height, color)
|
def fill(color = Gosu::Color::WHITE, z = 0)
|
||||||
|
draw_rect(0, 0, window.width, window.height, color, z)
|
||||||
end
|
end
|
||||||
|
|
||||||
def handleGlError
|
def fill_quad(x1, y1, x2, y2, x3, y3, x4, y4, color = Gosu::Color::WHITE, z = 0, mode = :default)
|
||||||
e = glGetError()
|
draw_quad(
|
||||||
if e != GL_NO_ERROR
|
x1, y1, color,
|
||||||
$stderr.puts "OpenGL error detected by handler at: #{caller[0]}"
|
x2, y2, color,
|
||||||
$stderr.puts " #{gluErrorString(e)} (#{e})\n"
|
x3, y3, color,
|
||||||
exit
|
x4, y4, color,
|
||||||
end
|
z, mode
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def menu_background(primary_color, accent_color, color_step, transparency, bar_size, slope)
|
||||||
|
((Gosu.screen_height + slope) / bar_size).times do |i|
|
||||||
|
color = Gosu::Color.rgba(
|
||||||
|
primary_color.red - i * color_step,
|
||||||
|
primary_color.green - i * color_step,
|
||||||
|
primary_color.blue - i * color_step,
|
||||||
|
transparency
|
||||||
|
)
|
||||||
|
|
||||||
|
fill_quad(
|
||||||
|
0, i * bar_size,
|
||||||
|
0, slope + (i * bar_size),
|
||||||
|
window.width / 2, (-slope) + (i * bar_size),
|
||||||
|
window.width / 2, i * bar_size,
|
||||||
|
color,
|
||||||
|
-2
|
||||||
|
)
|
||||||
|
fill_quad(
|
||||||
|
window.width, i * bar_size,
|
||||||
|
window.width, slope + (i * bar_size),
|
||||||
|
window.width / 2, (-slope) + (i * bar_size),
|
||||||
|
window.width / 2, i * bar_size,
|
||||||
|
color,
|
||||||
|
-2
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
Gosu.draw_quad(
|
||||||
|
0, 0, primary_color,
|
||||||
|
window.width, 0, primary_color,
|
||||||
|
window.width, window.height, accent_color,
|
||||||
|
0, window.height, accent_color,
|
||||||
|
-2
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
41
lib/component.rb
Normal file
41
lib/component.rb
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Component
|
||||||
|
@components = {}
|
||||||
|
|
||||||
|
def self.get(name)
|
||||||
|
@components[name]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.inherited(subclass)
|
||||||
|
@components["__pending"] ||= []
|
||||||
|
@components["__pending"] << subclass
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.initiate
|
||||||
|
return unless @components["__pending"] # Already setup
|
||||||
|
|
||||||
|
@components["__pending"].each do |klass|
|
||||||
|
component = klass.new
|
||||||
|
@components[component.name] = component
|
||||||
|
end
|
||||||
|
|
||||||
|
@components.delete("__pending")
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
setup
|
||||||
|
end
|
||||||
|
|
||||||
|
def name
|
||||||
|
string = self.class.name.split("::").last
|
||||||
|
split = string.scan(/[A-Z][a-z]*/)
|
||||||
|
|
||||||
|
split.map(&:downcase).join("_").to_s.to_sym
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
8
lib/components/building.rb
Normal file
8
lib/components/building.rb
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Components
|
||||||
|
class Building < Component
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class IMICFPS
|
class IMICFPS
|
||||||
GAME_ROOT_PATH = File.expand_path("..", File.dirname(__FILE__))
|
GAME_ROOT_PATH = File.expand_path("..", File.dirname(__FILE__))
|
||||||
|
|
||||||
TextureCoordinate = Struct.new(:u, :v, :weight)
|
SANS_FONT = "#{GAME_ROOT_PATH}/static/fonts/Cantarell/Cantarell-Regular.otf"
|
||||||
Point = Struct.new(:x, :y)
|
BOLD_SANS_FONT = "#{GAME_ROOT_PATH}/static/fonts/Cantarell/Cantarell-Bold.otf"
|
||||||
Color = Struct.new(:red, :green, :blue, :alpha)
|
MONOSPACE_FONT = "#{GAME_ROOT_PATH}/static/fonts/Oxygen_Mono/OxygenMono-Regular.ttf"
|
||||||
Face = Struct.new(:vertices, :uvs, :normals, :colors, :material, :smoothing)
|
|
||||||
|
|
||||||
# Objects exported from blender using the default or meter object scale will be close to 1 GL unit
|
# Objects exported from blender using the default or meter object scale will be close to 1 GL unit
|
||||||
MODEL_METER_SCALE = 1.0
|
MODEL_METER_SCALE = 1.0
|
||||||
|
|
||||||
# Earth
|
# Earth
|
||||||
GRAVITY = 9.8 # m/s
|
EARTH_GRAVITY = 9.8 # m/s
|
||||||
# Moon
|
# Moon
|
||||||
# GRAVITY = 1.625 # m/s
|
MOON_GRAVITY = 1.625 # m/s
|
||||||
end
|
end
|
||||||
35
lib/crosshair.rb
Normal file
35
lib/crosshair.rb
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Crosshair
|
||||||
|
include CommonMethods
|
||||||
|
|
||||||
|
def initialize(color: Gosu::Color.rgb(255, 127, 0), size: 10, thickness: 3)
|
||||||
|
@color = color
|
||||||
|
@size = size
|
||||||
|
@thickness = thickness
|
||||||
|
end
|
||||||
|
|
||||||
|
def draw
|
||||||
|
draw_rect(
|
||||||
|
window.width / 2 - @size,
|
||||||
|
(window.height / 2 - @size) - @thickness / 2,
|
||||||
|
@size * 2,
|
||||||
|
@thickness,
|
||||||
|
@color,
|
||||||
|
0,
|
||||||
|
:default
|
||||||
|
)
|
||||||
|
|
||||||
|
draw_rect(
|
||||||
|
(window.width / 2) - @thickness / 2,
|
||||||
|
window.height / 2 - (@size * 2),
|
||||||
|
@thickness,
|
||||||
|
@size * 2,
|
||||||
|
@color,
|
||||||
|
0,
|
||||||
|
:default
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
114
lib/demo.rb
Normal file
114
lib/demo.rb
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Demo
|
||||||
|
def initialize(camera:, player:, demo:, mode:)
|
||||||
|
@camera = camera
|
||||||
|
@player = player
|
||||||
|
@demo = demo
|
||||||
|
@mode = mode
|
||||||
|
|
||||||
|
@index = 0
|
||||||
|
@tick = 0
|
||||||
|
@changed = false
|
||||||
|
|
||||||
|
if ARGV.join.include?("--playdemo")
|
||||||
|
@data = File.exist?(demo) ? File.read("./demo.dat").lines : ""
|
||||||
|
|
||||||
|
elsif ARGV.join.include?("--savedemo")
|
||||||
|
@file = File.open(demo, "w")
|
||||||
|
|
||||||
|
@last_pitch = @camera.orientation.z
|
||||||
|
@last_yaw = @camera.orientation.y
|
||||||
|
|
||||||
|
at_exit { @file.close }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def button_down(id)
|
||||||
|
if recording?
|
||||||
|
unless @last_written_index == @index
|
||||||
|
@last_written_index = @index
|
||||||
|
@file.puts("tick #{@index}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@file.puts("down #{InputMapper.actions(id)}")
|
||||||
|
@changed = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def button_up(id)
|
||||||
|
if recording?
|
||||||
|
unless @last_written_index == @index
|
||||||
|
@last_written_index = @index
|
||||||
|
@file.puts("tick #{@index}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@file.puts("up #{InputMapper.actions(id)}")
|
||||||
|
@changed = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
play if playing?
|
||||||
|
record if recording?
|
||||||
|
|
||||||
|
@tick += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def playing?
|
||||||
|
@mode == :play
|
||||||
|
end
|
||||||
|
|
||||||
|
def recording?
|
||||||
|
!playing?
|
||||||
|
end
|
||||||
|
|
||||||
|
def play
|
||||||
|
if @data[@index]&.start_with?("tick")
|
||||||
|
if @tick == @data[@index].split(" ").last.to_i
|
||||||
|
@index += 1
|
||||||
|
|
||||||
|
until @data[@index]&.start_with?("tick")
|
||||||
|
break unless @data[@index]
|
||||||
|
|
||||||
|
data = @data[@index].split(" ")
|
||||||
|
case data.first
|
||||||
|
when "up"
|
||||||
|
input = InputMapper.get(data.last.to_sym)
|
||||||
|
key = input.is_a?(Array) ? input.first : input
|
||||||
|
CyberarmEngine::Window.instance.current_state.button_up(key) if key
|
||||||
|
|
||||||
|
when "down"
|
||||||
|
input = InputMapper.get(data.last.to_sym)
|
||||||
|
key = input.is_a?(Array) ? input.first : input
|
||||||
|
CyberarmEngine::Window.instance.current_state.button_down(key) if key
|
||||||
|
|
||||||
|
when "mouse"
|
||||||
|
@camera.orientation.z = data[1].to_f
|
||||||
|
@player.orientation.y = (data[2].to_f * -1) - 180
|
||||||
|
end
|
||||||
|
|
||||||
|
@index += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def record
|
||||||
|
if @camera.orientation.z != @last_pitch || @camera.orientation.y != @last_yaw
|
||||||
|
unless @last_written_index == @index
|
||||||
|
@last_written_index = @index
|
||||||
|
@file.puts("tick #{@index}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@file.puts("mouse #{@camera.orientation.z} #{@camera.orientation.y}")
|
||||||
|
@last_pitch = @camera.orientation.z
|
||||||
|
@last_yaw = @camera.orientation.y
|
||||||
|
end
|
||||||
|
|
||||||
|
@changed = false
|
||||||
|
@index += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
14
lib/event.rb
Normal file
14
lib/event.rb
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class EventHandler
|
||||||
|
class Event
|
||||||
|
attr_reader :entity, :context
|
||||||
|
|
||||||
|
def initialize(entity:, context: nil)
|
||||||
|
@entity = entity
|
||||||
|
@context = context
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
41
lib/event_handler.rb
Normal file
41
lib/event_handler.rb
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class EventHandler
|
||||||
|
@@handlers = {}
|
||||||
|
|
||||||
|
def self.inherited(subclass)
|
||||||
|
@@handlers["__pending"] ||= []
|
||||||
|
|
||||||
|
@@handlers["__pending"] << subclass
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.initiate
|
||||||
|
preserve = @@handlers["__pending"]
|
||||||
|
@@handlers.clear
|
||||||
|
@@handlers["__pending"] = preserve
|
||||||
|
|
||||||
|
@@handlers["__pending"].each do |handler|
|
||||||
|
instance = handler.new
|
||||||
|
instance.handles.each do |event|
|
||||||
|
@@handlers[event] = instance
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.get(event)
|
||||||
|
@@handlers[event]
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
end
|
||||||
|
|
||||||
|
def handlers
|
||||||
|
raise NotImplementedError
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(subscriber, context, *args)
|
||||||
|
raise NotImplementedError
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
19
lib/event_handlers/entity_lifecycle.rb
Normal file
19
lib/event_handlers/entity_lifecycle.rb
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class EventHandler
|
||||||
|
class EntityLifeCycle < EventHandler
|
||||||
|
def handles
|
||||||
|
%i[create move destroy]
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(subscriber, context, *args)
|
||||||
|
return unless subscriber.entity == args.first.first
|
||||||
|
|
||||||
|
event = EventHandler::Event.new(entity: subscriber.entity, context: context)
|
||||||
|
|
||||||
|
subscriber.trigger(event)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
17
lib/event_handlers/entity_moved.rb
Normal file
17
lib/event_handlers/entity_moved.rb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class EventHandler
|
||||||
|
class EntityMoved < EventHandler
|
||||||
|
def handles
|
||||||
|
[:entity_moved]
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(subscriber, _context, *args)
|
||||||
|
event = EventHandler::Event.new(entity: args.first.first)
|
||||||
|
|
||||||
|
subscriber.trigger(event)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
24
lib/event_handlers/input.rb
Normal file
24
lib/event_handlers/input.rb
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class EventHandler
|
||||||
|
class Input < EventHandler
|
||||||
|
def handles
|
||||||
|
%i[button_down button_up]
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(subscriber, context, *args)
|
||||||
|
action = subscriber.args.flatten.first
|
||||||
|
key = args.flatten.first
|
||||||
|
|
||||||
|
event = EventHandler::Event.new(entity: subscriber.entity, context: context)
|
||||||
|
|
||||||
|
if action.is_a?(Numeric) && action == key
|
||||||
|
subscriber.trigger(event)
|
||||||
|
elsif InputMapper.get(action) == key
|
||||||
|
subscriber.trigger(event)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
13
lib/ext/element.rb
Normal file
13
lib/ext/element.rb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
module CyberarmEngine
|
||||||
|
class Element
|
||||||
|
alias enter_original enter
|
||||||
|
|
||||||
|
def enter(_sender)
|
||||||
|
if @block && is_a?(CyberarmEngine::Element::Link)
|
||||||
|
get_sample("#{IMICFPS::GAME_ROOT_PATH}/static/sounds/ui_hover.ogg").play
|
||||||
|
end
|
||||||
|
|
||||||
|
enter_original(_sender)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
37
lib/ext/load_opengl.rb
Normal file
37
lib/ext/load_opengl.rb
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
case OpenGL.get_platform
|
||||||
|
when :OPENGL_PLATFORM_WINDOWS
|
||||||
|
OpenGL.load_lib("opengl32.dll", "C:/Windows/System32")
|
||||||
|
GLU.load_lib("GLU32.dll", "C:/Windows/System32")
|
||||||
|
when :OPENGL_PLATFORM_MACOSX
|
||||||
|
OpenGL.load_lib("libGL.dylib", "/System/Library/Frameworks/OpenGL.framework/Libraries")
|
||||||
|
GLU.load_lib("libGLU.dylib", "/System/Library/Frameworks/OpenGL.framework/Libraries")
|
||||||
|
when :OPENGL_PLATFORM_LINUX
|
||||||
|
# Black magic to get GLSL 3.30 support on older Intel hardware
|
||||||
|
if ARGV.join.include?("--mesa-override") && `glxinfo | egrep "OpenGL vendor|OpenGL renderer"`.include?("Intel")
|
||||||
|
ENV["MESA_GL_VERSION_OVERRIDE"] = "3.3"
|
||||||
|
ENV["MESA_GLSL_VERSION_OVERRIDE"] = "330"
|
||||||
|
end
|
||||||
|
|
||||||
|
gl_library_path = nil
|
||||||
|
|
||||||
|
if File.exist?("/usr/lib/x86_64-linux-gnu/libGL.so") # Ubuntu (Debian)
|
||||||
|
gl_library_path = "/usr/lib/x86_64-linux-gnu"
|
||||||
|
|
||||||
|
elsif File.exist?("/usr/lib/libGL.so") # Manjaro (ARCH)
|
||||||
|
gl_library_path = "/usr/lib"
|
||||||
|
|
||||||
|
elsif File.exist?("/usr/lib/arm-linux-gnueabihf/libGL.so") # Raspbian (ARM/Raspberry Pi)
|
||||||
|
gl_library_path = "/usr/lib/arm-linux-gnueabihf"
|
||||||
|
end
|
||||||
|
|
||||||
|
if gl_library_path
|
||||||
|
OpenGL.load_lib("libGL.so", gl_library_path)
|
||||||
|
GLU.load_lib("libGLU.so", gl_library_path)
|
||||||
|
else
|
||||||
|
raise "Couldn't find GL libraries"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
raise "Unsupported platform."
|
||||||
|
end
|
||||||
20
lib/ext/numeric.rb
Normal file
20
lib/ext/numeric.rb
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
if RUBY_VERSION < "2.5.0"
|
||||||
|
puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
|
||||||
|
puts "|NOTICE| Ruby is #{RUBY_VERSION} not 2.5.0+..............................|Notice|"
|
||||||
|
puts "|NOTICE| Monkey Patching Numeric to add required '.clamp' method.|Notice|"
|
||||||
|
puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
|
||||||
|
puts
|
||||||
|
class Numeric
|
||||||
|
def clamp(min, max)
|
||||||
|
if self < min
|
||||||
|
min
|
||||||
|
elsif self > max
|
||||||
|
max
|
||||||
|
else
|
||||||
|
self
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
83
lib/game_objects/entities/editor.rb
Normal file
83
lib/game_objects/entities/editor.rb
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Editor < Entity
|
||||||
|
attr_accessor :speed
|
||||||
|
attr_reader :bound_model, :first_person_view
|
||||||
|
|
||||||
|
def setup
|
||||||
|
bind_model
|
||||||
|
@speed = 2.5 # meter's per second
|
||||||
|
@running_speed = 5.0 # meter's per second
|
||||||
|
@turn_speed = 50.0
|
||||||
|
@old_speed = @speed
|
||||||
|
@mass = 72 # kg
|
||||||
|
@first_person_view = true
|
||||||
|
@visible = false
|
||||||
|
@drag = 0.9
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
super
|
||||||
|
|
||||||
|
@position += @velocity * window.dt
|
||||||
|
@velocity *= @drag
|
||||||
|
end
|
||||||
|
|
||||||
|
def relative_speed
|
||||||
|
InputMapper.down?(:sprint) ? @running_speed : @speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def relative_y_rotation
|
||||||
|
@orientation.y * -1
|
||||||
|
end
|
||||||
|
|
||||||
|
def forward
|
||||||
|
@velocity.z += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.y -= Math.sin(@orientation.x * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def backward
|
||||||
|
@velocity.z -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.y += Math.sin(@orientation.x * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def strife_left
|
||||||
|
@velocity.z += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def strife_right
|
||||||
|
@velocity.z -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def turn_left
|
||||||
|
@orientation.y += @turn_speed * delta_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def turn_right
|
||||||
|
@orientation.y -= @turn_speed * delta_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def ascend
|
||||||
|
@velocity.y += relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def descend
|
||||||
|
@velocity.y -= relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def toggle_first_person_view
|
||||||
|
@first_person_view = !@first_person_view
|
||||||
|
@visible = !@first_person_view
|
||||||
|
end
|
||||||
|
|
||||||
|
def turn_180
|
||||||
|
@orientation.y = @orientation.y + 180
|
||||||
|
@orientation.y %= 360
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
69
lib/game_objects/entities/player.rb
Normal file
69
lib/game_objects/entities/player.rb
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Player < Entity
|
||||||
|
attr_accessor :speed
|
||||||
|
attr_reader :name, :bound_model
|
||||||
|
|
||||||
|
def setup
|
||||||
|
bind_model
|
||||||
|
|
||||||
|
@speed = 2.5 # meter's per second
|
||||||
|
@running_speed = 5.0 # meter's per second
|
||||||
|
@turn_speed = 50.0
|
||||||
|
@old_speed = @speed
|
||||||
|
@mass = 72 # kg
|
||||||
|
@visible = false
|
||||||
|
@drag = 0.6
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
# Do not handle movement if mouse is not captured
|
||||||
|
return if @camera && !@camera.mouse_captured
|
||||||
|
|
||||||
|
super
|
||||||
|
end
|
||||||
|
|
||||||
|
def relative_speed
|
||||||
|
InputMapper.down?(:sprint) ? @running_speed : @speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def relative_y_rotation
|
||||||
|
@orientation.y * -1
|
||||||
|
end
|
||||||
|
|
||||||
|
def forward
|
||||||
|
@velocity.z += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def backward
|
||||||
|
@velocity.z -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def strife_left
|
||||||
|
@velocity.z += Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x += Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def strife_right
|
||||||
|
@velocity.z -= Math.sin(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
@velocity.x -= Math.cos(relative_y_rotation * Math::PI / 180) * relative_speed
|
||||||
|
end
|
||||||
|
|
||||||
|
def turn_left
|
||||||
|
@orientation.y += @turn_speed * delta_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def turn_right
|
||||||
|
@orientation.y -= @turn_speed * delta_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def jump
|
||||||
|
return unless InputMapper.down?(:jump) && window.director.map.collision_manager.on_ground?(self)
|
||||||
|
|
||||||
|
@velocity.y = 1.5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class IMICFPS
|
class IMICFPS
|
||||||
class Skydome < Entity
|
class Skydome < Entity
|
||||||
def setup
|
def setup
|
||||||
bind_model("base", "skydome")
|
|
||||||
@collision = :none
|
@collision = :none
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -12,8 +13,8 @@ class IMICFPS
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@rotation.y += 0.01
|
@orientation.y += 0.01
|
||||||
@rotation.y %= 360
|
@orientation.y %= 360
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
6
lib/game_objects/entities/terrain.rb
Normal file
6
lib/game_objects/entities/terrain.rb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
class Terrain < Entity
|
||||||
|
end
|
||||||
|
end
|
||||||
120
lib/game_objects/entity.rb
Normal file
120
lib/game_objects/entity.rb
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class IMICFPS
|
||||||
|
# A game object is any renderable thing
|
||||||
|
class Entity
|
||||||
|
include CommonMethods
|
||||||
|
|
||||||
|
attr_accessor :visible, :renderable, :backface_culling, :position, :orientation, :scale, :velocity, :debug_color
|
||||||
|
attr_reader :name, :bounding_box, :drag, :camera, :manifest, :model
|
||||||
|
|
||||||
|
def initialize(manifest:, map_entity: nil, spawnpoint: nil, backface_culling: true, run_scripts: true)
|
||||||
|
@manifest = manifest
|
||||||
|
|
||||||
|
if map_entity
|
||||||
|
@position = map_entity.position.clone
|
||||||
|
@orientation = map_entity.orientation.clone
|
||||||
|
@scale = map_entity.scale.clone
|
||||||
|
bind_model
|
||||||
|
elsif spawnpoint
|
||||||
|
@position = spawnpoint.position.clone
|
||||||
|
@orientation = spawnpoint.orientation.clone
|
||||||
|
@scale = Vector.new(1, 1, 1)
|
||||||
|
else
|
||||||
|
@position = Vector.new
|
||||||
|
@orientation = Vector.up
|
||||||
|
@scale = Vector.new(1, 1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
@backface_culling = backface_culling
|
||||||
|
@name = @manifest.name
|
||||||
|
|
||||||
|
@visible = true
|
||||||
|
@renderable = true
|
||||||
|
|
||||||
|
@velocity = Vector.new(0, 0, 0)
|
||||||
|
@drag = 1.0
|
||||||
|
|
||||||
|
@debug_color = Color.new(0.0, 1.0, 0.0)
|
||||||
|
|
||||||
|
@last_position = Vector.new(@position.x, @position.y, @position.z)
|
||||||
|
|
||||||
|
@sandboxes = []
|
||||||
|
load_scripts if run_scripts
|
||||||
|
|
||||||
|
setup
|
||||||
|
|
||||||
|
if @model
|
||||||
|
@normalized_bounding_box = normalize_bounding_box_with_offset
|
||||||
|
|
||||||
|
normalize_bounding_box
|
||||||
|
end
|
||||||
|
|
||||||
|
@camera = nil
|
||||||
|
|
||||||
|
self
|
||||||
|
end
|
||||||
|
|
||||||
|
def load_scripts
|
||||||
|
@manifest.scripts.each do |script|
|
||||||
|
@sandboxes << Scripting::SandBox.new(entity: self, script: script)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def collidable?
|
||||||
|
@manifest.collision
|
||||||
|
end
|
||||||
|
|
||||||
|
def bind_model
|
||||||
|
model = ModelCache.find_or_cache(manifest: @manifest)
|
||||||
|
raise "model isn't a model!" unless model.is_a?(Model)
|
||||||
|
|
||||||
|
@model = model
|
||||||
|
@bounding_box = normalize_bounding_box_with_offset
|
||||||
|
end
|
||||||
|
|
||||||
|
def unbind_model
|
||||||
|
@model = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def attach_camera(camera)
|
||||||
|
@camera = camera
|
||||||
|
end
|
||||||
|
|
||||||
|
def detach_camera
|
||||||
|
@camera = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup
|
||||||
|
end
|
||||||
|
|
||||||
|
# Not advisable to put OpenGL code here, instead put it in Renderer.
|
||||||
|
def draw
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
unless at_same_position?
|
||||||
|
Publisher.instance.publish(:entity_moved, nil, self)
|
||||||
|
@bounding_box = normalize_bounding_box_with_offset if model
|
||||||
|
end
|
||||||
|
|
||||||
|
@last_position = Vector.new(@position.x, @position.y, @position.z)
|
||||||
|
end
|
||||||
|
|
||||||
|
def at_same_position?
|
||||||
|
@position == @last_position
|
||||||
|
end
|
||||||
|
|
||||||
|
def normalize_bounding_box_with_offset
|
||||||
|
@model.bounding_box.normalize_with_offset(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def normalize_bounding_box
|
||||||
|
@model.bounding_box.normalize(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def model_matrix
|
||||||
|
Transform.rotate_3d(@orientation) * Transform.scale_3d(@scale) * Transform.translate_3d(@position)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user