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.
Files changed (404) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -0
  3. data/.mvn/extensions.xml +8 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -0
  5. data/.travis.yml +23 -0
  6. data/CHANGELOG.md +7 -0
  7. data/COPYING.md +14 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE +675 -0
  10. data/README.md +9 -7
  11. data/Rakefile +25 -81
  12. data/examples/README.md +5 -0
  13. data/examples/attract_repel/attract_repel.rb +30 -0
  14. data/examples/attract_repel/attractor.rb +23 -0
  15. data/examples/attract_repel/particle.rb +27 -0
  16. data/examples/data/ReplicaBold.ttf +0 -0
  17. data/examples/data/ti_yong.png +0 -0
  18. data/examples/force_directed/cluster.rb +76 -0
  19. data/examples/force_directed/force_directed_graph.rb +92 -0
  20. data/examples/force_directed/node.rb +26 -0
  21. data/examples/gray_scott_image.rb +74 -0
  22. data/examples/gray_scott_tone_map.rb +77 -0
  23. data/examples/implicit.rb +139 -0
  24. data/examples/inflate_mesh.rb +89 -0
  25. data/examples/model_align.rb +43 -0
  26. data/examples/physics_type.rb +77 -0
  27. data/examples/povmesh/data/mask.jpg +0 -0
  28. data/examples/povmesh/ftest.rb +59 -0
  29. data/examples/povmesh/mesh_align.rb +47 -0
  30. data/examples/povmesh/tentacle.rb +71 -0
  31. data/examples/simple_cluster/cluster.rb +47 -0
  32. data/examples/simple_cluster/node.rb +27 -0
  33. data/examples/simple_cluster/simple_cluster.rb +60 -0
  34. data/examples/soft_body/blanket.rb +45 -0
  35. data/examples/soft_body/connection.rb +16 -0
  36. data/examples/soft_body/particle.rb +22 -0
  37. data/examples/soft_body/soft_body_square_adapted.rb +55 -0
  38. data/examples/spherical_harmonics_mesh.rb +50 -0
  39. data/examples/test_rect.rb +32 -0
  40. data/lib/toxiclibs.jar +0 -0
  41. data/lib/toxiclibs.rb +72 -22
  42. data/lib/toxiclibs/version.rb +1 -1
  43. data/pom.rb +63 -0
  44. data/pom.xml +124 -0
  45. data/src/com/toxi/net/ClientListener.java +41 -0
  46. data/src/com/toxi/net/ServerListener.java +70 -0
  47. data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
  48. data/src/com/toxi/net/ServerState.java +18 -0
  49. data/src/com/toxi/net/UDPConnection.java +66 -0
  50. data/src/com/toxi/net/UDPSyncClient.java +81 -0
  51. data/src/com/toxi/net/UDPSyncServer.java +450 -0
  52. data/src/com/toxi/nio/UDPClient.java +121 -0
  53. data/src/com/toxi/nio/UDPClientState.java +32 -0
  54. data/src/com/toxi/nio/UDPServer.java +129 -0
  55. data/src/toxi/audio/AudioBuffer.java +229 -0
  56. data/src/toxi/audio/AudioSource.java +288 -0
  57. data/src/toxi/audio/DecompressInputStream.java +159 -0
  58. data/src/toxi/audio/IIRFilter.java +197 -0
  59. data/src/toxi/audio/JOALUtil.java +388 -0
  60. data/src/toxi/audio/MultiTimbralManager.java +162 -0
  61. data/src/toxi/audio/SoundListener.java +154 -0
  62. data/src/toxi/audio/SynthUtil.java +109 -0
  63. data/src/toxi/color/AccessCriteria.java +114 -0
  64. data/src/toxi/color/AlphaAccessor.java +67 -0
  65. data/src/toxi/color/CMYKAccessor.java +122 -0
  66. data/src/toxi/color/CMYKDistanceProxy.java +40 -0
  67. data/src/toxi/color/ColorGradient.java +260 -0
  68. data/src/toxi/color/ColorList.java +699 -0
  69. data/src/toxi/color/ColorRange.java +671 -0
  70. data/src/toxi/color/ColorTheme.java +163 -0
  71. data/src/toxi/color/DistanceProxy.java +44 -0
  72. data/src/toxi/color/HSVAccessor.java +113 -0
  73. data/src/toxi/color/HSVDistanceProxy.java +40 -0
  74. data/src/toxi/color/HistEntry.java +85 -0
  75. data/src/toxi/color/Histogram.java +185 -0
  76. data/src/toxi/color/Hue.java +249 -0
  77. data/src/toxi/color/LuminanceAccessor.java +78 -0
  78. data/src/toxi/color/NamedColor.java +935 -0
  79. data/src/toxi/color/ProximityComparator.java +70 -0
  80. data/src/toxi/color/RGBAccessor.java +113 -0
  81. data/src/toxi/color/RGBDistanceProxy.java +41 -0
  82. data/src/toxi/color/ReadonlyTColor.java +296 -0
  83. data/src/toxi/color/TColor.java +1677 -0
  84. data/src/toxi/color/TColorAdapter.java +68 -0
  85. data/src/toxi/color/ToneMap.java +218 -0
  86. data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
  87. data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
  88. data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
  89. data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
  90. data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
  91. data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
  92. data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
  93. data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
  94. data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
  95. data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
  96. data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
  97. data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
  98. data/src/toxi/data/csv/CSVAdapter.java +74 -0
  99. data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
  100. data/src/toxi/data/csv/CSVListener.java +61 -0
  101. data/src/toxi/data/csv/CSVParser.java +202 -0
  102. data/src/toxi/data/feeds/AtomAuthor.java +49 -0
  103. data/src/toxi/data/feeds/AtomContent.java +50 -0
  104. data/src/toxi/data/feeds/AtomEntry.java +111 -0
  105. data/src/toxi/data/feeds/AtomFeed.java +129 -0
  106. data/src/toxi/data/feeds/AtomLink.java +62 -0
  107. data/src/toxi/data/feeds/RSSChannel.java +88 -0
  108. data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
  109. data/src/toxi/data/feeds/RSSFeed.java +99 -0
  110. data/src/toxi/data/feeds/RSSItem.java +104 -0
  111. data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
  112. data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
  113. data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
  114. data/src/toxi/geom/AABB.java +658 -0
  115. data/src/toxi/geom/Axis3D.java +116 -0
  116. data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
  117. data/src/toxi/geom/BernsteinPolynomial.java +94 -0
  118. data/src/toxi/geom/BezierCurve2D.java +159 -0
  119. data/src/toxi/geom/BezierCurve3D.java +148 -0
  120. data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
  121. data/src/toxi/geom/BoxIntersector.java +52 -0
  122. data/src/toxi/geom/Circle.java +230 -0
  123. data/src/toxi/geom/CircleIntersector.java +85 -0
  124. data/src/toxi/geom/Cone.java +150 -0
  125. data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
  126. data/src/toxi/geom/CoordinateExtractor.java +16 -0
  127. data/src/toxi/geom/Ellipse.java +250 -0
  128. data/src/toxi/geom/GMatrix.java +2599 -0
  129. data/src/toxi/geom/GVector.java +833 -0
  130. data/src/toxi/geom/GlobalGridTesselator.java +54 -0
  131. data/src/toxi/geom/GridTesselator.java +108 -0
  132. data/src/toxi/geom/Intersector2D.java +49 -0
  133. data/src/toxi/geom/Intersector3D.java +51 -0
  134. data/src/toxi/geom/IsectData2D.java +103 -0
  135. data/src/toxi/geom/IsectData3D.java +103 -0
  136. data/src/toxi/geom/Line2D.java +534 -0
  137. data/src/toxi/geom/Line3D.java +471 -0
  138. data/src/toxi/geom/LineStrip2D.java +430 -0
  139. data/src/toxi/geom/LineStrip3D.java +230 -0
  140. data/src/toxi/geom/LocalGridTesselator.java +57 -0
  141. data/src/toxi/geom/Matrix3d.java +3048 -0
  142. data/src/toxi/geom/Matrix4f.java +3446 -0
  143. data/src/toxi/geom/Matrix4x4.java +1076 -0
  144. data/src/toxi/geom/MatrixSizeException.java +58 -0
  145. data/src/toxi/geom/OctreeVisitor.java +44 -0
  146. data/src/toxi/geom/Origin3D.java +148 -0
  147. data/src/toxi/geom/Plane.java +293 -0
  148. data/src/toxi/geom/PlaneIntersector.java +57 -0
  149. data/src/toxi/geom/PointCloud3D.java +253 -0
  150. data/src/toxi/geom/PointOctree.java +502 -0
  151. data/src/toxi/geom/PointQuadtree.java +375 -0
  152. data/src/toxi/geom/Polygon2D.java +1038 -0
  153. data/src/toxi/geom/PolygonClipper2D.java +45 -0
  154. data/src/toxi/geom/PolygonTesselator.java +20 -0
  155. data/src/toxi/geom/QuadtreeVisitor.java +44 -0
  156. data/src/toxi/geom/Quaternion.java +641 -0
  157. data/src/toxi/geom/Ray2D.java +146 -0
  158. data/src/toxi/geom/Ray3D.java +150 -0
  159. data/src/toxi/geom/Ray3DIntersector.java +75 -0
  160. data/src/toxi/geom/ReadonlyVec2D.java +575 -0
  161. data/src/toxi/geom/ReadonlyVec3D.java +628 -0
  162. data/src/toxi/geom/ReadonlyVec4D.java +431 -0
  163. data/src/toxi/geom/Rect.java +720 -0
  164. data/src/toxi/geom/Reflector3D.java +58 -0
  165. data/src/toxi/geom/Shape2D.java +94 -0
  166. data/src/toxi/geom/Shape3D.java +42 -0
  167. data/src/toxi/geom/SingularMatrixException.java +57 -0
  168. data/src/toxi/geom/SpatialBins.java +182 -0
  169. data/src/toxi/geom/SpatialIndex.java +61 -0
  170. data/src/toxi/geom/Sphere.java +224 -0
  171. data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
  172. data/src/toxi/geom/Spline2D.java +349 -0
  173. data/src/toxi/geom/Spline3D.java +351 -0
  174. data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
  175. data/src/toxi/geom/Triangle2D.java +422 -0
  176. data/src/toxi/geom/Triangle3D.java +456 -0
  177. data/src/toxi/geom/TriangleIntersector.java +105 -0
  178. data/src/toxi/geom/Vec2D.java +1328 -0
  179. data/src/toxi/geom/Vec3D.java +1832 -0
  180. data/src/toxi/geom/Vec4D.java +985 -0
  181. data/src/toxi/geom/VecMathUtil.java +100 -0
  182. data/src/toxi/geom/XAxisCylinder.java +64 -0
  183. data/src/toxi/geom/YAxisCylinder.java +65 -0
  184. data/src/toxi/geom/ZAxisCylinder.java +64 -0
  185. data/src/toxi/geom/mesh/BezierPatch.java +200 -0
  186. data/src/toxi/geom/mesh/BoxSelector.java +62 -0
  187. data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
  188. data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
  189. data/src/toxi/geom/mesh/Face.java +176 -0
  190. data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
  191. data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
  192. data/src/toxi/geom/mesh/Mesh3D.java +224 -0
  193. data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
  194. data/src/toxi/geom/mesh/OBJWriter.java +194 -0
  195. data/src/toxi/geom/mesh/PLYWriter.java +167 -0
  196. data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
  197. data/src/toxi/geom/mesh/STLColorModel.java +54 -0
  198. data/src/toxi/geom/mesh/STLReader.java +185 -0
  199. data/src/toxi/geom/mesh/STLWriter.java +323 -0
  200. data/src/toxi/geom/mesh/SphereFunction.java +156 -0
  201. data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
  202. data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
  203. data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
  204. data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
  205. data/src/toxi/geom/mesh/Terrain.java +451 -0
  206. data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
  207. data/src/toxi/geom/mesh/Vertex.java +78 -0
  208. data/src/toxi/geom/mesh/VertexSelector.java +193 -0
  209. data/src/toxi/geom/mesh/WEFace.java +100 -0
  210. data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
  211. data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
  212. data/src/toxi/geom/mesh/WEVertex.java +134 -0
  213. data/src/toxi/geom/mesh/WingedEdge.java +115 -0
  214. data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
  215. data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
  216. data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
  217. data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
  218. data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
  219. data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
  220. data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
  221. data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
  222. data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
  223. data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
  224. data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
  225. data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
  226. data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
  227. data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
  228. data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
  229. data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
  230. data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
  231. data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
  232. data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
  233. data/src/toxi/geom/nurbs/ControlNet.java +148 -0
  234. data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
  235. data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
  236. data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
  237. data/src/toxi/geom/nurbs/KnotVector.java +333 -0
  238. data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
  239. data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
  240. data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
  241. data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
  242. data/src/toxi/image/util/Filter8bit.java +331 -0
  243. data/src/toxi/image/util/TiledFrameExporter.java +162 -0
  244. data/src/toxi/math/BezierInterpolation.java +102 -0
  245. data/src/toxi/math/CircularInterpolation.java +88 -0
  246. data/src/toxi/math/CosineInterpolation.java +51 -0
  247. data/src/toxi/math/DecimatedInterpolation.java +77 -0
  248. data/src/toxi/math/ExponentialInterpolation.java +68 -0
  249. data/src/toxi/math/InterpolateStrategy.java +60 -0
  250. data/src/toxi/math/Interpolation2D.java +93 -0
  251. data/src/toxi/math/LinearInterpolation.java +46 -0
  252. data/src/toxi/math/MathUtils.java +990 -0
  253. data/src/toxi/math/NonLinearScaleMap.java +101 -0
  254. data/src/toxi/math/ScaleMap.java +183 -0
  255. data/src/toxi/math/SigmoidInterpolation.java +78 -0
  256. data/src/toxi/math/SinCosLUT.java +141 -0
  257. data/src/toxi/math/ThresholdInterpolation.java +58 -0
  258. data/src/toxi/math/ZoomLensInterpolation.java +126 -0
  259. data/src/toxi/math/conversion/UnitTranslator.java +161 -0
  260. data/src/toxi/math/noise/PerlinNoise.java +281 -0
  261. data/src/toxi/math/noise/SimplexNoise.java +542 -0
  262. data/src/toxi/math/waves/AMFMSineWave.java +143 -0
  263. data/src/toxi/math/waves/AbstractWave.java +248 -0
  264. data/src/toxi/math/waves/ConstantWave.java +48 -0
  265. data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
  266. data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
  267. data/src/toxi/math/waves/FMSineWave.java +142 -0
  268. data/src/toxi/math/waves/FMSquareWave.java +143 -0
  269. data/src/toxi/math/waves/FMTriangleWave.java +126 -0
  270. data/src/toxi/math/waves/SineWave.java +81 -0
  271. data/src/toxi/math/waves/Wave2D.java +68 -0
  272. data/src/toxi/math/waves/WaveState.java +69 -0
  273. data/src/toxi/music/scale/AbstractScale.java +117 -0
  274. data/src/toxi/music/scale/GenericScale.java +66 -0
  275. data/src/toxi/music/scale/MajorScale.java +41 -0
  276. data/src/toxi/newmesh/AttributedEdge.java +106 -0
  277. data/src/toxi/newmesh/AttributedFace.java +63 -0
  278. data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
  279. data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
  280. data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
  281. data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
  282. data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
  283. data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
  284. data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
  285. data/src/toxi/newmesh/SpatialIndex.java +78 -0
  286. data/src/toxi/physics2d/ParticlePath2D.java +100 -0
  287. data/src/toxi/physics2d/ParticleString2D.java +184 -0
  288. data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
  289. data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
  290. data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
  291. data/src/toxi/physics2d/VerletParticle2D.java +457 -0
  292. data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
  293. data/src/toxi/physics2d/VerletSpring2D.java +181 -0
  294. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
  295. data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
  296. data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
  297. data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
  298. data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
  299. data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
  300. data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
  301. data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
  302. data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
  303. data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
  304. data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
  305. data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
  306. data/src/toxi/physics3d/ParticlePath3D.java +100 -0
  307. data/src/toxi/physics3d/ParticleString3D.java +184 -0
  308. data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
  309. data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
  310. data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
  311. data/src/toxi/physics3d/VerletParticle3D.java +385 -0
  312. data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
  313. data/src/toxi/physics3d/VerletSpring3D.java +180 -0
  314. data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
  315. data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
  316. data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
  317. data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
  318. data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
  319. data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
  320. data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
  321. data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
  322. data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
  323. data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
  324. data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
  325. data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
  326. data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
  327. data/src/toxi/processing/ArrowModifier.java +116 -0
  328. data/src/toxi/processing/DashedLineModifier.java +48 -0
  329. data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
  330. data/src/toxi/processing/Line2DRenderModifier.java +18 -0
  331. data/src/toxi/processing/MeshToVBO.java +127 -0
  332. data/src/toxi/processing/NormalMapper.java +18 -0
  333. data/src/toxi/processing/POVInterface.java +121 -0
  334. data/src/toxi/processing/POVMesh.java +219 -0
  335. data/src/toxi/processing/POVWriter.java +460 -0
  336. data/src/toxi/processing/RCOpaque.java +77 -0
  337. data/src/toxi/processing/RCTransp.java +78 -0
  338. data/src/toxi/processing/TextureBuilder.java +232 -0
  339. data/src/toxi/processing/Textures.java +110 -0
  340. data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
  341. data/src/toxi/processing/Tracing.java +25 -0
  342. data/src/toxi/processing/XYZNormalMapper.java +30 -0
  343. data/src/toxi/sim/automata/CAMatrix.java +297 -0
  344. data/src/toxi/sim/automata/CARule.java +76 -0
  345. data/src/toxi/sim/automata/CARule2D.java +354 -0
  346. data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
  347. data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
  348. data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
  349. data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
  350. data/src/toxi/sim/dla/DLA.java +497 -0
  351. data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
  352. data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
  353. data/src/toxi/sim/dla/DLAEventListener.java +57 -0
  354. data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
  355. data/src/toxi/sim/dla/DLAParticle.java +102 -0
  356. data/src/toxi/sim/dla/DLASegment.java +88 -0
  357. data/src/toxi/sim/dla/PipelineOrder.java +50 -0
  358. data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
  359. data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
  360. data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
  361. data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
  362. data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
  363. data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
  364. data/src/toxi/sim/grayscott/GrayScott.java +469 -0
  365. data/src/toxi/util/DateUtils.java +141 -0
  366. data/src/toxi/util/FileSequenceDescriptor.java +181 -0
  367. data/src/toxi/util/FileUtils.java +467 -0
  368. data/src/toxi/util/datatypes/ArraySet.java +128 -0
  369. data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
  370. data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
  371. data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
  372. data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
  373. data/src/toxi/util/datatypes/DoubleRange.java +251 -0
  374. data/src/toxi/util/datatypes/FloatRange.java +251 -0
  375. data/src/toxi/util/datatypes/GenericSet.java +215 -0
  376. data/src/toxi/util/datatypes/IntegerRange.java +247 -0
  377. data/src/toxi/util/datatypes/IntegerSet.java +149 -0
  378. data/src/toxi/util/datatypes/ItemIndex.java +72 -0
  379. data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
  380. data/src/toxi/util/datatypes/TypedProperties.java +291 -0
  381. data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
  382. data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
  383. data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
  384. data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
  385. data/src/toxi/util/events/EventDispatcher.java +86 -0
  386. data/src/toxi/volume/AdditiveBrush.java +19 -0
  387. data/src/toxi/volume/ArrayIsoSurface.java +297 -0
  388. data/src/toxi/volume/BoxBrush.java +100 -0
  389. data/src/toxi/volume/BrushMode.java +16 -0
  390. data/src/toxi/volume/HashIsoSurface.java +354 -0
  391. data/src/toxi/volume/IsoSurface.java +59 -0
  392. data/src/toxi/volume/MarchingCubesIndex.java +312 -0
  393. data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
  394. data/src/toxi/volume/MeshVoxelizer.java +216 -0
  395. data/src/toxi/volume/MultiplyBrush.java +20 -0
  396. data/src/toxi/volume/PeakBrush.java +21 -0
  397. data/src/toxi/volume/ReplaceBrush.java +19 -0
  398. data/src/toxi/volume/RoundBrush.java +113 -0
  399. data/src/toxi/volume/VolumetricBrush.java +160 -0
  400. data/src/toxi/volume/VolumetricHashMap.java +179 -0
  401. data/src/toxi/volume/VolumetricSpace.java +195 -0
  402. data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
  403. data/toxiclibs.gemspec +28 -0
  404. 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
Binary file
@@ -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
- include_package 'toxi.sim.erosion'
8
- include_package 'toxi.sim.fluids'
9
- include_package 'toxi.sim.grayscott'
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
- include_package 'toxi.physics2d.behaviors'
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
- include_package 'toxi.physics3d.behaviors'
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
- include_package 'toxi.util.events'
30
- include_package 'toxi.geom'
31
- include_package 'toxi.geom.mesh'
32
- include_package 'toxi.geom.mesh.subdiv'
33
- include_package 'toxi.geom.nurbs'
34
- include_package 'toxi.math'
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 = Java::ToxiGeom::Vec2D
42
- TVec3D = Java::ToxiGeom::Vec3D
43
- AABB = Java::ToxiGeom::AABB
44
- Mesh3D = Java::ToxiGeomMesh::Mesh3D
45
- TriangleMesh = Java::ToxiGeomMesh::TriangleMesh
46
- Face = Java::ToxiGeomMesh::Face
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
@@ -1,3 +1,3 @@
1
1
  module Toxiclibs
2
- VERSION = '0.4.0'
2
+ VERSION = '0.8.0'.freeze
3
3
  end
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
+ }