propane 3.9.0-java → 3.10.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/.travis.yml +1 -1
- data/CHANGELOG.md +2 -2
- data/README.md +3 -3
- data/Rakefile +6 -6
- data/lib/java/japplemenubar/JAppleMenuBar.java +88 -0
- data/lib/java/japplemenubar/libjAppleMenuBar.jnilib +0 -0
- data/lib/java/monkstone/ColorUtil.java +127 -0
- data/lib/java/monkstone/MathToolModule.java +287 -0
- data/lib/java/monkstone/PropaneLibrary.java +46 -0
- data/lib/java/monkstone/core/LibraryProxy.java +136 -0
- data/lib/java/monkstone/fastmath/DegLutTables.java +111 -0
- data/lib/java/monkstone/fastmath/Deglut.java +71 -0
- data/lib/java/monkstone/fastmath/package-info.java +6 -0
- data/lib/java/monkstone/filechooser/Chooser.java +39 -0
- data/{src/main → lib}/java/monkstone/noise/FastTerrain.java +0 -0
- data/{src/main → lib}/java/monkstone/noise/Noise.java +0 -0
- data/{src/main → lib}/java/monkstone/noise/NoiseGenerator.java +0 -0
- data/{src/main → lib}/java/monkstone/noise/NoiseMode.java +0 -0
- data/lib/java/monkstone/noise/OpenSimplex2F.java +881 -0
- data/lib/java/monkstone/noise/OpenSimplex2S.java +1106 -0
- data/{src/main → lib}/java/monkstone/noise/SmoothTerrain.java +0 -0
- data/lib/java/monkstone/slider/CustomHorizontalSlider.java +164 -0
- data/lib/java/monkstone/slider/CustomVerticalSlider.java +178 -0
- data/lib/java/monkstone/slider/SimpleHorizontalSlider.java +145 -0
- data/lib/java/monkstone/slider/SimpleSlider.java +166 -0
- data/lib/java/monkstone/slider/SimpleVerticalSlider.java +157 -0
- data/lib/java/monkstone/slider/Slider.java +61 -0
- data/lib/java/monkstone/slider/SliderBar.java +245 -0
- data/lib/java/monkstone/slider/SliderGroup.java +56 -0
- data/lib/java/monkstone/slider/WheelHandler.java +35 -0
- data/lib/java/monkstone/vecmath/GfxRender.java +86 -0
- data/lib/java/monkstone/vecmath/JRender.java +56 -0
- data/lib/java/monkstone/vecmath/ShapeRender.java +87 -0
- data/lib/java/monkstone/vecmath/package-info.java +20 -0
- data/lib/java/monkstone/vecmath/vec2/Vec2.java +802 -0
- data/lib/java/monkstone/vecmath/vec2/package-info.java +6 -0
- data/lib/java/monkstone/vecmath/vec3/Vec3.java +727 -0
- data/lib/java/monkstone/vecmath/vec3/package-info.java +6 -0
- data/lib/java/monkstone/videoevent/CaptureEvent.java +27 -0
- data/lib/java/monkstone/videoevent/MovieEvent.java +32 -0
- data/lib/java/monkstone/videoevent/package-info.java +20 -0
- data/lib/java/processing/awt/PGraphicsJava2D.java +3040 -0
- data/lib/java/processing/awt/PImageAWT.java +377 -0
- data/lib/java/processing/awt/PShapeJava2D.java +387 -0
- data/lib/java/processing/awt/PSurfaceAWT.java +1581 -0
- data/lib/java/processing/awt/ShimAWT.java +581 -0
- data/lib/java/processing/core/PApplet.java +15156 -0
- data/lib/java/processing/core/PConstants.java +523 -0
- data/lib/java/processing/core/PFont.java +1126 -0
- data/lib/java/processing/core/PGraphics.java +8600 -0
- data/lib/java/processing/core/PImage.java +3377 -0
- data/lib/java/processing/core/PMatrix.java +208 -0
- data/lib/java/processing/core/PMatrix2D.java +562 -0
- data/lib/java/processing/core/PMatrix3D.java +890 -0
- data/lib/java/processing/core/PShape.java +3561 -0
- data/lib/java/processing/core/PShapeOBJ.java +483 -0
- data/lib/java/processing/core/PShapeSVG.java +2016 -0
- data/lib/java/processing/core/PStyle.java +63 -0
- data/lib/java/processing/core/PSurface.java +198 -0
- data/lib/java/processing/core/PSurfaceNone.java +431 -0
- data/lib/java/processing/core/PVector.java +1066 -0
- data/lib/java/processing/core/ThinkDifferent.java +115 -0
- data/lib/java/processing/data/DoubleDict.java +850 -0
- data/lib/java/processing/data/DoubleList.java +928 -0
- data/lib/java/processing/data/FloatDict.java +847 -0
- data/lib/java/processing/data/FloatList.java +936 -0
- data/lib/java/processing/data/IntDict.java +807 -0
- data/lib/java/processing/data/IntList.java +936 -0
- data/lib/java/processing/data/JSONArray.java +1260 -0
- data/lib/java/processing/data/JSONObject.java +2282 -0
- data/lib/java/processing/data/JSONTokener.java +435 -0
- data/lib/java/processing/data/LongDict.java +802 -0
- data/lib/java/processing/data/LongList.java +937 -0
- data/lib/java/processing/data/Sort.java +46 -0
- data/lib/java/processing/data/StringDict.java +613 -0
- data/lib/java/processing/data/StringList.java +800 -0
- data/lib/java/processing/data/Table.java +4936 -0
- data/lib/java/processing/data/TableRow.java +198 -0
- data/lib/java/processing/data/XML.java +1156 -0
- data/lib/java/processing/dxf/RawDXF.java +404 -0
- data/lib/java/processing/event/Event.java +125 -0
- data/lib/java/processing/event/KeyEvent.java +70 -0
- data/lib/java/processing/event/MouseEvent.java +114 -0
- data/lib/java/processing/event/TouchEvent.java +57 -0
- data/lib/java/processing/javafx/PGraphicsFX2D.java +32 -0
- data/lib/java/processing/javafx/PSurfaceFX.java +173 -0
- data/lib/java/processing/net/Client.java +744 -0
- data/lib/java/processing/net/Server.java +388 -0
- data/lib/java/processing/opengl/FontTexture.java +378 -0
- data/lib/java/processing/opengl/FrameBuffer.java +513 -0
- data/lib/java/processing/opengl/LinePath.java +627 -0
- data/lib/java/processing/opengl/LineStroker.java +681 -0
- data/lib/java/processing/opengl/PGL.java +3483 -0
- data/lib/java/processing/opengl/PGraphics2D.java +615 -0
- data/lib/java/processing/opengl/PGraphics3D.java +281 -0
- data/lib/java/processing/opengl/PGraphicsOpenGL.java +13753 -0
- data/lib/java/processing/opengl/PJOGL.java +2008 -0
- data/lib/java/processing/opengl/PShader.java +1484 -0
- data/lib/java/processing/opengl/PShapeOpenGL.java +5269 -0
- data/lib/java/processing/opengl/PSurfaceJOGL.java +1385 -0
- data/lib/java/processing/opengl/Texture.java +1696 -0
- data/lib/java/processing/opengl/VertexBuffer.java +88 -0
- data/lib/java/processing/opengl/cursors/arrow.png +0 -0
- data/lib/java/processing/opengl/cursors/cross.png +0 -0
- data/lib/java/processing/opengl/cursors/hand.png +0 -0
- data/lib/java/processing/opengl/cursors/license.txt +27 -0
- data/lib/java/processing/opengl/cursors/move.png +0 -0
- data/lib/java/processing/opengl/cursors/text.png +0 -0
- data/lib/java/processing/opengl/cursors/wait.png +0 -0
- data/lib/java/processing/opengl/shaders/ColorFrag.glsl +32 -0
- data/lib/java/processing/opengl/shaders/ColorVert.glsl +34 -0
- data/lib/java/processing/opengl/shaders/LightFrag.glsl +33 -0
- data/lib/java/processing/opengl/shaders/LightVert.glsl +151 -0
- data/lib/java/processing/opengl/shaders/LineFrag.glsl +32 -0
- data/lib/java/processing/opengl/shaders/LineVert.glsl +100 -0
- data/lib/java/processing/opengl/shaders/MaskFrag.glsl +40 -0
- data/lib/java/processing/opengl/shaders/PointFrag.glsl +32 -0
- data/lib/java/processing/opengl/shaders/PointVert.glsl +56 -0
- data/lib/java/processing/opengl/shaders/TexFrag.glsl +37 -0
- data/lib/java/processing/opengl/shaders/TexLightFrag.glsl +37 -0
- data/lib/java/processing/opengl/shaders/TexLightVert.glsl +157 -0
- data/lib/java/processing/opengl/shaders/TexVert.glsl +38 -0
- data/lib/java/processing/pdf/PGraphicsPDF.java +581 -0
- data/lib/java/processing/svg/PGraphicsSVG.java +378 -0
- data/lib/propane/app.rb +8 -13
- data/lib/propane/version.rb +1 -1
- data/mvnw +3 -3
- data/mvnw.cmd +2 -2
- data/pom.rb +7 -2
- data/pom.xml +14 -2
- data/propane.gemspec +2 -2
- data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/MathToolModule.java +30 -30
- data/src/main/java/monkstone/PropaneLibrary.java +2 -0
- data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/fastmath/DegLutTables.java +15 -15
- data/src/main/java/monkstone/filechooser/Chooser.java +1 -1
- data/src/main/java/monkstone/noise/OpenSimplex2F.java +752 -820
- data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -1106
- data/src/main/java/monkstone/slider/WheelHandler.java +1 -1
- data/src/main/java/monkstone/vecmath/JRender.java +6 -6
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +20 -19
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +12 -12
- data/src/main/java/processing/awt/PGraphicsJava2D.java +11 -3
- data/src/main/java/processing/core/PApplet.java +89 -89
- data/src/main/java/processing/core/PConstants.java +155 -163
- data/src/main/java/processing/opengl/PJOGL.java +6 -5
- data/vendors/Rakefile +1 -1
- metadata +136 -19
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/pom.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
project 'propane', 'https://github.com/monkstone/propane' do
|
|
4
4
|
model_version '4.0.0'
|
|
5
|
-
id 'propane:propane:3.
|
|
5
|
+
id 'propane:propane:3.10.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.'
|
|
@@ -48,7 +48,7 @@ project 'propane', 'https://github.com/monkstone/propane' do
|
|
|
48
48
|
'itextpdf.version' => '5.5.13.2',
|
|
49
49
|
'jruby.api' => 'http://jruby.org/apidocs/')
|
|
50
50
|
|
|
51
|
-
pom 'org.jruby:jruby:9.2.
|
|
51
|
+
pom 'org.jruby:jruby:9.2.17.0'
|
|
52
52
|
jar 'org.apache.xmlgraphics:batik-all:${batik.version}'
|
|
53
53
|
jar 'com.itextpdf:itextpdf:${itextpdf.version}'
|
|
54
54
|
jar 'org.processing:video:3.3.7' # only for compiling
|
|
@@ -56,6 +56,7 @@ project 'propane', 'https://github.com/monkstone/propane' do
|
|
|
56
56
|
jar 'org.jogamp.gluegen:gluegen-rt-main:${jogl.version}'
|
|
57
57
|
|
|
58
58
|
overrides do
|
|
59
|
+
|
|
59
60
|
plugin('org.codehaus.mojo:versions-maven-plugin:2.7',
|
|
60
61
|
'generateBackupPoms' => 'false')
|
|
61
62
|
plugin(:compiler, '3.8.1',
|
|
@@ -88,6 +89,7 @@ project 'propane', 'https://github.com/monkstone/propane' do
|
|
|
88
89
|
'Automatic-Module-Name' => 'processing.core'
|
|
89
90
|
}
|
|
90
91
|
})
|
|
92
|
+
plugin('org.apache.maven.plugins:maven-pmd-plugin:3.14.0')
|
|
91
93
|
end
|
|
92
94
|
build do
|
|
93
95
|
resource do
|
|
@@ -102,3 +104,6 @@ project 'propane', 'https://github.com/monkstone/propane' do
|
|
|
102
104
|
end
|
|
103
105
|
end
|
|
104
106
|
end
|
|
107
|
+
reporting do
|
|
108
|
+
plugin('org.apache.maven.plugins:maven-jxr-plugin:2.3')
|
|
109
|
+
end
|
data/pom.xml
CHANGED
|
@@ -11,7 +11,7 @@ DO NOT MODIFY - GENERATED CODE
|
|
|
11
11
|
<modelVersion>4.0.0</modelVersion>
|
|
12
12
|
<groupId>propane</groupId>
|
|
13
13
|
<artifactId>propane</artifactId>
|
|
14
|
-
<version>3.
|
|
14
|
+
<version>3.10.0</version>
|
|
15
15
|
<name>propane</name>
|
|
16
16
|
<description>An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.</description>
|
|
17
17
|
<url>https://github.com/monkstone/propane</url>
|
|
@@ -76,7 +76,7 @@ DO NOT MODIFY - GENERATED CODE
|
|
|
76
76
|
<dependency>
|
|
77
77
|
<groupId>org.jruby</groupId>
|
|
78
78
|
<artifactId>jruby</artifactId>
|
|
79
|
-
<version>9.2.
|
|
79
|
+
<version>9.2.17.0</version>
|
|
80
80
|
<type>pom</type>
|
|
81
81
|
</dependency>
|
|
82
82
|
<dependency>
|
|
@@ -191,7 +191,19 @@ DO NOT MODIFY - GENERATED CODE
|
|
|
191
191
|
</archive>
|
|
192
192
|
</configuration>
|
|
193
193
|
</plugin>
|
|
194
|
+
<plugin>
|
|
195
|
+
<artifactId>maven-pmd-plugin</artifactId>
|
|
196
|
+
<version>3.14.0</version>
|
|
197
|
+
</plugin>
|
|
194
198
|
</plugins>
|
|
195
199
|
</pluginManagement>
|
|
196
200
|
</build>
|
|
201
|
+
<reporting>
|
|
202
|
+
<plugins>
|
|
203
|
+
<plugin>
|
|
204
|
+
<artifactId>maven-jxr-plugin</artifactId>
|
|
205
|
+
<version>2.3</version>
|
|
206
|
+
</plugin>
|
|
207
|
+
</plugins>
|
|
208
|
+
</reporting>
|
|
197
209
|
</project>
|
data/propane.gemspec
CHANGED
|
@@ -31,9 +31,9 @@ Gem::Specification.new do |gem|
|
|
|
31
31
|
gem.files << 'library/svg/batik-all-1.14.jar'
|
|
32
32
|
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
33
33
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
34
|
-
gem.add_development_dependency 'jruby-openssl', '~> 0.
|
|
34
|
+
gem.add_development_dependency 'jruby-openssl', '~> 0.10', '>=0.10.5'
|
|
35
35
|
gem.add_development_dependency 'minitest', '~> 5.14'
|
|
36
|
-
gem.add_runtime_dependency 'rake', '~>
|
|
36
|
+
gem.add_runtime_dependency 'rake', '~> 13.0'
|
|
37
37
|
gem.add_runtime_dependency 'arcball', '~> 1.0', '>= 1.0.2'
|
|
38
38
|
gem.require_paths = ['lib']
|
|
39
39
|
gem.platform = 'java'
|
|
@@ -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
|
+
}
|
|
@@ -47,17 +47,17 @@ public class MathToolModule {
|
|
|
47
47
|
*/
|
|
48
48
|
@JRubyMethod(name = "map1d", rest = true, module = true)
|
|
49
49
|
public static IRubyObject mapOneD(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
50
|
-
double value =
|
|
50
|
+
double value = args[0] instanceof RubyFloat
|
|
51
51
|
? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
52
52
|
RubyRange r1 = (RubyRange) args[1];
|
|
53
53
|
RubyRange r2 = (RubyRange) args[2];
|
|
54
|
-
double first1 =
|
|
54
|
+
double first1 = r1.first(context) instanceof RubyFloat
|
|
55
55
|
? ((RubyFloat) r1.first(context)).getValue() : ((RubyFixnum) r1.first(context)).getDoubleValue();
|
|
56
|
-
double first2 =
|
|
56
|
+
double first2 = r2.first(context) instanceof RubyFloat
|
|
57
57
|
? ((RubyFloat) r2.first(context)).getValue() : ((RubyFixnum) r2.first(context)).getDoubleValue();
|
|
58
|
-
double last1 =
|
|
58
|
+
double last1 = r1.last(context) instanceof RubyFloat
|
|
59
59
|
? ((RubyFloat) r1.last(context)).getValue() : ((RubyFixnum) r1.last(context)).getDoubleValue();
|
|
60
|
-
double last2 =
|
|
60
|
+
double last2 = r2.last(context) instanceof RubyFloat
|
|
61
61
|
? ((RubyFloat) r2.last(context)).getValue() : ((RubyFixnum) r2.last(context)).getDoubleValue();
|
|
62
62
|
return mapMt(context, value, first1, last1, first2, last2);
|
|
63
63
|
}
|
|
@@ -71,16 +71,16 @@ public class MathToolModule {
|
|
|
71
71
|
*/
|
|
72
72
|
@JRubyMethod(name = "constrained_map", rest = true, module = true)
|
|
73
73
|
public static IRubyObject constrainedMap(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
74
|
-
double value =
|
|
74
|
+
double value = args[0] instanceof RubyFloat ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
75
75
|
RubyRange r1 = (RubyRange) args[1];
|
|
76
76
|
RubyRange r2 = (RubyRange) args[2];
|
|
77
|
-
double first1 =
|
|
77
|
+
double first1 = r1.first(context) instanceof RubyFloat
|
|
78
78
|
? ((RubyFloat) r1.first(context)).getValue() : ((RubyFixnum) r1.first(context)).getDoubleValue();
|
|
79
|
-
double first2 =
|
|
79
|
+
double first2 = r2.first(context) instanceof RubyFloat
|
|
80
80
|
? ((RubyFloat) r2.first(context)).getValue() : ((RubyFixnum) r2.first(context)).getDoubleValue();
|
|
81
|
-
double last1 =
|
|
81
|
+
double last1 = r1.last(context) instanceof RubyFloat
|
|
82
82
|
? ((RubyFloat) r1.last(context)).getValue() : ((RubyFixnum) r1.last(context)).getDoubleValue();
|
|
83
|
-
double last2 =
|
|
83
|
+
double last2 = r2.last(context) instanceof RubyFloat
|
|
84
84
|
? ((RubyFloat) r2.last(context)).getValue() : ((RubyFixnum) r2.last(context)).getDoubleValue();
|
|
85
85
|
double max = Math.max(first1, last1);
|
|
86
86
|
double min = Math.min(first1, last1);
|
|
@@ -102,11 +102,11 @@ public class MathToolModule {
|
|
|
102
102
|
*/
|
|
103
103
|
@JRubyMethod(name = "p5map", rest = true, module = true)
|
|
104
104
|
public static IRubyObject mapProcessing(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
105
|
-
double value =
|
|
106
|
-
double first1 =
|
|
107
|
-
double first2 =
|
|
108
|
-
double last1 =
|
|
109
|
-
double last2 =
|
|
105
|
+
double value = args[0] instanceof RubyFloat ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
106
|
+
double first1 = args[1] instanceof RubyFloat ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
|
107
|
+
double first2 = args[3] instanceof RubyFloat ? ((RubyFloat) args[3]).getValue() : ((RubyFixnum) args[3]).getDoubleValue();
|
|
108
|
+
double last1 = args[2] instanceof RubyFloat ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
|
109
|
+
double last2 = args[4] instanceof RubyFloat ? ((RubyFloat) args[4]).getValue() : ((RubyFixnum) args[4]).getDoubleValue();
|
|
110
110
|
return mapMt(context, value, first1, last1, first2, last2);
|
|
111
111
|
}
|
|
112
112
|
|
|
@@ -121,16 +121,16 @@ public class MathToolModule {
|
|
|
121
121
|
*/
|
|
122
122
|
@JRubyMethod(name = "lerp", rest = true, module = true)
|
|
123
123
|
public static IRubyObject lerpP(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
124
|
-
double start =
|
|
125
|
-
double stop =
|
|
126
|
-
double amount =
|
|
124
|
+
double start = args[0] instanceof RubyFloat ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
125
|
+
double stop = args[1] instanceof RubyFloat ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
|
126
|
+
double amount = args[2] instanceof RubyFloat ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
|
127
127
|
if (amount <= 0) {
|
|
128
128
|
return args[0];
|
|
129
129
|
}
|
|
130
130
|
if (amount >= 1.0) {
|
|
131
131
|
return args[1];
|
|
132
132
|
}
|
|
133
|
-
return context.runtime.newFloat((1 - amount) * start +
|
|
133
|
+
return context.runtime.newFloat((1 - amount) * start + stop * amount);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
/**
|
|
@@ -145,9 +145,9 @@ public class MathToolModule {
|
|
|
145
145
|
*/
|
|
146
146
|
@JRubyMethod(name = "norm", rest = true, module = true)
|
|
147
147
|
public static IRubyObject normP(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
148
|
-
double value =
|
|
149
|
-
double start =
|
|
150
|
-
double stop =
|
|
148
|
+
double value = args[0] instanceof RubyFloat ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
149
|
+
double start = args[1] instanceof RubyFloat ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
|
150
|
+
double stop = args[2] instanceof RubyFloat ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
|
151
151
|
return mapMt(context, value, start, stop, 0, 1.0);
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -163,9 +163,9 @@ public class MathToolModule {
|
|
|
163
163
|
@JRubyMethod(name = "norm_strict", rest = true, module = true)
|
|
164
164
|
public static IRubyObject norm_strict(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
|
|
165
165
|
|
|
166
|
-
double value =
|
|
167
|
-
double start =
|
|
168
|
-
double stop =
|
|
166
|
+
double value = args[0] instanceof RubyFloat ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
|
|
167
|
+
double start = args[1] instanceof RubyFloat ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
|
|
168
|
+
double stop = args[2] instanceof RubyFloat ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
|
|
169
169
|
double max = Math.max(start, stop);
|
|
170
170
|
double min = Math.min(start, stop);
|
|
171
171
|
if (value < min) {
|
|
@@ -266,14 +266,14 @@ public class MathToolModule {
|
|
|
266
266
|
int xDim = (int) args[0].toJava(Integer.class);
|
|
267
267
|
int yDim = (int) args[1].toJava(Integer.class);
|
|
268
268
|
int zDim = (int) args[2].toJava(Integer.class);
|
|
269
|
-
int xStep =
|
|
270
|
-
int yStep =
|
|
271
|
-
int zStep =
|
|
272
|
-
|
|
269
|
+
int xStep = args.length > 3 ? (int) args[3].toJava(Integer.class) : 1;
|
|
270
|
+
int yStep = args.length > 4 ? (int) args[4].toJava(Integer.class) : 1;
|
|
271
|
+
int zStep = args.length == 6 ? (int) args[5].toJava(Integer.class) : 1;
|
|
272
|
+
// int dimX = xDim / xStep;
|
|
273
273
|
int dimY = yDim / yStep;
|
|
274
274
|
int dimZ = zDim / zStep;
|
|
275
275
|
if (block.isGiven()) {
|
|
276
|
-
|
|
276
|
+
// int count = dimX * dimY * dimZ;
|
|
277
277
|
for (int x = 0; x < xDim; x += xStep){
|
|
278
278
|
for (int j = 0; j < (dimZ * dimY); j++){
|
|
279
279
|
int z = j % dimZ;
|
|
@@ -28,6 +28,8 @@ public class PropaneLibrary implements Library {
|
|
|
28
28
|
*/
|
|
29
29
|
public static void load(final Ruby runtime) {
|
|
30
30
|
MathToolModule.createMathToolModule(runtime);
|
|
31
|
+
FastNoiseModuleJava.createNoiseModule(runtime);
|
|
32
|
+
SmoothNoiseModuleJava.createNoiseModule(runtime);
|
|
31
33
|
Deglut.createDeglut(runtime);
|
|
32
34
|
Vec2.createVec2(runtime);
|
|
33
35
|
Vec3.createVec3(runtime);
|
|
@@ -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.OpenSimplex2S;
|
|
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 = "SmoothNoise")
|
|
23
|
+
public class SmoothNoiseModuleJava {
|
|
24
|
+
|
|
25
|
+
static OpenSimplex2S ng = new OpenSimplex2S(System.currentTimeMillis());
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param runtime Ruby
|
|
30
|
+
*/
|
|
31
|
+
public static void createNoiseModule(Ruby runtime) {
|
|
32
|
+
RubyModule noiseModule = runtime.defineModule("SmoothNoise");
|
|
33
|
+
noiseModule.defineAnnotatedMethods(SmoothNoiseModuleJava.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 OpenSimplex2S(seed);
|
|
123
|
+
// return RubyBoolean.newBoolean(context.runtime, true);
|
|
124
|
+
// }
|
|
125
|
+
// return RubyBoolean.newBoolean(context.runtime, false);
|
|
126
|
+
// }
|
|
127
|
+
}
|