picrate 2.1.0-java → 2.4.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.mvn/extensions.xml +1 -1
- data/.mvn/wrapper/MavenWrapperDownloader.java +1 -1
- data/.mvn/wrapper/maven-wrapper.properties +2 -2
- data/CHANGELOG.md +10 -0
- data/README.md +6 -3
- data/Rakefile +2 -1
- data/docs/_includes/footer.html +1 -1
- data/docs/_layouts/post.html +1 -1
- data/docs/_methods/alternative_methods.md +2 -1
- data/docs/_methods/noise_mode.md +88 -0
- data/docs/_posts/2018-05-06-install_jruby.md +3 -3
- data/docs/_posts/2018-11-18-building-gem.md +3 -1
- data/docs/_posts/2020-03-09-auto_install_picrate.md +2 -3
- data/docs/_posts/2020-05-11-getting_started_manjaro.md +19 -7
- data/docs/classes.md +2 -2
- data/docs/editors.md +2 -2
- data/docs/gems.md +3 -3
- data/docs/index.html +1 -1
- data/docs/libraries.md +2 -2
- data/docs/live.md +2 -2
- data/docs/magic.md +2 -2
- data/docs/methods.md +2 -2
- data/docs/modules.md +3 -3
- data/docs/objects.md +2 -2
- data/lib/picrate.rb +2 -1
- data/lib/picrate/app.rb +3 -2
- data/lib/picrate/helper_methods.rb +1 -1
- data/lib/picrate/native_folder.rb +1 -3
- data/lib/picrate/runner.rb +4 -4
- data/lib/picrate/version.rb +1 -1
- data/library/jcomplex/jcomplex.rb +1 -0
- data/library/pdf/pdf.rb +7 -0
- data/library/svg/svg.rb +7 -0
- data/mvnw +2 -2
- data/mvnw.cmd +2 -2
- data/picrate.gemspec +5 -3
- data/pom.rb +31 -9
- data/pom.xml +41 -6
- data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/PicrateLibrary.java +3 -1
- data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/complex/JComplex.java +252 -0
- data/src/main/java/monkstone/fastmath/DegLutTables.java +111 -0
- data/src/main/java/monkstone/fastmath/Deglut.java +41 -93
- data/src/main/java/monkstone/noise/OpenSimplex2F.java +813 -0
- data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -0
- data/src/main/java/monkstone/vecmath/package-info.java +1 -1
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +1 -1
- data/src/main/java/monkstone/videoevent/package-info.java +1 -1
- data/src/main/java/processing/awt/ShimAWT.java +260 -94
- data/src/main/java/processing/core/PApplet.java +14664 -13450
- data/src/main/java/processing/core/PConstants.java +5 -5
- data/src/main/java/processing/core/PFont.java +1 -1
- data/src/main/java/processing/core/PGraphics.java +200 -201
- data/src/main/java/processing/core/PImage.java +539 -549
- data/src/main/java/processing/core/PShape.java +18 -18
- data/src/main/java/processing/core/PVector.java +23 -23
- data/src/main/java/processing/data/Table.java +4 -4
- data/src/main/java/processing/net/Client.java +13 -13
- data/src/main/java/processing/net/Server.java +5 -5
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +4 -4
- data/src/main/java/processing/pdf/PGraphicsPDF.java +529 -0
- data/src/main/java/processing/svg/PGraphicsSVG.java +378 -0
- data/test/deglut_spec_test.rb +2 -2
- data/test/respond_to_test.rb +0 -2
- data/vendors/Rakefile +31 -22
- data/vendors/geany.rb +3 -3
- metadata +26 -13
- data/src/main/java/monkstone/noise/SimplexNoise.java +0 -465
data/lib/picrate.rb
CHANGED
data/lib/picrate/app.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'helper_methods'
|
|
5
5
|
require_relative 'library_loader'
|
6
6
|
# A wrapper module for the processing App
|
7
7
|
module Processing
|
8
|
-
include_package 'processing.core' # imports the processing
|
8
|
+
include_package 'processing.core' # imports the processing classes.
|
9
9
|
# Load vecmath, fastmath and mathtool modules
|
10
10
|
Java::Monkstone::PicrateLibrary.load(JRuby.runtime)
|
11
11
|
SKETCH_ROOT = File.absolute_path('.')
|
@@ -55,6 +55,7 @@ module Processing
|
|
55
55
|
include HelperMethods
|
56
56
|
include MathTool
|
57
57
|
include Math
|
58
|
+
include FastNoise
|
58
59
|
# Alias some methods for familiarity for Shoes coders.
|
59
60
|
alias oval ellipse
|
60
61
|
alias stroke_width stroke_weight
|
@@ -144,7 +145,7 @@ module Processing
|
|
144
145
|
def data_path(dat)
|
145
146
|
dat_root = File.join(SKETCH_ROOT, 'data')
|
146
147
|
Dir.mkdir(dat_root) unless File.exist?(dat_root)
|
147
|
-
File.join(dat_root, dat)
|
148
|
+
File.join(dat_root, dat).to_java(:string)
|
148
149
|
end
|
149
150
|
|
150
151
|
private
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rbconfig'
|
2
|
-
|
3
1
|
# Utility to load native binaries on Java CLASSPATH
|
4
2
|
#HACK until jruby returns a more specific 'host_os' than 'linux'
|
5
3
|
class NativeFolder
|
@@ -10,7 +8,7 @@ class NativeFolder
|
|
10
8
|
ARM64 = '-aarch64'.freeze
|
11
9
|
|
12
10
|
def initialize
|
13
|
-
@os =
|
11
|
+
@os = java.lang.System.get_property('os.name')
|
14
12
|
@bit = java.lang.System.get_property('os.arch')
|
15
13
|
end
|
16
14
|
|
data/lib/picrate/runner.rb
CHANGED
@@ -32,7 +32,7 @@ module Processing
|
|
32
32
|
opt_parser = OptionParser.new do |opts|
|
33
33
|
# Set a banner, displayed at the top
|
34
34
|
# of the help screen.
|
35
|
-
opts.banner = 'Usage: picrate [options] [<
|
35
|
+
opts.banner = 'Usage: picrate [options] [<name>]'
|
36
36
|
|
37
37
|
# Define the options, and what they do
|
38
38
|
options[:version] = false
|
@@ -55,6 +55,8 @@ module Processing
|
|
55
55
|
# assumed to have this option.
|
56
56
|
opts.on_tail('-h', '--help', 'Display this screen') do
|
57
57
|
puts opts
|
58
|
+
puts ''
|
59
|
+
puts 'Run a sketch: jruby [--dev] [<sketch.rb>]'
|
58
60
|
exit
|
59
61
|
end
|
60
62
|
end
|
@@ -81,9 +83,7 @@ module Processing
|
|
81
83
|
library ||= 'new'
|
82
84
|
choice = library.downcase
|
83
85
|
case choice
|
84
|
-
when /sound/
|
85
|
-
warn 'The sound library is broken, try minim instead'
|
86
|
-
when /samples|video/
|
86
|
+
when /samples|sound|video/
|
87
87
|
system "cd #{PICRATE_ROOT}/vendors && rake install_#{choice}"
|
88
88
|
when /new/
|
89
89
|
# install samples and config geany
|
data/lib/picrate/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
java_import Java::MonkstoneComplex::JComplex
|
data/library/pdf/pdf.rb
ADDED
data/library/svg/svg.rb
ADDED
data/mvnw
CHANGED
@@ -212,9 +212,9 @@ else
|
|
212
212
|
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
213
213
|
fi
|
214
214
|
if [ -n "$MVNW_REPOURL" ]; then
|
215
|
-
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.
|
215
|
+
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
216
216
|
else
|
217
|
-
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.
|
217
|
+
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
218
218
|
fi
|
219
219
|
while IFS="=" read key value; do
|
220
220
|
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
data/mvnw.cmd
CHANGED
@@ -120,7 +120,7 @@ SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
|
120
120
|
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
121
121
|
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
122
122
|
|
123
|
-
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.
|
123
|
+
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
124
124
|
|
125
125
|
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
126
126
|
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
@@ -134,7 +134,7 @@ if exist %WRAPPER_JAR% (
|
|
134
134
|
)
|
135
135
|
) else (
|
136
136
|
if not "%MVNW_REPOURL%" == "" (
|
137
|
-
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.
|
137
|
+
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
138
138
|
)
|
139
139
|
if "%MVNW_VERBOSE%" == "true" (
|
140
140
|
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
data/picrate.gemspec
CHANGED
@@ -27,12 +27,14 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.files << 'lib/jogl-all-natives-linux-amd64.jar'
|
28
28
|
gem.files << 'lib/jogl-all-natives-linux-armv6hf.jar'
|
29
29
|
gem.files << 'lib/jogl-all-natives-linux-aarch64.jar'
|
30
|
+
gem.files << 'library/pdf/itextpdf-5.5.13.2.jar'
|
31
|
+
gem.files << 'library/svg/batik-all-1.14.jar'
|
30
32
|
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
31
33
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
32
|
-
gem.add_development_dependency 'minitest', '~> 5.
|
33
|
-
gem.
|
34
|
+
gem.add_development_dependency 'minitest', '~> 5.14'
|
35
|
+
gem.add_runtime_dependency 'rake', '~> 13.0'
|
34
36
|
gem.add_runtime_dependency 'arcball', '~> 1.0', '>= 1.0.1'
|
35
37
|
gem.require_paths = ['lib']
|
36
38
|
gem.platform = 'java'
|
37
|
-
gem.requirements << 'java runtime == 11'
|
39
|
+
gem.requirements << 'java runtime == 11+'
|
38
40
|
end
|
data/pom.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
project 'picrate', 'http://maven.apache.org' do
|
4
4
|
model_version '4.0.0'
|
5
|
-
id 'ruby-processing:picrate:2.
|
5
|
+
id 'ruby-processing:picrate:2.4.0'
|
6
6
|
packaging 'jar'
|
7
7
|
|
8
8
|
description 'An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.'
|
@@ -24,22 +24,43 @@ project 'picrate', 'http://maven.apache.org' do
|
|
24
24
|
issue_management 'https://github.com/ruby-processing/PiCrate/issues', 'Github'
|
25
25
|
# Need to update to jogl 2.4.1 as soon as available, then make a dependency
|
26
26
|
properties('jogl.version' => '2.3.2',
|
27
|
+
'batik.version' => '1.14',
|
28
|
+
'itextpdf.version' => '5.5.13.2',
|
27
29
|
'jruby.api' => 'http://jruby.org/apidocs/',
|
28
30
|
'source.directory' => 'src',
|
29
31
|
'processing.api' => 'http://processing.github.io/processing-javadocs/core/',
|
30
32
|
'picrate.basedir' => '${project.basedir}',
|
31
|
-
'project.build.sourceEncoding' => '
|
33
|
+
'project.build.sourceEncoding' => 'UTF-8',
|
32
34
|
'polyglot.dump.pom' => 'pom.xml')
|
33
35
|
|
34
|
-
pom 'org.jruby:jruby:9.2.
|
36
|
+
pom 'org.jruby:jruby:9.2.16.0'
|
35
37
|
jar 'org.jogamp.jogl:jogl-all:${jogl.version}'
|
36
38
|
jar 'org.jogamp.gluegen:gluegen-rt-main:${jogl.version}'
|
37
39
|
jar 'org.processing:video:3.0.2'
|
40
|
+
jar 'org.apache.xmlgraphics:batik-all:${batik.version}'
|
41
|
+
jar 'com.itextpdf:itextpdf:${itextpdf.version}'
|
38
42
|
end
|
39
43
|
|
40
44
|
overrides do
|
41
45
|
plugin :resources, '3.1.0'
|
42
|
-
plugin :dependency, '3.1.2'
|
46
|
+
plugin :dependency, '3.1.2' do
|
47
|
+
execute_goals( id: 'default-cli',
|
48
|
+
artifactItems:[
|
49
|
+
{ groupId: 'com.itextpdf',
|
50
|
+
artifactId: 'itextpdf',
|
51
|
+
version: '${itextpdf.version}',
|
52
|
+
type: 'jar',
|
53
|
+
outputDirectory: '${picrate.basedir}/library/pdf'
|
54
|
+
},
|
55
|
+
{ groupId: 'org.apache.xmlgraphics',
|
56
|
+
artifactId: 'batik-all',
|
57
|
+
version: '${batik.version}',
|
58
|
+
type: 'jar',
|
59
|
+
outputDirectory: '${picrate.basedir}/library/svg'
|
60
|
+
}
|
61
|
+
]
|
62
|
+
)
|
63
|
+
end
|
43
64
|
plugin(:compiler, '3.8.1',
|
44
65
|
'release' => '11')
|
45
66
|
plugin(:javadoc, '2.10.4',
|
@@ -47,11 +68,12 @@ overrides do
|
|
47
68
|
'links' => ['${processing.api}',
|
48
69
|
'${jruby.api}'])
|
49
70
|
plugin(:jar, '3.2.0',
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
71
|
+
'archive' => {
|
72
|
+
'manifestEntries' => {
|
73
|
+
'Automatic-Module-Name' => 'processing.core'
|
74
|
+
}
|
75
|
+
}
|
76
|
+
)
|
55
77
|
plugin :jdeps, '3.1.2' do
|
56
78
|
execute_goals 'jdkinternals', 'test-jdkinternals'
|
57
79
|
end
|
data/pom.xml
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
<!--
|
3
3
|
|
4
4
|
|
5
|
-
DO NOT
|
5
|
+
DO NOT MODIFY - GENERATED CODE
|
6
6
|
|
7
7
|
|
8
8
|
-->
|
9
|
-
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
9
|
+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
10
10
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
11
11
|
<modelVersion>4.0.0</modelVersion>
|
12
12
|
<groupId>ruby-processing</groupId>
|
13
13
|
<artifactId>picrate</artifactId>
|
14
|
-
<version>2.
|
14
|
+
<version>2.4.0</version>
|
15
15
|
<name>picrate</name>
|
16
16
|
<description>An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.</description>
|
17
17
|
<url>http://maven.apache.org</url>
|
@@ -64,19 +64,21 @@ DO NOT MODIFIY - GENERATED CODE
|
|
64
64
|
<url>https://github.com/ruby-processing/PiCrate/issues</url>
|
65
65
|
</issueManagement>
|
66
66
|
<properties>
|
67
|
+
<batik.version>1.14</batik.version>
|
68
|
+
<itextpdf.version>5.5.13.2</itextpdf.version>
|
67
69
|
<jogl.version>2.3.2</jogl.version>
|
68
70
|
<jruby.api>http://jruby.org/apidocs/</jruby.api>
|
69
71
|
<picrate.basedir>${project.basedir}</picrate.basedir>
|
70
72
|
<polyglot.dump.pom>pom.xml</polyglot.dump.pom>
|
71
73
|
<processing.api>http://processing.github.io/processing-javadocs/core/</processing.api>
|
72
|
-
<project.build.sourceEncoding>
|
74
|
+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
73
75
|
<source.directory>src</source.directory>
|
74
76
|
</properties>
|
75
77
|
<dependencies>
|
76
78
|
<dependency>
|
77
79
|
<groupId>org.jruby</groupId>
|
78
80
|
<artifactId>jruby</artifactId>
|
79
|
-
<version>9.2.
|
81
|
+
<version>9.2.16.0</version>
|
80
82
|
<type>pom</type>
|
81
83
|
</dependency>
|
82
84
|
<dependency>
|
@@ -94,6 +96,16 @@ DO NOT MODIFIY - GENERATED CODE
|
|
94
96
|
<artifactId>video</artifactId>
|
95
97
|
<version>3.0.2</version>
|
96
98
|
</dependency>
|
99
|
+
<dependency>
|
100
|
+
<groupId>org.apache.xmlgraphics</groupId>
|
101
|
+
<artifactId>batik-all</artifactId>
|
102
|
+
<version>${batik.version}</version>
|
103
|
+
</dependency>
|
104
|
+
<dependency>
|
105
|
+
<groupId>com.itextpdf</groupId>
|
106
|
+
<artifactId>itextpdf</artifactId>
|
107
|
+
<version>${itextpdf.version}</version>
|
108
|
+
</dependency>
|
97
109
|
</dependencies>
|
98
110
|
<build>
|
99
111
|
<resources>
|
@@ -124,6 +136,29 @@ DO NOT MODIFIY - GENERATED CODE
|
|
124
136
|
<plugin>
|
125
137
|
<artifactId>maven-dependency-plugin</artifactId>
|
126
138
|
<version>3.1.2</version>
|
139
|
+
<executions>
|
140
|
+
<execution>
|
141
|
+
<id>default-cli</id>
|
142
|
+
<configuration>
|
143
|
+
<artifactItems>
|
144
|
+
<artifactItem>
|
145
|
+
<groupId>com.itextpdf</groupId>
|
146
|
+
<artifactId>itextpdf</artifactId>
|
147
|
+
<version>${itextpdf.version}</version>
|
148
|
+
<type>jar</type>
|
149
|
+
<outputDirectory>${picrate.basedir}/library/pdf</outputDirectory>
|
150
|
+
</artifactItem>
|
151
|
+
<artifactItem>
|
152
|
+
<groupId>org.apache.xmlgraphics</groupId>
|
153
|
+
<artifactId>batik-all</artifactId>
|
154
|
+
<version>${batik.version}</version>
|
155
|
+
<type>jar</type>
|
156
|
+
<outputDirectory>${picrate.basedir}/library/svg</outputDirectory>
|
157
|
+
</artifactItem>
|
158
|
+
</artifactItems>
|
159
|
+
</configuration>
|
160
|
+
</execution>
|
161
|
+
</executions>
|
127
162
|
</plugin>
|
128
163
|
<plugin>
|
129
164
|
<artifactId>maven-compiler-plugin</artifactId>
|
@@ -149,7 +184,7 @@ DO NOT MODIFIY - GENERATED CODE
|
|
149
184
|
<configuration>
|
150
185
|
<archive>
|
151
186
|
<manifestEntries>
|
152
|
-
<
|
187
|
+
<Automatic-Module-Name>processing.core</Automatic-Module-Name>
|
153
188
|
</manifestEntries>
|
154
189
|
</archive>
|
155
190
|
</configuration>
|
@@ -0,0 +1,127 @@
|
|
1
|
+
/*
|
2
|
+
* To change this license header, choose License Headers in Project Properties.
|
3
|
+
* To change this template file, choose Tools | Templates
|
4
|
+
* and open the template in the editor.
|
5
|
+
*/
|
6
|
+
package monkstone;
|
7
|
+
|
8
|
+
import monkstone.noise.OpenSimplex2F;
|
9
|
+
import org.jruby.Ruby;
|
10
|
+
import org.jruby.RubyFixnum;
|
11
|
+
import org.jruby.RubyFloat;
|
12
|
+
import org.jruby.RubyModule;
|
13
|
+
import org.jruby.anno.JRubyMethod;
|
14
|
+
import org.jruby.anno.JRubyModule;
|
15
|
+
import org.jruby.runtime.ThreadContext;
|
16
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
17
|
+
|
18
|
+
/**
|
19
|
+
*
|
20
|
+
* @author Martin Prout
|
21
|
+
*/
|
22
|
+
@JRubyModule(name = "FastNoise")
|
23
|
+
public class FastNoiseModuleJava {
|
24
|
+
|
25
|
+
static OpenSimplex2F ng = new OpenSimplex2F(System.currentTimeMillis());
|
26
|
+
|
27
|
+
/**
|
28
|
+
*
|
29
|
+
* @param runtime Ruby
|
30
|
+
*/
|
31
|
+
public static void createNoiseModule(Ruby runtime) {
|
32
|
+
RubyModule noiseModule = runtime.defineModule("FastNoise");
|
33
|
+
noiseModule.defineAnnotatedMethods(FastNoiseModuleJava.class);
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
*
|
38
|
+
* @param context ThreadContext
|
39
|
+
* @param recv IRubyObject
|
40
|
+
* @param args array of numeric values
|
41
|
+
* @return mapped value RubyFloat
|
42
|
+
*/
|
43
|
+
@JRubyMethod(name = "tnoise", rest = true, module = true)
|
44
|
+
public static IRubyObject terrainNoiseImpl(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
45
|
+
double result = 0;
|
46
|
+
double one;
|
47
|
+
double two;
|
48
|
+
double three;
|
49
|
+
double four;
|
50
|
+
switch (args.length) {
|
51
|
+
case 2:
|
52
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
53
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
54
|
+
result = ng.noise2_XBeforeY(one, two);
|
55
|
+
break;
|
56
|
+
case 3:
|
57
|
+
three = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
58
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
59
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
60
|
+
result = ng.noise3_XYBeforeZ(one, two, three);
|
61
|
+
break;
|
62
|
+
case 4:
|
63
|
+
four = (args[3] instanceof RubyFloat) ? ((RubyFloat) args[3]).getValue() : ((RubyFixnum) args[3]).getDoubleValue();
|
64
|
+
three = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
65
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
66
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
67
|
+
result = ng.noise4_XYBeforeZW(one, two, three, four);
|
68
|
+
break;
|
69
|
+
default:
|
70
|
+
throw new RuntimeException("Min 2D Max 4D Noise");
|
71
|
+
}
|
72
|
+
return RubyFloat.newFloat(context.runtime, result);
|
73
|
+
}
|
74
|
+
|
75
|
+
/**
|
76
|
+
*
|
77
|
+
* @param context ThreadContext
|
78
|
+
* @param recv IRubyObject
|
79
|
+
* @param args array of numeric values
|
80
|
+
* @return mapped value RubyFloat
|
81
|
+
*/
|
82
|
+
@JRubyMethod(name = "noise", rest = true, module = true)
|
83
|
+
public static IRubyObject noiseImpl(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
84
|
+
double result = 0;
|
85
|
+
double one;
|
86
|
+
double two;
|
87
|
+
double three;
|
88
|
+
double four;
|
89
|
+
switch (args.length) {
|
90
|
+
case 1:
|
91
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
92
|
+
result = ng.noise2(one, 0);
|
93
|
+
break;
|
94
|
+
case 2:
|
95
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
96
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
97
|
+
result = ng.noise2(one, two);
|
98
|
+
break;
|
99
|
+
case 3:
|
100
|
+
three = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
101
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
102
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
103
|
+
result = ng.noise3_Classic(one, two, three);
|
104
|
+
break;
|
105
|
+
case 4:
|
106
|
+
four = (args[3] instanceof RubyFloat) ? ((RubyFloat) args[3]).getValue() : ((RubyFixnum) args[3]).getDoubleValue();
|
107
|
+
three = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
108
|
+
two = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
109
|
+
one = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
110
|
+
result = ng.noise4_Classic(one, two, three, four);
|
111
|
+
break;
|
112
|
+
default:
|
113
|
+
throw new RuntimeException("Maximum of 4D Noise");
|
114
|
+
}
|
115
|
+
return RubyFloat.newFloat(context.runtime, result);
|
116
|
+
}
|
117
|
+
// @JRubyMethod(name = "noise_seed", rest = true, module = true)
|
118
|
+
// public static IRubyObject noiseSeedImpl(ThreadContext context, IRubyObject recv, IRubyObject arg) {
|
119
|
+
// long seed;
|
120
|
+
// if (arg instanceof RubyNumeric) {
|
121
|
+
// seed = ((RubyNumeric) arg).getLongValue();
|
122
|
+
// ng = new OpenSimplex2F(seed);
|
123
|
+
// return RubyBoolean.newBoolean(context.runtime, true);
|
124
|
+
// }
|
125
|
+
// return RubyBoolean.newBoolean(context.runtime, false);
|
126
|
+
// }
|
127
|
+
}
|