toxiclibs 0.4.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
}
|