toxiclibs 0.4.0 → 0.8.0
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/.gitignore +16 -0
- data/.mvn/extensions.xml +8 -0
- data/.mvn/wrapper/maven-wrapper.properties +1 -0
- data/.travis.yml +23 -0
- data/CHANGELOG.md +7 -0
- data/COPYING.md +14 -0
- data/Gemfile +10 -0
- data/LICENSE +675 -0
- data/README.md +9 -7
- data/Rakefile +25 -81
- data/examples/README.md +5 -0
- data/examples/attract_repel/attract_repel.rb +30 -0
- data/examples/attract_repel/attractor.rb +23 -0
- data/examples/attract_repel/particle.rb +27 -0
- data/examples/data/ReplicaBold.ttf +0 -0
- data/examples/data/ti_yong.png +0 -0
- data/examples/force_directed/cluster.rb +76 -0
- data/examples/force_directed/force_directed_graph.rb +92 -0
- data/examples/force_directed/node.rb +26 -0
- data/examples/gray_scott_image.rb +74 -0
- data/examples/gray_scott_tone_map.rb +77 -0
- data/examples/implicit.rb +139 -0
- data/examples/inflate_mesh.rb +89 -0
- data/examples/model_align.rb +43 -0
- data/examples/physics_type.rb +77 -0
- data/examples/povmesh/data/mask.jpg +0 -0
- data/examples/povmesh/ftest.rb +59 -0
- data/examples/povmesh/mesh_align.rb +47 -0
- data/examples/povmesh/tentacle.rb +71 -0
- data/examples/simple_cluster/cluster.rb +47 -0
- data/examples/simple_cluster/node.rb +27 -0
- data/examples/simple_cluster/simple_cluster.rb +60 -0
- data/examples/soft_body/blanket.rb +45 -0
- data/examples/soft_body/connection.rb +16 -0
- data/examples/soft_body/particle.rb +22 -0
- data/examples/soft_body/soft_body_square_adapted.rb +55 -0
- data/examples/spherical_harmonics_mesh.rb +50 -0
- data/examples/test_rect.rb +32 -0
- data/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +72 -22
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.rb +63 -0
- data/pom.xml +124 -0
- data/src/com/toxi/net/ClientListener.java +41 -0
- data/src/com/toxi/net/ServerListener.java +70 -0
- data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
- data/src/com/toxi/net/ServerState.java +18 -0
- data/src/com/toxi/net/UDPConnection.java +66 -0
- data/src/com/toxi/net/UDPSyncClient.java +81 -0
- data/src/com/toxi/net/UDPSyncServer.java +450 -0
- data/src/com/toxi/nio/UDPClient.java +121 -0
- data/src/com/toxi/nio/UDPClientState.java +32 -0
- data/src/com/toxi/nio/UDPServer.java +129 -0
- data/src/toxi/audio/AudioBuffer.java +229 -0
- data/src/toxi/audio/AudioSource.java +288 -0
- data/src/toxi/audio/DecompressInputStream.java +159 -0
- data/src/toxi/audio/IIRFilter.java +197 -0
- data/src/toxi/audio/JOALUtil.java +388 -0
- data/src/toxi/audio/MultiTimbralManager.java +162 -0
- data/src/toxi/audio/SoundListener.java +154 -0
- data/src/toxi/audio/SynthUtil.java +109 -0
- data/src/toxi/color/AccessCriteria.java +114 -0
- data/src/toxi/color/AlphaAccessor.java +67 -0
- data/src/toxi/color/CMYKAccessor.java +122 -0
- data/src/toxi/color/CMYKDistanceProxy.java +40 -0
- data/src/toxi/color/ColorGradient.java +260 -0
- data/src/toxi/color/ColorList.java +699 -0
- data/src/toxi/color/ColorRange.java +671 -0
- data/src/toxi/color/ColorTheme.java +163 -0
- data/src/toxi/color/DistanceProxy.java +44 -0
- data/src/toxi/color/HSVAccessor.java +113 -0
- data/src/toxi/color/HSVDistanceProxy.java +40 -0
- data/src/toxi/color/HistEntry.java +85 -0
- data/src/toxi/color/Histogram.java +185 -0
- data/src/toxi/color/Hue.java +249 -0
- data/src/toxi/color/LuminanceAccessor.java +78 -0
- data/src/toxi/color/NamedColor.java +935 -0
- data/src/toxi/color/ProximityComparator.java +70 -0
- data/src/toxi/color/RGBAccessor.java +113 -0
- data/src/toxi/color/RGBDistanceProxy.java +41 -0
- data/src/toxi/color/ReadonlyTColor.java +296 -0
- data/src/toxi/color/TColor.java +1677 -0
- data/src/toxi/color/TColorAdapter.java +68 -0
- data/src/toxi/color/ToneMap.java +218 -0
- data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
- data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
- data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
- data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
- data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
- data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
- data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
- data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
- data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
- data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
- data/src/toxi/data/csv/CSVAdapter.java +74 -0
- data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
- data/src/toxi/data/csv/CSVListener.java +61 -0
- data/src/toxi/data/csv/CSVParser.java +202 -0
- data/src/toxi/data/feeds/AtomAuthor.java +49 -0
- data/src/toxi/data/feeds/AtomContent.java +50 -0
- data/src/toxi/data/feeds/AtomEntry.java +111 -0
- data/src/toxi/data/feeds/AtomFeed.java +129 -0
- data/src/toxi/data/feeds/AtomLink.java +62 -0
- data/src/toxi/data/feeds/RSSChannel.java +88 -0
- data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
- data/src/toxi/data/feeds/RSSFeed.java +99 -0
- data/src/toxi/data/feeds/RSSItem.java +104 -0
- data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
- data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
- data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
- data/src/toxi/geom/AABB.java +658 -0
- data/src/toxi/geom/Axis3D.java +116 -0
- data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
- data/src/toxi/geom/BernsteinPolynomial.java +94 -0
- data/src/toxi/geom/BezierCurve2D.java +159 -0
- data/src/toxi/geom/BezierCurve3D.java +148 -0
- data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
- data/src/toxi/geom/BoxIntersector.java +52 -0
- data/src/toxi/geom/Circle.java +230 -0
- data/src/toxi/geom/CircleIntersector.java +85 -0
- data/src/toxi/geom/Cone.java +150 -0
- data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
- data/src/toxi/geom/CoordinateExtractor.java +16 -0
- data/src/toxi/geom/Ellipse.java +250 -0
- data/src/toxi/geom/GMatrix.java +2599 -0
- data/src/toxi/geom/GVector.java +833 -0
- data/src/toxi/geom/GlobalGridTesselator.java +54 -0
- data/src/toxi/geom/GridTesselator.java +108 -0
- data/src/toxi/geom/Intersector2D.java +49 -0
- data/src/toxi/geom/Intersector3D.java +51 -0
- data/src/toxi/geom/IsectData2D.java +103 -0
- data/src/toxi/geom/IsectData3D.java +103 -0
- data/src/toxi/geom/Line2D.java +534 -0
- data/src/toxi/geom/Line3D.java +471 -0
- data/src/toxi/geom/LineStrip2D.java +430 -0
- data/src/toxi/geom/LineStrip3D.java +230 -0
- data/src/toxi/geom/LocalGridTesselator.java +57 -0
- data/src/toxi/geom/Matrix3d.java +3048 -0
- data/src/toxi/geom/Matrix4f.java +3446 -0
- data/src/toxi/geom/Matrix4x4.java +1076 -0
- data/src/toxi/geom/MatrixSizeException.java +58 -0
- data/src/toxi/geom/OctreeVisitor.java +44 -0
- data/src/toxi/geom/Origin3D.java +148 -0
- data/src/toxi/geom/Plane.java +293 -0
- data/src/toxi/geom/PlaneIntersector.java +57 -0
- data/src/toxi/geom/PointCloud3D.java +253 -0
- data/src/toxi/geom/PointOctree.java +502 -0
- data/src/toxi/geom/PointQuadtree.java +375 -0
- data/src/toxi/geom/Polygon2D.java +1038 -0
- data/src/toxi/geom/PolygonClipper2D.java +45 -0
- data/src/toxi/geom/PolygonTesselator.java +20 -0
- data/src/toxi/geom/QuadtreeVisitor.java +44 -0
- data/src/toxi/geom/Quaternion.java +641 -0
- data/src/toxi/geom/Ray2D.java +146 -0
- data/src/toxi/geom/Ray3D.java +150 -0
- data/src/toxi/geom/Ray3DIntersector.java +75 -0
- data/src/toxi/geom/ReadonlyVec2D.java +575 -0
- data/src/toxi/geom/ReadonlyVec3D.java +628 -0
- data/src/toxi/geom/ReadonlyVec4D.java +431 -0
- data/src/toxi/geom/Rect.java +720 -0
- data/src/toxi/geom/Reflector3D.java +58 -0
- data/src/toxi/geom/Shape2D.java +94 -0
- data/src/toxi/geom/Shape3D.java +42 -0
- data/src/toxi/geom/SingularMatrixException.java +57 -0
- data/src/toxi/geom/SpatialBins.java +182 -0
- data/src/toxi/geom/SpatialIndex.java +61 -0
- data/src/toxi/geom/Sphere.java +224 -0
- data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
- data/src/toxi/geom/Spline2D.java +349 -0
- data/src/toxi/geom/Spline3D.java +351 -0
- data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
- data/src/toxi/geom/Triangle2D.java +422 -0
- data/src/toxi/geom/Triangle3D.java +456 -0
- data/src/toxi/geom/TriangleIntersector.java +105 -0
- data/src/toxi/geom/Vec2D.java +1328 -0
- data/src/toxi/geom/Vec3D.java +1832 -0
- data/src/toxi/geom/Vec4D.java +985 -0
- data/src/toxi/geom/VecMathUtil.java +100 -0
- data/src/toxi/geom/XAxisCylinder.java +64 -0
- data/src/toxi/geom/YAxisCylinder.java +65 -0
- data/src/toxi/geom/ZAxisCylinder.java +64 -0
- data/src/toxi/geom/mesh/BezierPatch.java +200 -0
- data/src/toxi/geom/mesh/BoxSelector.java +62 -0
- data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
- data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
- data/src/toxi/geom/mesh/Face.java +176 -0
- data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
- data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
- data/src/toxi/geom/mesh/Mesh3D.java +224 -0
- data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
- data/src/toxi/geom/mesh/OBJWriter.java +194 -0
- data/src/toxi/geom/mesh/PLYWriter.java +167 -0
- data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
- data/src/toxi/geom/mesh/STLColorModel.java +54 -0
- data/src/toxi/geom/mesh/STLReader.java +185 -0
- data/src/toxi/geom/mesh/STLWriter.java +323 -0
- data/src/toxi/geom/mesh/SphereFunction.java +156 -0
- data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
- data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
- data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
- data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
- data/src/toxi/geom/mesh/Terrain.java +451 -0
- data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
- data/src/toxi/geom/mesh/Vertex.java +78 -0
- data/src/toxi/geom/mesh/VertexSelector.java +193 -0
- data/src/toxi/geom/mesh/WEFace.java +100 -0
- data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
- data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
- data/src/toxi/geom/mesh/WEVertex.java +134 -0
- data/src/toxi/geom/mesh/WingedEdge.java +115 -0
- data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
- data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
- data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
- data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
- data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
- data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
- data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
- data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
- data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
- data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
- data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
- data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
- data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
- data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
- data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
- data/src/toxi/geom/nurbs/ControlNet.java +148 -0
- data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
- data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
- data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
- data/src/toxi/geom/nurbs/KnotVector.java +333 -0
- data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
- data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
- data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
- data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
- data/src/toxi/image/util/Filter8bit.java +331 -0
- data/src/toxi/image/util/TiledFrameExporter.java +162 -0
- data/src/toxi/math/BezierInterpolation.java +102 -0
- data/src/toxi/math/CircularInterpolation.java +88 -0
- data/src/toxi/math/CosineInterpolation.java +51 -0
- data/src/toxi/math/DecimatedInterpolation.java +77 -0
- data/src/toxi/math/ExponentialInterpolation.java +68 -0
- data/src/toxi/math/InterpolateStrategy.java +60 -0
- data/src/toxi/math/Interpolation2D.java +93 -0
- data/src/toxi/math/LinearInterpolation.java +46 -0
- data/src/toxi/math/MathUtils.java +990 -0
- data/src/toxi/math/NonLinearScaleMap.java +101 -0
- data/src/toxi/math/ScaleMap.java +183 -0
- data/src/toxi/math/SigmoidInterpolation.java +78 -0
- data/src/toxi/math/SinCosLUT.java +141 -0
- data/src/toxi/math/ThresholdInterpolation.java +58 -0
- data/src/toxi/math/ZoomLensInterpolation.java +126 -0
- data/src/toxi/math/conversion/UnitTranslator.java +161 -0
- data/src/toxi/math/noise/PerlinNoise.java +281 -0
- data/src/toxi/math/noise/SimplexNoise.java +542 -0
- data/src/toxi/math/waves/AMFMSineWave.java +143 -0
- data/src/toxi/math/waves/AbstractWave.java +248 -0
- data/src/toxi/math/waves/ConstantWave.java +48 -0
- data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
- data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
- data/src/toxi/math/waves/FMSineWave.java +142 -0
- data/src/toxi/math/waves/FMSquareWave.java +143 -0
- data/src/toxi/math/waves/FMTriangleWave.java +126 -0
- data/src/toxi/math/waves/SineWave.java +81 -0
- data/src/toxi/math/waves/Wave2D.java +68 -0
- data/src/toxi/math/waves/WaveState.java +69 -0
- data/src/toxi/music/scale/AbstractScale.java +117 -0
- data/src/toxi/music/scale/GenericScale.java +66 -0
- data/src/toxi/music/scale/MajorScale.java +41 -0
- data/src/toxi/newmesh/AttributedEdge.java +106 -0
- data/src/toxi/newmesh/AttributedFace.java +63 -0
- data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
- data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
- data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
- data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
- data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
- data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
- data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
- data/src/toxi/newmesh/SpatialIndex.java +78 -0
- data/src/toxi/physics2d/ParticlePath2D.java +100 -0
- data/src/toxi/physics2d/ParticleString2D.java +184 -0
- data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
- data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
- data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
- data/src/toxi/physics2d/VerletParticle2D.java +457 -0
- data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
- data/src/toxi/physics2d/VerletSpring2D.java +181 -0
- data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
- data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
- data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
- data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
- data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
- data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
- data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
- data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
- data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
- data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
- data/src/toxi/physics3d/ParticlePath3D.java +100 -0
- data/src/toxi/physics3d/ParticleString3D.java +184 -0
- data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
- data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
- data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
- data/src/toxi/physics3d/VerletParticle3D.java +385 -0
- data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
- data/src/toxi/physics3d/VerletSpring3D.java +180 -0
- data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
- data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
- data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
- data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
- data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
- data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
- data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
- data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
- data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
- data/src/toxi/processing/ArrowModifier.java +116 -0
- data/src/toxi/processing/DashedLineModifier.java +48 -0
- data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
- data/src/toxi/processing/Line2DRenderModifier.java +18 -0
- data/src/toxi/processing/MeshToVBO.java +127 -0
- data/src/toxi/processing/NormalMapper.java +18 -0
- data/src/toxi/processing/POVInterface.java +121 -0
- data/src/toxi/processing/POVMesh.java +219 -0
- data/src/toxi/processing/POVWriter.java +460 -0
- data/src/toxi/processing/RCOpaque.java +77 -0
- data/src/toxi/processing/RCTransp.java +78 -0
- data/src/toxi/processing/TextureBuilder.java +232 -0
- data/src/toxi/processing/Textures.java +110 -0
- data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
- data/src/toxi/processing/Tracing.java +25 -0
- data/src/toxi/processing/XYZNormalMapper.java +30 -0
- data/src/toxi/sim/automata/CAMatrix.java +297 -0
- data/src/toxi/sim/automata/CARule.java +76 -0
- data/src/toxi/sim/automata/CARule2D.java +354 -0
- data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
- data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
- data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
- data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
- data/src/toxi/sim/dla/DLA.java +497 -0
- data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
- data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
- data/src/toxi/sim/dla/DLAEventListener.java +57 -0
- data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
- data/src/toxi/sim/dla/DLAParticle.java +102 -0
- data/src/toxi/sim/dla/DLASegment.java +88 -0
- data/src/toxi/sim/dla/PipelineOrder.java +50 -0
- data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
- data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
- data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
- data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
- data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
- data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
- data/src/toxi/sim/grayscott/GrayScott.java +469 -0
- data/src/toxi/util/DateUtils.java +141 -0
- data/src/toxi/util/FileSequenceDescriptor.java +181 -0
- data/src/toxi/util/FileUtils.java +467 -0
- data/src/toxi/util/datatypes/ArraySet.java +128 -0
- data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
- data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
- data/src/toxi/util/datatypes/DoubleRange.java +251 -0
- data/src/toxi/util/datatypes/FloatRange.java +251 -0
- data/src/toxi/util/datatypes/GenericSet.java +215 -0
- data/src/toxi/util/datatypes/IntegerRange.java +247 -0
- data/src/toxi/util/datatypes/IntegerSet.java +149 -0
- data/src/toxi/util/datatypes/ItemIndex.java +72 -0
- data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
- data/src/toxi/util/datatypes/TypedProperties.java +291 -0
- data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
- data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
- data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
- data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
- data/src/toxi/util/events/EventDispatcher.java +86 -0
- data/src/toxi/volume/AdditiveBrush.java +19 -0
- data/src/toxi/volume/ArrayIsoSurface.java +297 -0
- data/src/toxi/volume/BoxBrush.java +100 -0
- data/src/toxi/volume/BrushMode.java +16 -0
- data/src/toxi/volume/HashIsoSurface.java +354 -0
- data/src/toxi/volume/IsoSurface.java +59 -0
- data/src/toxi/volume/MarchingCubesIndex.java +312 -0
- data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
- data/src/toxi/volume/MeshVoxelizer.java +216 -0
- data/src/toxi/volume/MultiplyBrush.java +20 -0
- data/src/toxi/volume/PeakBrush.java +21 -0
- data/src/toxi/volume/ReplaceBrush.java +19 -0
- data/src/toxi/volume/RoundBrush.java +113 -0
- data/src/toxi/volume/VolumetricBrush.java +160 -0
- data/src/toxi/volume/VolumetricHashMap.java +179 -0
- data/src/toxi/volume/VolumetricSpace.java +195 -0
- data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
- data/toxiclibs.gemspec +28 -0
- metadata +442 -31
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'toxiclibs'
|
|
2
|
+
|
|
3
|
+
#######
|
|
4
|
+
# After Paul Bourke see http://paulbourke.net/geometry/sphericalh/
|
|
5
|
+
# radius =
|
|
6
|
+
# sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
|
|
7
|
+
# where phi = (0..PI) and theta = (0..TWO_PI)
|
|
8
|
+
# As implemented by Karsten Schmidt aka toxi/postspectacular
|
|
9
|
+
#######
|
|
10
|
+
|
|
11
|
+
attr_reader :gfx, :mesh, :spherical, :param
|
|
12
|
+
|
|
13
|
+
def setup
|
|
14
|
+
sketch_title 'Spherical Harmonics Mesh Builder'
|
|
15
|
+
ArcBall.init(self)
|
|
16
|
+
@param = [8, 4, 1, 5, 1, 4, 0, 0] # default function parameters (m0..m7)
|
|
17
|
+
@mesh = spherical_mesh(param)
|
|
18
|
+
@gfx = Gfx::MeshToVBO.new(self) # Mesh to vertex buffer object converter
|
|
19
|
+
no_stroke
|
|
20
|
+
@spherical = gfx.mesh_to_shape(mesh, true) # white
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def draw
|
|
24
|
+
background(0)
|
|
25
|
+
lights
|
|
26
|
+
shininess(16)
|
|
27
|
+
directional_light(255, 255, 255, 0, -1, 1)
|
|
28
|
+
specular(255)
|
|
29
|
+
shape(spherical)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def key_pressed
|
|
33
|
+
return unless (key == 'r')
|
|
34
|
+
@mesh = spherical_mesh(random_parameters)
|
|
35
|
+
no_stroke
|
|
36
|
+
@spherical = gfx.mesh_to_colored_shape(mesh) # harmonic colors
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def random_parameters
|
|
40
|
+
(0..8).map { rand(0..8) }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def spherical_mesh(param)
|
|
44
|
+
b = SurfaceMeshBuilder.new(SphericalHarmonics.new(param.to_java(:float)))
|
|
45
|
+
b.create_mesh(nil, 80, 60)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def settings
|
|
49
|
+
size(1024, 576, P3D)
|
|
50
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'toxiclibs' # gem
|
|
2
|
+
|
|
3
|
+
# click mouse on sketch several times and you will
|
|
4
|
+
# see the Toxi::Rect grow to include new data points
|
|
5
|
+
attr_reader :points, :bounds, :gfx
|
|
6
|
+
|
|
7
|
+
def settings
|
|
8
|
+
size(400,400)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def setup
|
|
12
|
+
sketch_title 'Test Rect'
|
|
13
|
+
@points = []
|
|
14
|
+
@bounds = Toxi::Rect.new(200, 200, 0, 0)
|
|
15
|
+
@gfx = Gfx::ToxiclibsSupport.new(self)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def draw
|
|
19
|
+
background(255)
|
|
20
|
+
no_fill
|
|
21
|
+
stroke(0)
|
|
22
|
+
gfx.rect(bounds)
|
|
23
|
+
fill(255, 0, 0)
|
|
24
|
+
no_stroke
|
|
25
|
+
points.each { |p| gfx.circle(p, 5) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def mouse_pressed
|
|
29
|
+
p = TVec2D.new(mouse_x, mouse_y)
|
|
30
|
+
points << p
|
|
31
|
+
bounds.grow_to_contain_point(p)
|
|
32
|
+
end
|
data/lib/toxiclibs.jar
CHANGED
|
Binary file
|
data/lib/toxiclibs.rb
CHANGED
|
@@ -1,47 +1,97 @@
|
|
|
1
|
-
if RUBY_PLATFORM == 'java'
|
|
1
|
+
if RUBY_PLATFORM == 'java'
|
|
2
2
|
require 'toxiclibs.jar'
|
|
3
3
|
|
|
4
|
+
def import_class_list(list, string)
|
|
5
|
+
list.each { |klass| java_import format(string, klass) }
|
|
6
|
+
end
|
|
7
|
+
|
|
4
8
|
module Simulation
|
|
5
9
|
include_package 'toxi.sim.automata'
|
|
6
10
|
include_package 'toxi.sim.dla'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
erosion = %w(ErosionFunction TalusAngleErosion ThermalErosion)
|
|
12
|
+
erosion_format = 'toxi.sim.erosion.%s'
|
|
13
|
+
import_class_list(erosion, erosion_format)
|
|
14
|
+
fluids = %w(FluidSolver2D FluidSolver3D)
|
|
15
|
+
fluids_format = 'toxi.sim.fluids.%s'
|
|
16
|
+
import_class_list(fluids, fluids_format)
|
|
17
|
+
java_import 'toxi.sim.grayscott.GrayScott'
|
|
10
18
|
end
|
|
11
|
-
|
|
19
|
+
|
|
12
20
|
module Physics
|
|
13
|
-
|
|
21
|
+
behavior2d = %w(AttractionBehavior2D ConstantForceBehavior2D GravityBehavior2D ParticleBehavior2D)
|
|
22
|
+
behavior2d_format = 'toxi.physics2d.behaviors.%s'
|
|
23
|
+
import_class_list(behavior2d, behavior2d_format)
|
|
14
24
|
include_package 'toxi.physics2d.constraints'
|
|
15
25
|
include_package 'toxi.physics2d'
|
|
16
|
-
|
|
26
|
+
behavior3d = %w(AttractionBehavior3D ConstantForceBehavior3D GravityBehavior3D ParticleBehavior3D)
|
|
27
|
+
behavior3d_format = 'toxi.physics3d.behaviors.%s'
|
|
28
|
+
import_class_list(behavior3d, behavior3d_format)
|
|
17
29
|
include_package 'toxi.physics3d.constraints'
|
|
18
30
|
include_package 'toxi.physics3d'
|
|
19
31
|
end
|
|
20
|
-
|
|
32
|
+
|
|
21
33
|
module Volume
|
|
22
34
|
include_package 'toxi.volume'
|
|
23
35
|
end
|
|
24
|
-
|
|
36
|
+
|
|
25
37
|
module Toxi
|
|
26
38
|
include_package 'toxi.color'
|
|
27
39
|
include_package 'toxi.color.theory'
|
|
28
40
|
include_package 'toxi.util.datatypes'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
java_import 'toxi.util.events.EventDispatcher'
|
|
42
|
+
utils = %w{DateUtils FileSequenceDescriptor FileUtils}
|
|
43
|
+
utils_format = 'toxi.util.%s'
|
|
44
|
+
import_class_list(utils, utils_format)
|
|
45
|
+
subdiv = %w(CentroidSubdiv DisplacementSubdivision DualDisplacementSubdivision
|
|
46
|
+
DualSubdivision EdgeLengthComparator FaceCountComparator
|
|
47
|
+
MidpointDisplacementSubdivision MidpointSubdiv MidpointSubdivision
|
|
48
|
+
NewSubdivStrategy NormalDisplacementSubdivision SubdivisionStrategy
|
|
49
|
+
TriSubdivision)
|
|
50
|
+
subdiv_format = 'toxi.geom.mesh.subdiv.%s'
|
|
51
|
+
import_class_list(subdiv, subdiv_format)
|
|
52
|
+
nurbs = %w(BasicNurbsCurve BasicNurbsSurface ControlNet CurveCreator CurveUtils
|
|
53
|
+
InterpolationException KnotVector NurbsCreator NurbsCurve NurbsMeshCreator
|
|
54
|
+
NurbsSurface)
|
|
55
|
+
nurbs_format = 'toxi.geom.nurbs.%s'
|
|
56
|
+
import_class_list(nurbs, nurbs_format)
|
|
57
|
+
include_package 'toxi.math'
|
|
58
|
+
geom = %w(AABB Axis3D AxisAlignedCylinder BernsteinPolynomial BezierCurve2D
|
|
59
|
+
BezierCurve3D BooleanShapeBuilder BoxIntersector Circle CircleIntersector
|
|
60
|
+
Cone ConvexPolygonClipper CoordinateExtractor Ellipse GMatrix GVector
|
|
61
|
+
GlobalGridTesselator GridTesselator Intersector2D Intersector3D IsectData2D
|
|
62
|
+
IsectData3D Line2D Line3D LineStrip2D LineStrip3D LocalGridTesselator Matrix3d
|
|
63
|
+
Matrix4f Matrix4x4 MatrixSizeException OctreeVisitor Origin3D Plane
|
|
64
|
+
PlaneIntersector PointCloud3D PointOctree PointQuadtree Polygon2D
|
|
65
|
+
PolygonClipper2D PolygonTesselator QuadtreeVisitor Quaternion Ray2D Ray3D
|
|
66
|
+
Ray3DIntersector ReadonlyVec2D ReadonlyVec3D ReadonlyVec4D Rect Reflector3D
|
|
67
|
+
Shape2D Shape3D SingularMatrixException SpatialBins SpatialIndex Sphere
|
|
68
|
+
SphereIntersectorReflector Spline2D Spline3D SutherlandHodgemanClipper
|
|
69
|
+
Triangle2D Triangle3D TriangleIntersector Vec2D Vec3D Vec4D VecMathUtil
|
|
70
|
+
XAxisCylinder YAxisCylinder ZAxisCylinder)
|
|
71
|
+
geom_format = 'toxi.geom.%s'
|
|
72
|
+
import_class_list(geom, geom_format)
|
|
35
73
|
end
|
|
36
|
-
|
|
74
|
+
|
|
37
75
|
module Gfx
|
|
38
76
|
include_package 'toxi.processing'
|
|
39
77
|
end
|
|
78
|
+
|
|
40
79
|
# to disambiguate our own Vec2D and Vec3D we give new name to toxi versions
|
|
41
|
-
TVec2D =
|
|
42
|
-
TVec3D =
|
|
43
|
-
AABB =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
80
|
+
TVec2D = Toxi::Vec2D
|
|
81
|
+
TVec3D = Toxi::Vec3D
|
|
82
|
+
AABB = Toxi::AABB
|
|
83
|
+
volume = %w(AdditiveBrush ArrayIsoSurface BoxBrush BrushMode HashIsoSurface
|
|
84
|
+
IsoSurface MarchingCubesIndex MeshLatticeBuilder MeshVoxelizer
|
|
85
|
+
MultiplyBrush PeakBrush ReplaceBrush RoundBrush VolumetricBrush
|
|
86
|
+
VolumetricHashMap VolumetricSpace VolumetricSpaceArray)
|
|
87
|
+
volume_format = 'toxi.volume.%s'
|
|
88
|
+
import_class_list(volume, volume_format)
|
|
89
|
+
mesh = %w(BezierPatch BoxSelector DefaultSTLColorModel DefaultSelector Face
|
|
90
|
+
LaplacianSmooth MaterialiseSTLColorModel Mesh3D MeshIntersector OBJWriter
|
|
91
|
+
PLYWriter PlaneSelector STLColorModel STLReader STLWriter SphereFunction
|
|
92
|
+
SphericalHarmonics SuperEllipsoid SurfaceFunction SurfaceMeshBuilder
|
|
93
|
+
Terrain TriangleMesh Vertex VertexSelector WEFace WEMeshFilterStrategy
|
|
94
|
+
WETriangleMesh WEVertex WingedEdge)
|
|
95
|
+
mesh_format = 'toxi.geom.mesh.%s'
|
|
96
|
+
import_class_list(mesh, mesh_format)
|
|
47
97
|
end
|
data/lib/toxiclibs/version.rb
CHANGED
data/pom.rb
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
project 'toxiclibs' do
|
|
2
|
+
|
|
3
|
+
model_version '4.0.0'
|
|
4
|
+
id 'ruby-processing:toxiclibs:0.8.0'
|
|
5
|
+
packaging 'jar'
|
|
6
|
+
|
|
7
|
+
description 'toxiclibs-library for JRubyArt'
|
|
8
|
+
|
|
9
|
+
organization 'ruby-processing', 'https://ruby-processing.github.io'
|
|
10
|
+
|
|
11
|
+
developer 'monkstone' do
|
|
12
|
+
name 'Martin Prout'
|
|
13
|
+
email 'mamba2928@yahoo.co.uk'
|
|
14
|
+
roles 'developer'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
license 'LGPL 2', 'http://www.gnu.org/licenses/lgpl-2.1-standalone.html'
|
|
18
|
+
|
|
19
|
+
issue_management 'https://github.com/ruby-processing/toxiclibs/issues', 'Github'
|
|
20
|
+
|
|
21
|
+
source_control( :url => 'https://github.com/ruby-processing/toxiclibs',
|
|
22
|
+
:connection => 'scm:git:git://github.com/ruby-processing/toxiclibs.git',
|
|
23
|
+
:developer_connection => 'scm:git:git@github.com:ruby-processing/toxiclibs.git' )
|
|
24
|
+
|
|
25
|
+
properties( 'maven.compiler.source' => '1.8',
|
|
26
|
+
'project.build.sourceEncoding' => 'UTF-8',
|
|
27
|
+
'maven.compiler.target' => '1.8',
|
|
28
|
+
'polyglot.dump.pom' => 'pom.xml'
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
jar 'org.jogamp.joal:joal-main:2.3.1'
|
|
32
|
+
jar 'args4j:args4j:2.0.31'
|
|
33
|
+
jar 'org.processing:core:3.1'
|
|
34
|
+
|
|
35
|
+
plugin( :compiler, '3.3',
|
|
36
|
+
'source' => '1.8',
|
|
37
|
+
'target' => '1.8' )
|
|
38
|
+
plugin( :jar, '2.6',
|
|
39
|
+
'archive' => {
|
|
40
|
+
'manifestFile' => 'MANIFEST.MF'
|
|
41
|
+
} )
|
|
42
|
+
plugin :resources, '2.6'
|
|
43
|
+
plugin :dependency, '2.10' do
|
|
44
|
+
execute_goals( :id => 'default-cli',
|
|
45
|
+
'artifactItems' => [ { 'groupId' => 'args4j',
|
|
46
|
+
'artifactId' => 'args4j',
|
|
47
|
+
'version' => '2.0.31',
|
|
48
|
+
'type' => 'jar',
|
|
49
|
+
'outputDirectory' => 'lib' },
|
|
50
|
+
{ 'groupId' => 'org.jogamp.joal',
|
|
51
|
+
'artifactId' => 'joal',
|
|
52
|
+
'version' => '2.3.1',
|
|
53
|
+
'type' => 'jar',
|
|
54
|
+
'outputDirectory' => 'lib' } ] )
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
build do
|
|
59
|
+
default_goal 'package'
|
|
60
|
+
source_directory 'src'
|
|
61
|
+
final_name 'toxiclibs'
|
|
62
|
+
end
|
|
63
|
+
end
|
data/pom.xml
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
DO NOT MODIFIY - GENERATED CODE
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-->
|
|
9
|
+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
|
10
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
11
|
+
<modelVersion>4.0.0</modelVersion>
|
|
12
|
+
<groupId>ruby-processing</groupId>
|
|
13
|
+
<artifactId>toxiclibs</artifactId>
|
|
14
|
+
<version>0.8.0</version>
|
|
15
|
+
<name>toxiclibs</name>
|
|
16
|
+
<description>toxiclibs-library for JRubyArt</description>
|
|
17
|
+
<organization>
|
|
18
|
+
<name>ruby-processing</name>
|
|
19
|
+
<url>https://ruby-processing.github.io</url>
|
|
20
|
+
</organization>
|
|
21
|
+
<licenses>
|
|
22
|
+
<license>
|
|
23
|
+
<name>LGPL 2</name>
|
|
24
|
+
<url>http://www.gnu.org/licenses/lgpl-2.1-standalone.html</url>
|
|
25
|
+
</license>
|
|
26
|
+
</licenses>
|
|
27
|
+
<developers>
|
|
28
|
+
<developer>
|
|
29
|
+
<id>monkstone</id>
|
|
30
|
+
<name>Martin Prout</name>
|
|
31
|
+
<email>mamba2928@yahoo.co.uk</email>
|
|
32
|
+
<roles>
|
|
33
|
+
<role>developer</role>
|
|
34
|
+
</roles>
|
|
35
|
+
</developer>
|
|
36
|
+
</developers>
|
|
37
|
+
<scm>
|
|
38
|
+
<connection>scm:git:git://github.com/ruby-processing/toxiclibs.git</connection>
|
|
39
|
+
<developerConnection>scm:git:git@github.com:ruby-processing/toxiclibs.git</developerConnection>
|
|
40
|
+
<url>https://github.com/ruby-processing/toxiclibs</url>
|
|
41
|
+
</scm>
|
|
42
|
+
<issueManagement>
|
|
43
|
+
<system>Github</system>
|
|
44
|
+
<url>https://github.com/ruby-processing/toxiclibs/issues</url>
|
|
45
|
+
</issueManagement>
|
|
46
|
+
<properties>
|
|
47
|
+
<polyglot.dump.pom>pom.xml</polyglot.dump.pom>
|
|
48
|
+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
49
|
+
<maven.compiler.source>1.8</maven.compiler.source>
|
|
50
|
+
<maven.compiler.target>1.8</maven.compiler.target>
|
|
51
|
+
</properties>
|
|
52
|
+
<dependencies>
|
|
53
|
+
<dependency>
|
|
54
|
+
<groupId>org.jogamp.joal</groupId>
|
|
55
|
+
<artifactId>joal-main</artifactId>
|
|
56
|
+
<version>2.3.1</version>
|
|
57
|
+
</dependency>
|
|
58
|
+
<dependency>
|
|
59
|
+
<groupId>args4j</groupId>
|
|
60
|
+
<artifactId>args4j</artifactId>
|
|
61
|
+
<version>2.0.31</version>
|
|
62
|
+
</dependency>
|
|
63
|
+
<dependency>
|
|
64
|
+
<groupId>org.processing</groupId>
|
|
65
|
+
<artifactId>core</artifactId>
|
|
66
|
+
<version>3.1</version>
|
|
67
|
+
</dependency>
|
|
68
|
+
</dependencies>
|
|
69
|
+
<build>
|
|
70
|
+
<sourceDirectory>src</sourceDirectory>
|
|
71
|
+
<defaultGoal>package</defaultGoal>
|
|
72
|
+
<finalName>toxiclibs</finalName>
|
|
73
|
+
<plugins>
|
|
74
|
+
<plugin>
|
|
75
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
|
76
|
+
<version>3.3</version>
|
|
77
|
+
<configuration>
|
|
78
|
+
<source>1.8</source>
|
|
79
|
+
<target>1.8</target>
|
|
80
|
+
</configuration>
|
|
81
|
+
</plugin>
|
|
82
|
+
<plugin>
|
|
83
|
+
<artifactId>maven-jar-plugin</artifactId>
|
|
84
|
+
<version>2.6</version>
|
|
85
|
+
<configuration>
|
|
86
|
+
<archive>
|
|
87
|
+
<manifestFile>MANIFEST.MF</manifestFile>
|
|
88
|
+
</archive>
|
|
89
|
+
</configuration>
|
|
90
|
+
</plugin>
|
|
91
|
+
<plugin>
|
|
92
|
+
<artifactId>maven-resources-plugin</artifactId>
|
|
93
|
+
<version>2.6</version>
|
|
94
|
+
</plugin>
|
|
95
|
+
<plugin>
|
|
96
|
+
<artifactId>maven-dependency-plugin</artifactId>
|
|
97
|
+
<version>2.10</version>
|
|
98
|
+
<executions>
|
|
99
|
+
<execution>
|
|
100
|
+
<id>default-cli</id>
|
|
101
|
+
<configuration>
|
|
102
|
+
<artifactItems>
|
|
103
|
+
<artifactItem>
|
|
104
|
+
<groupId>args4j</groupId>
|
|
105
|
+
<artifactId>args4j</artifactId>
|
|
106
|
+
<version>2.0.31</version>
|
|
107
|
+
<type>jar</type>
|
|
108
|
+
<outputDirectory>lib</outputDirectory>
|
|
109
|
+
</artifactItem>
|
|
110
|
+
<artifactItem>
|
|
111
|
+
<groupId>org.jogamp.joal</groupId>
|
|
112
|
+
<artifactId>joal</artifactId>
|
|
113
|
+
<version>2.3.1</version>
|
|
114
|
+
<type>jar</type>
|
|
115
|
+
<outputDirectory>lib</outputDirectory>
|
|
116
|
+
</artifactItem>
|
|
117
|
+
</artifactItems>
|
|
118
|
+
</configuration>
|
|
119
|
+
</execution>
|
|
120
|
+
</executions>
|
|
121
|
+
</plugin>
|
|
122
|
+
</plugins>
|
|
123
|
+
</build>
|
|
124
|
+
</project>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
package com.toxi.net;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @author tux
|
|
6
|
+
*/
|
|
7
|
+
public interface ClientListener {
|
|
8
|
+
/**
|
|
9
|
+
* Callback to trigger an update of the server managed process. This might
|
|
10
|
+
* be called several times in a row if the client has fallen behind in time.
|
|
11
|
+
* There should be NO rendering related tasks being called from this
|
|
12
|
+
* callback.
|
|
13
|
+
*/
|
|
14
|
+
public void triggerUpdate();
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Callback to trigger the rendering of a new frame. This method will ALWAYS
|
|
18
|
+
* be called after {{@link #triggerUpdate()} and should be purely focused on
|
|
19
|
+
* drawing/rendering specific tasks, but no CPU intensive model updates.
|
|
20
|
+
*/
|
|
21
|
+
public void triggerFrame();
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Callback to confirm client has successfully connected
|
|
25
|
+
*/
|
|
26
|
+
public void notifyConnected();
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Callback to notify client has disconnected from the server.
|
|
30
|
+
*/
|
|
31
|
+
public void notifyDisconnected();
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Callback to give the client a chance to react to the encountered
|
|
35
|
+
* exception.
|
|
36
|
+
*
|
|
37
|
+
* @param e
|
|
38
|
+
* the exception which caused the callback
|
|
39
|
+
*/
|
|
40
|
+
public void handleError(Exception e);
|
|
41
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package com.toxi.net;
|
|
2
|
+
|
|
3
|
+
import java.net.DatagramPacket;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @author tux
|
|
8
|
+
*/
|
|
9
|
+
public interface ServerListener {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Notifies listener immediately after the server socket has been created.
|
|
13
|
+
*/
|
|
14
|
+
public void serverStarted();
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Notifies the listener server is shutting down.
|
|
18
|
+
*/
|
|
19
|
+
public void serverShutdown();
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Gives listener a chance to react to any fatal server errors.
|
|
23
|
+
*
|
|
24
|
+
* @param e
|
|
25
|
+
*/
|
|
26
|
+
public void serverError(Exception e);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Notifies the listener of a new server state. The state info itself is
|
|
30
|
+
* attached.
|
|
31
|
+
*
|
|
32
|
+
* @param s
|
|
33
|
+
*/
|
|
34
|
+
public void serverStateChanged(ServerState s);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Notifies listener of a new client connection. Details are attached.
|
|
38
|
+
*
|
|
39
|
+
* @param conn
|
|
40
|
+
*/
|
|
41
|
+
public void clientConnected(UDPConnection conn);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Notifies listener a client has disconnected. Connection details are
|
|
45
|
+
* attached.
|
|
46
|
+
*
|
|
47
|
+
* @param conn
|
|
48
|
+
*/
|
|
49
|
+
public void clientDisconnected(UDPConnection conn);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Notifies and forwards received client data to the listener for further
|
|
53
|
+
* analysis.
|
|
54
|
+
*
|
|
55
|
+
* @param conn
|
|
56
|
+
* client connection details
|
|
57
|
+
* @param receivePacket
|
|
58
|
+
* data sent by the client
|
|
59
|
+
*/
|
|
60
|
+
public void clientUpdated(UDPConnection conn, DatagramPacket receivePacket);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Gives the listener a chance to add extra data to the payload packet
|
|
64
|
+
* distributed to each client.
|
|
65
|
+
*
|
|
66
|
+
* @return additional data, or null if none required
|
|
67
|
+
*/
|
|
68
|
+
public byte[] getSyncPayload();
|
|
69
|
+
|
|
70
|
+
}
|