/* * Module - Tim Tyler 2000-2001. */ import java.awt.*; /** * Here is a sample module.
* Only modules which are called "Module" will function.
* The class is instantiated once - there should be little need to use static objects.
* This class creates some spinning, multi-coloured tetrahedra.
* After a short while, two objects in the system explode.
*/ public class Module implements ModuleInterface { Node death_node; Node egg_node; int count; /** * Performs any one-time set-up operations */ public void oneOffInitialisation() { } /** * Called when the user hits reset */ public void calledOnReset() { World world; NodeManager node_manager = Shoals.getNodeManager(); LinkManager link_manager = node_manager.getLinkManager(); // reset counter... count = 0; // makes a big sphere... egg_node = Shoals.node_manager.addNewAgent(10000, 10000, 10000, (char)511, (byte)96, (byte)15, Node.DRAG | Node.ALWAYS_CIRCULAR | Node.ALWAYS_HOLLOW); // allows it to have a world inside it... world = WorldManager.associateNewWorldWith(egg_node); // Shoals_Input.addFromString(_desc, pw, 0, 0, 256); // adds three things inside it // x, y, z, colour, diameter, log of mass, status flags world.addNewAgent(200, 100, 100, (char)127, (byte)10, (byte)18, Node.ALWAYS_CIRCULAR | Node.ALWAYS_HOLLOW); world.addNewAgent(100, 200, 100, (char)127, (byte)13, (byte)17, Node.ALWAYS_CIRCULAR | Node.ALWAYS_HOLLOW); world.addNewAgent(100, 100, 200, (char)127, (byte)20, (byte)16, Node.ALWAYS_CIRCULAR | Node.ALWAYS_HOLLOW); // a tetrahedron inside the "egg". makeTetrahedron(world, 50); // one floats around outside... node_manager.addNewAgent(400, 400, 500, (char)62, (byte)24, (byte)16, 0); for (int i = 0; i++ <= 16; ) { makeTetrahedron((World)node_manager, 50 + i * 10); } } void makeTetrahedron(World world, int scale_factor) { Node node1; Node node2; Node node3; Node node4; LinkManager link_manager = world.getLinkManager(); node1 = world.addNewAgent(400, 400, 500, (char)scale_factor, (byte)(scale_factor >> 2), (byte)16, 0); node2 = world.addNewAgent(400, 500, 500, (char)scale_factor, (byte)(scale_factor >> 2), (byte)16, 0); node3 = world.addNewAgent(400, 450, 500, (char)scale_factor, (byte)(scale_factor >> 2), (byte)16, 0); node4 = world.addNewAgent(400, 450, 500, (char)scale_factor, (byte)(scale_factor >> 2), (byte)16, 0); link_manager.setLink(node1, node2, scale_factor, 200, 511, 0); link_manager.setLink(node2, node3, scale_factor, 200, 511, 0); link_manager.setLink(node3, node1, scale_factor, 200, 511, 0); link_manager.setLink(node1, node4, scale_factor, 200, 511, 0); link_manager.setLink(node2, node4, scale_factor, 200, 511, 0); link_manager.setLink(node3, node4, scale_factor, 200, 511, 0); death_node = node4; } /** * Called once during every frame */ public void update() { count++; if (count == 1000) { death_node.simplyKill(); } if (count == 2000) { egg_node.simplyKill(); } } /** * Runs the main program */ public static void main(String args[]) { Shoals.main(null); } /** * Extremely primitive debugging routine */ public static void debug(String o) { System.out.println(o); } }