diff --git a/.classpath b/.classpath deleted file mode 100644 index 6dde599..0000000 --- a/.classpath +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 07827cc..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target/ -.idea/ \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index e96534f..0000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index c8a1be1..0000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - ai-tools - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 13b3428..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,13 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/JBTCore.jar b/JBTCore.jar deleted file mode 100644 index 9112c20..0000000 Binary files a/JBTCore.jar and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index 11e1640..0000000 --- a/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# AI tools for Java -This repo contains a bunch of AI tools for use with Java. It was written for an [IGGI][iggi] module at Goldsmiths University. - -## Compiling the code -The code is a maven repository, so you can compile it into a jar using maven. When the code is on an acceptable qaulity, it will -also be published in a maven repository. - - git clone https://github.com/unitycoders/ai-tools.git - mvn package - -## note to Unity Coders Developers -DO **NOT** COMMIT DIRECTLY TO THIS REPO BEFORE 16/03/2015. Use pull requests instead as this work **may** be used for an assement at Goldsmiths by Joseph (webpigeon) and Piers (solar1992). After this date feel free to go nuts. Feel free to play with the code if your intrested in AI :). - -[iggi]:http://iggi.org.uk/ diff --git a/ai-tools.iml b/ai-tools.iml deleted file mode 100644 index b121e2a..0000000 --- a/ai-tools.iml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html new file mode 100644 index 0000000..f818ec0 --- /dev/null +++ b/apidocs/allclasses-frame.html @@ -0,0 +1,45 @@ + + + + + + +All Classes (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

All Classes

+
+ +
+ + diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html new file mode 100644 index 0000000..6115eca --- /dev/null +++ b/apidocs/allclasses-noframe.html @@ -0,0 +1,45 @@ + + + + + + +All Classes (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

All Classes

+
+ +
+ + diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html new file mode 100644 index 0000000..054540f --- /dev/null +++ b/apidocs/constant-values.html @@ -0,0 +1,126 @@ + + + + + + +Constant Field Values (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Constant Field Values

+

Contents

+
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html new file mode 100644 index 0000000..1a45bd0 --- /dev/null +++ b/apidocs/deprecated-list.html @@ -0,0 +1,126 @@ + + + + + + +Deprecated List (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/help-doc.html b/apidocs/help-doc.html new file mode 100644 index 0000000..c0366ad --- /dev/null +++ b/apidocs/help-doc.html @@ -0,0 +1,231 @@ + + + + + + +API Help (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+ +This help file applies to API documentation generated using the standard doclet.
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/index-all.html b/apidocs/index-all.html new file mode 100644 index 0000000..f49612c --- /dev/null +++ b/apidocs/index-all.html @@ -0,0 +1,691 @@ + + + + + + +Index (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G H I M N P R S T U V W X Y  + + +

A

+
+
add(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
add(Vector2D, Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
add(double, double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
add(Vector2D, double, double) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
add(Vector2D, double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
add(Vector2D, Vector2D, double) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
addBehavour(SteeringBehaviour, double) - Method in class uk.me.webpigeon.steering.WeightedBehaviour
+
 
+
addEntity(Entity) - Method in class uk.me.webpigeon.world.World
+
 
+
addStrawberry(Strawberry) - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
angleBetween(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

B

+
+
BehaviourEntity - Class in uk.me.webpigeon.world
+
+
Created by Piers on 03/03/2015.
+
+
BehaviourEntity(String) - Constructor for class uk.me.webpigeon.world.BehaviourEntity
+
 
+
BehaviourRegistry - Class in uk.me.webpigeon.world
+
+
Created by Piers on 03/03/2015.
+
+
BehaviourRegistry() - Constructor for class uk.me.webpigeon.world.BehaviourRegistry
+
 
+
bind(Entity) - Method in class uk.me.webpigeon.steering.FleeBehaviour
+
 
+
bind(Entity) - Method in class uk.me.webpigeon.steering.SeekBehaviour
+
 
+
bind(Entity) - Method in interface uk.me.webpigeon.steering.SteeringBehaviour
+
+
Bind a behaviour to a given entity.
+
+
bind(Entity) - Method in class uk.me.webpigeon.steering.WanderingBehaviour
+
 
+
bind(Entity) - Method in class uk.me.webpigeon.steering.WeightedBehaviour
+
 
+
bind(Entity) - Method in class uk.me.webpigeon.steering.WonderBehaviour
+
 
+
buildCow(int, int) - Static method in class uk.me.webpigeon.world.EntityFactory
+
 
+
+ + + +

C

+
+
CachedVector2DSource - Class in uk.me.webpigeon.util
+
+
Caches Vector2D's
+
+
CachedVector2DSource(int, int) - Constructor for class uk.me.webpigeon.util.CachedVector2DSource
+
 
+
clone(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
clone(Vector2D, Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

D

+
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.steering.FleeBehaviour
+
 
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.steering.SeekBehaviour
+
 
+
debugDraw(Graphics2D) - Method in interface uk.me.webpigeon.steering.SteeringBehaviour
+
+
Draw debug visualisations for this behaviour.
+
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.steering.WanderingBehaviour
+
 
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.steering.WeightedBehaviour
+
 
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.steering.WonderBehaviour
+
 
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.world.Entity
+
 
+
debugDraw(Graphics2D) - Method in class uk.me.webpigeon.world.SteeringEntity
+
 
+
dist(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
divide(double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
divide(Vector2D, double) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
DoubleWorld - Class in uk.me.webpigeon.world
+
 
+
DoubleWorld(int, int) - Constructor for class uk.me.webpigeon.world.DoubleWorld
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.strawberry.Strawberry
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.BehaviourEntity
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.DoubleWorld
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.Entity
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.GrassEntity
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.GridWorld
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.SteeringEntity
+
 
+
draw(Graphics2D) - Method in class uk.me.webpigeon.world.World
+
 
+
+ + + +

E

+
+
Entity - Class in uk.me.webpigeon.world
+
+
Base abstract class for all entity objects in the world + + Created by Piers on 03/03/2015.
+
+
Entity() - Constructor for class uk.me.webpigeon.world.Entity
+
 
+
entityBehaviourName - Variable in class uk.me.webpigeon.world.BehaviourEntity
+
 
+
EntityFactory - Class in uk.me.webpigeon.world
+
 
+
equals(Object) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
eugenics() - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
eval() - Method in class uk.me.webpigeon.behaviour.SelectorNode
+
+
Evaluate all child nodes in order from 0 ...
+
+
eval() - Method in class uk.me.webpigeon.behaviour.SequenceNode
+
+
Evaluate all child nodes in order from 0 ...
+
+
eval() - Method in class uk.me.webpigeon.behaviour.TreeNode
+
+
Evaluate this node and return true if it was successfully evaluated.
+
+
+ + + +

F

+
+
FleeBehaviour - Class in uk.me.webpigeon.steering
+
 
+
FleeBehaviour(Vector2D) - Constructor for class uk.me.webpigeon.steering.FleeBehaviour
+
 
+
+ + + +

G

+
+
generateSimplexNoise() - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
getBehaviour(String) - Static method in class uk.me.webpigeon.world.BehaviourRegistry
+
 
+
getCenterOfGrid(int) - Method in class uk.me.webpigeon.world.GridWorld
+
 
+
getChild(int) - Method in class uk.me.webpigeon.behaviour.TreeNode
+
+
Get the nth child from this node.
+
+
getChildren() - Method in class uk.me.webpigeon.behaviour.NDSelectorNode
+
 
+
getChildren() - Method in class uk.me.webpigeon.behaviour.NDSequenceNode
+
 
+
getChildren() - Method in class uk.me.webpigeon.behaviour.TreeNode
+
+
Get all children of this node.
+
+
getChildrenSize() - Method in class uk.me.webpigeon.behaviour.TreeNode
+
+
Return the number of children this node has.
+
+
getLocation() - Method in class uk.me.webpigeon.world.Entity
+
 
+
getNormalDirectionBetween(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
getPreferredSize() - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
getPreferredSize() - Method in class uk.me.webpigeon.world.GridWorld
+
 
+
getR() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
getRandomCartesian(double, double, boolean) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
getRandomPolar(double, double, double, boolean) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
getTheta() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
getVector(int, int) - Method in class uk.me.webpigeon.util.CachedVector2DSource
+
 
+
getVector(double, double) - Method in class uk.me.webpigeon.util.CachedVector2DSource
+
 
+
getVelocity() - Method in class uk.me.webpigeon.world.Entity
+
 
+
getX() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
getX() - Method in class uk.me.webpigeon.world.Entity
+
 
+
getY() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
getY() - Method in class uk.me.webpigeon.world.Entity
+
 
+
GrassEntity - Class in uk.me.webpigeon.world
+
+
Created by Piers on 04/03/2015.
+
+
GrassEntity(Vector2D) - Constructor for class uk.me.webpigeon.world.GrassEntity
+
 
+
GridWorld - Class in uk.me.webpigeon.world
+
+
Created by Piers on 03/03/2015.
+
+
GridWorld(int, int) - Constructor for class uk.me.webpigeon.world.GridWorld
+
 
+
+ + + +

H

+
+
hashCode() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
HunterAgent - Class in uk.me.webpigeon.piers
+
+
Created by Piers on 04/03/2015.
+
+
HunterAgent() - Constructor for class uk.me.webpigeon.piers.HunterAgent
+
 
+
+ + + +

I

+
+
init() - Method in class uk.me.webpigeon.strawberry.StrawberryApplet
+
 
+
isLeaf() - Method in class uk.me.webpigeon.behaviour.TreeNode
+
+
If this node has no children, this returns True.
+
+
+ + + +

M

+
+
mag() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
main(String[]) - Static method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
main(String[]) - Static method in class uk.me.webpigeon.world.DoubleWorld
+
 
+
main(String[]) - Static method in class uk.me.webpigeon.world.GridWorld
+
 
+
multiply(double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
multiply(Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
multiply(Vector2D, double) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

N

+
+
NDSelectorNode - Class in uk.me.webpigeon.behaviour
+
+
Nondeterministic Selector Node + + Evaluate all nodes in order from 0 to random, if any node returns true + stop evaluating and returns true.
+
+
NDSelectorNode() - Constructor for class uk.me.webpigeon.behaviour.NDSelectorNode
+
 
+
NDSequenceNode - Class in uk.me.webpigeon.behaviour
+
+
Nondeterministic Sequence Node + + Evaluate all nodes in order from 0 to random, if all nodes return true + then return true, else return false.
+
+
NDSequenceNode() - Constructor for class uk.me.webpigeon.behaviour.NDSequenceNode
+
 
+
noise(double, double) - Static method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
normalise() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
normalise(Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
numberOfVectors() - Method in class uk.me.webpigeon.util.CachedVector2DSource
+
 
+
+ + + +

P

+
+
paint(Graphics) - Method in class uk.me.webpigeon.strawberry.StrawberryApplet
+
 
+
process() - Method in class uk.me.webpigeon.steering.FleeBehaviour
+
 
+
process() - Method in class uk.me.webpigeon.steering.SeekBehaviour
+
 
+
process() - Method in interface uk.me.webpigeon.steering.SteeringBehaviour
+
+
process this behaviour and return it's resultant vector.
+
+
process() - Method in class uk.me.webpigeon.steering.WanderingBehaviour
+
 
+
process() - Method in class uk.me.webpigeon.steering.WeightedBehaviour
+
 
+
process() - Method in class uk.me.webpigeon.steering.WonderBehaviour
+
 
+
+ + + +

R

+
+
registerBehaviour(String, TreeNode) - Static method in class uk.me.webpigeon.world.BehaviourRegistry
+
 
+
rotate(double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
roughlyEquals(Object, float) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
run() - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
run() - Method in class uk.me.webpigeon.world.World
+
 
+
+ + + +

S

+
+
scalarProduct(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
scalarProduct(Vector2D, Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
SeekBehaviour - Class in uk.me.webpigeon.steering
+
 
+
SeekBehaviour(Vector2D) - Constructor for class uk.me.webpigeon.steering.SeekBehaviour
+
 
+
SelectorNode - Class in uk.me.webpigeon.behaviour
+
+
Selector Node + + Evaluate all nodes in order from 0 to N, if any node returns true + stop evaluating and returns true.
+
+
SelectorNode(TreeNode...) - Constructor for class uk.me.webpigeon.behaviour.SelectorNode
+
 
+
SequenceNode - Class in uk.me.webpigeon.behaviour
+
+
Sequence Node + + Evaluate all nodes in order from 0 to N, if all nodes return true + then return true, else return false.
+
+
SequenceNode(TreeNode...) - Constructor for class uk.me.webpigeon.behaviour.SequenceNode
+
 
+
set(double, double) - Method in class uk.me.webpigeon.util.Vector2D
+
+
Update the position of this vector.
+
+
set(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
+
Update the position of this vector.
+
+
setTarget(Vector2D) - Method in class uk.me.webpigeon.steering.SeekBehaviour
+
 
+
SteeringBehaviour - Interface in uk.me.webpigeon.steering
+
+
This interface defines steering behaviours.
+
+
SteeringEntity - Class in uk.me.webpigeon.world
+
 
+
SteeringEntity(int, int, SteeringBehaviour) - Constructor for class uk.me.webpigeon.world.SteeringEntity
+
 
+
Strawberry - Class in uk.me.webpigeon.strawberry
+
+
Created by Piers on 05/03/2015.
+
+
Strawberry(int, int) - Constructor for class uk.me.webpigeon.strawberry.Strawberry
+
 
+
Strawberry(Vector2D) - Constructor for class uk.me.webpigeon.strawberry.Strawberry
+
 
+
StrawberryApplet - Class in uk.me.webpigeon.strawberry
+
+
Created by Piers on 05/03/2015.
+
+
StrawberryApplet() - Constructor for class uk.me.webpigeon.strawberry.StrawberryApplet
+
 
+
StrawberryWorld - Class in uk.me.webpigeon.strawberry
+
+
Created by Piers on 05/03/2015.
+
+
StrawberryWorld(int, int) - Constructor for class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
subtract(Vector2D) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
subtract(Vector2D, Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
subtract(double, double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
subtract(Vector2D, double, double) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

T

+
+
theta() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
toCartesian(Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
toPolar(Vector2D) - Static method in class uk.me.webpigeon.util.Vector2D
+
 
+
toString() - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
TreeNode - Class in uk.me.webpigeon.behaviour
+
+
Base Behaviour Tree Node.
+
+
TreeNode(TreeNode...) - Constructor for class uk.me.webpigeon.behaviour.TreeNode
+
+
Create a new TreeNode.
+
+
TreeNode(int) - Constructor for class uk.me.webpigeon.behaviour.TreeNode
+
+
Create a new TreeNode.
+
+
+ + + +

U

+
+
uk.me.webpigeon.behaviour - package uk.me.webpigeon.behaviour
+
 
+
uk.me.webpigeon.piers - package uk.me.webpigeon.piers
+
 
+
uk.me.webpigeon.steering - package uk.me.webpigeon.steering
+
 
+
uk.me.webpigeon.strawberry - package uk.me.webpigeon.strawberry
+
 
+
uk.me.webpigeon.util - package uk.me.webpigeon.util
+
 
+
uk.me.webpigeon.world - package uk.me.webpigeon.world
+
 
+
update(StrawberryWorld) - Method in class uk.me.webpigeon.strawberry.Strawberry
+
 
+
update() - Method in class uk.me.webpigeon.strawberry.StrawberryWorld
+
 
+
update() - Method in class uk.me.webpigeon.world.BehaviourEntity
+
 
+
update() - Method in class uk.me.webpigeon.world.Entity
+
 
+
update() - Method in class uk.me.webpigeon.world.GrassEntity
+
 
+
update() - Method in class uk.me.webpigeon.world.SteeringEntity
+
 
+
update(long) - Method in class uk.me.webpigeon.world.World
+
 
+
+ + + +

V

+
+
Vector2D - Class in uk.me.webpigeon.util
+
 
+
Vector2D() - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create a new immutable vector of size (0,0).
+
+
Vector2D(boolean) - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create a new vector of size (0,0).
+
+
Vector2D(double, double) - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create a new immutable vector of a user defined size.
+
+
Vector2D(double, double, boolean) - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create a new vector of a user defined size.
+
+
Vector2D(Vector2D) - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create an immutable copy of vector which is a copy of another vector.
+
+
Vector2D(Vector2D, boolean) - Constructor for class uk.me.webpigeon.util.Vector2D
+
+
Create an immutable copy of vector which is a copy of another vector.
+
+
+ + + +

W

+
+
WanderingBehaviour - Class in uk.me.webpigeon.steering
+
+
Created by Piers on 04/03/2015.
+
+
WanderingBehaviour() - Constructor for class uk.me.webpigeon.steering.WanderingBehaviour
+
 
+
WeightedBehaviour - Class in uk.me.webpigeon.steering
+
 
+
WeightedBehaviour() - Constructor for class uk.me.webpigeon.steering.WeightedBehaviour
+
 
+
WonderBehaviour - Class in uk.me.webpigeon.steering
+
 
+
WonderBehaviour() - Constructor for class uk.me.webpigeon.steering.WonderBehaviour
+
 
+
World - Class in uk.me.webpigeon.world
+
+
Created by Piers on 03/03/2015.
+
+
World(int, int) - Constructor for class uk.me.webpigeon.world.World
+
 
+
wrap(double, double) - Method in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

X

+
+
x - Variable in class uk.me.webpigeon.util.Vector2D
+
 
+
+ + + +

Y

+
+
y - Variable in class uk.me.webpigeon.util.Vector2D
+
 
+
+A B C D E F G H I M N P R S T U V W X Y 
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/index.html b/apidocs/index.html new file mode 100644 index 0000000..822a7dd --- /dev/null +++ b/apidocs/index.html @@ -0,0 +1,75 @@ + + + + + + +Goldsmiths AIs stuff 0.0.1-SNAPSHOT API + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/apidocs/overview-frame.html b/apidocs/overview-frame.html new file mode 100644 index 0000000..be8123b --- /dev/null +++ b/apidocs/overview-frame.html @@ -0,0 +1,27 @@ + + + + + + +Overview List (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +
All Classes
+
+

Packages

+ +
+

 

+ + diff --git a/apidocs/overview-summary.html b/apidocs/overview-summary.html new file mode 100644 index 0000000..6d08ef3 --- /dev/null +++ b/apidocs/overview-summary.html @@ -0,0 +1,160 @@ + + + + + + +Overview (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Goldsmiths AIs stuff 0.0.1-SNAPSHOT API

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
uk.me.webpigeon.behaviour 
uk.me.webpigeon.piers 
uk.me.webpigeon.steering 
uk.me.webpigeon.strawberry 
uk.me.webpigeon.util 
uk.me.webpigeon.world 
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html new file mode 100644 index 0000000..2f707cf --- /dev/null +++ b/apidocs/overview-tree.html @@ -0,0 +1,207 @@ + + + + + + +Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/package-list b/apidocs/package-list new file mode 100644 index 0000000..1ed74d8 --- /dev/null +++ b/apidocs/package-list @@ -0,0 +1,6 @@ +uk.me.webpigeon.behaviour +uk.me.webpigeon.piers +uk.me.webpigeon.steering +uk.me.webpigeon.strawberry +uk.me.webpigeon.util +uk.me.webpigeon.world diff --git a/apidocs/script.js b/apidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/apidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html new file mode 100644 index 0000000..3a00a2c --- /dev/null +++ b/apidocs/serialized-form.html @@ -0,0 +1,264 @@ + + + + + + +Serialized Form (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/stylesheet.css b/apidocs/stylesheet.css new file mode 100644 index 0000000..cebb4fd --- /dev/null +++ b/apidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; + width:100%; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/apidocs/uk/me/webpigeon/behaviour/NDSelectorNode.html b/apidocs/uk/me/webpigeon/behaviour/NDSelectorNode.html new file mode 100644 index 0000000..5d53670 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/NDSelectorNode.html @@ -0,0 +1,315 @@ + + + + + + +NDSelectorNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.behaviour
+

Class NDSelectorNode

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/NDSequenceNode.html b/apidocs/uk/me/webpigeon/behaviour/NDSequenceNode.html new file mode 100644 index 0000000..c8221c3 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/NDSequenceNode.html @@ -0,0 +1,315 @@ + + + + + + +NDSequenceNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.behaviour
+

Class NDSequenceNode

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/SelectorNode.html b/apidocs/uk/me/webpigeon/behaviour/SelectorNode.html new file mode 100644 index 0000000..2a4e585 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/SelectorNode.html @@ -0,0 +1,306 @@ + + + + + + +SelectorNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.behaviour
+

Class SelectorNode

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/SequenceNode.html b/apidocs/uk/me/webpigeon/behaviour/SequenceNode.html new file mode 100644 index 0000000..83ecef6 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/SequenceNode.html @@ -0,0 +1,306 @@ + + + + + + +SequenceNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.behaviour
+

Class SequenceNode

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/TreeNode.html b/apidocs/uk/me/webpigeon/behaviour/TreeNode.html new file mode 100644 index 0000000..f479be8 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/TreeNode.html @@ -0,0 +1,407 @@ + + + + + + +TreeNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.behaviour
+

Class TreeNode

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/class-use/NDSelectorNode.html b/apidocs/uk/me/webpigeon/behaviour/class-use/NDSelectorNode.html new file mode 100644 index 0000000..dcde3a4 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/class-use/NDSelectorNode.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.behaviour.NDSelectorNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.behaviour.NDSelectorNode

+
+
No usage of uk.me.webpigeon.behaviour.NDSelectorNode
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/class-use/NDSequenceNode.html b/apidocs/uk/me/webpigeon/behaviour/class-use/NDSequenceNode.html new file mode 100644 index 0000000..63cfe1a --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/class-use/NDSequenceNode.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.behaviour.NDSequenceNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.behaviour.NDSequenceNode

+
+
No usage of uk.me.webpigeon.behaviour.NDSequenceNode
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/class-use/SelectorNode.html b/apidocs/uk/me/webpigeon/behaviour/class-use/SelectorNode.html new file mode 100644 index 0000000..05a14a4 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/class-use/SelectorNode.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Class uk.me.webpigeon.behaviour.SelectorNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.behaviour.SelectorNode

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/class-use/SequenceNode.html b/apidocs/uk/me/webpigeon/behaviour/class-use/SequenceNode.html new file mode 100644 index 0000000..5f1a508 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/class-use/SequenceNode.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Class uk.me.webpigeon.behaviour.SequenceNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.behaviour.SequenceNode

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/class-use/TreeNode.html b/apidocs/uk/me/webpigeon/behaviour/class-use/TreeNode.html new file mode 100644 index 0000000..03ecb10 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/class-use/TreeNode.html @@ -0,0 +1,291 @@ + + + + + + +Uses of Class uk.me.webpigeon.behaviour.TreeNode (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.behaviour.TreeNode

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/package-frame.html b/apidocs/uk/me/webpigeon/behaviour/package-frame.html new file mode 100644 index 0000000..2c61b97 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/package-frame.html @@ -0,0 +1,25 @@ + + + + + + +uk.me.webpigeon.behaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.behaviour

+
+

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/package-summary.html b/apidocs/uk/me/webpigeon/behaviour/package-summary.html new file mode 100644 index 0000000..93fc244 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/package-summary.html @@ -0,0 +1,182 @@ + + + + + + +uk.me.webpigeon.behaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.behaviour

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/package-tree.html b/apidocs/uk/me/webpigeon/behaviour/package-tree.html new file mode 100644 index 0000000..a59b384 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/package-tree.html @@ -0,0 +1,152 @@ + + + + + + +uk.me.webpigeon.behaviour Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.behaviour

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/behaviour/package-use.html b/apidocs/uk/me/webpigeon/behaviour/package-use.html new file mode 100644 index 0000000..2b225d3 --- /dev/null +++ b/apidocs/uk/me/webpigeon/behaviour/package-use.html @@ -0,0 +1,198 @@ + + + + + + +Uses of Package uk.me.webpigeon.behaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.behaviour

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/piers/HunterAgent.html b/apidocs/uk/me/webpigeon/piers/HunterAgent.html new file mode 100644 index 0000000..1b5b04e --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/HunterAgent.html @@ -0,0 +1,243 @@ + + + + + + +HunterAgent (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.piers
+

Class HunterAgent

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/piers/class-use/HunterAgent.html b/apidocs/uk/me/webpigeon/piers/class-use/HunterAgent.html new file mode 100644 index 0000000..23a62d6 --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/class-use/HunterAgent.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.piers.HunterAgent (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.piers.HunterAgent

+
+
No usage of uk.me.webpigeon.piers.HunterAgent
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/piers/package-frame.html b/apidocs/uk/me/webpigeon/piers/package-frame.html new file mode 100644 index 0000000..8bdf032 --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +uk.me.webpigeon.piers (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.piers

+
+

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/piers/package-summary.html b/apidocs/uk/me/webpigeon/piers/package-summary.html new file mode 100644 index 0000000..efeeb07 --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/package-summary.html @@ -0,0 +1,146 @@ + + + + + + +uk.me.webpigeon.piers (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.piers

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/piers/package-tree.html b/apidocs/uk/me/webpigeon/piers/package-tree.html new file mode 100644 index 0000000..e3787a8 --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/package-tree.html @@ -0,0 +1,139 @@ + + + + + + +uk.me.webpigeon.piers Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.piers

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/piers/package-use.html b/apidocs/uk/me/webpigeon/piers/package-use.html new file mode 100644 index 0000000..d60e29e --- /dev/null +++ b/apidocs/uk/me/webpigeon/piers/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Package uk.me.webpigeon.piers (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.piers

+
+
No usage of uk.me.webpigeon.piers
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/FleeBehaviour.html b/apidocs/uk/me/webpigeon/steering/FleeBehaviour.html new file mode 100644 index 0000000..3e6d417 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/FleeBehaviour.html @@ -0,0 +1,344 @@ + + + + + + +FleeBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Class FleeBehaviour

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/SeekBehaviour.html b/apidocs/uk/me/webpigeon/steering/SeekBehaviour.html new file mode 100644 index 0000000..f39ef5b --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/SeekBehaviour.html @@ -0,0 +1,356 @@ + + + + + + +SeekBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Class SeekBehaviour

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/SteeringBehaviour.html b/apidocs/uk/me/webpigeon/steering/SteeringBehaviour.html new file mode 100644 index 0000000..9a9826a --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/SteeringBehaviour.html @@ -0,0 +1,284 @@ + + + + + + +SteeringBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Interface SteeringBehaviour

+
+
+
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/WanderingBehaviour.html b/apidocs/uk/me/webpigeon/steering/WanderingBehaviour.html new file mode 100644 index 0000000..41dabe2 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/WanderingBehaviour.html @@ -0,0 +1,344 @@ + + + + + + +WanderingBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Class WanderingBehaviour

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/WeightedBehaviour.html b/apidocs/uk/me/webpigeon/steering/WeightedBehaviour.html new file mode 100644 index 0000000..0dc380b --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/WeightedBehaviour.html @@ -0,0 +1,358 @@ + + + + + + +WeightedBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Class WeightedBehaviour

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/WonderBehaviour.html b/apidocs/uk/me/webpigeon/steering/WonderBehaviour.html new file mode 100644 index 0000000..1841ddd --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/WonderBehaviour.html @@ -0,0 +1,343 @@ + + + + + + +WonderBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.steering
+

Class WonderBehaviour

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/FleeBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/FleeBehaviour.html new file mode 100644 index 0000000..f9c0169 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/FleeBehaviour.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.steering.FleeBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.steering.FleeBehaviour

+
+
No usage of uk.me.webpigeon.steering.FleeBehaviour
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/SeekBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/SeekBehaviour.html new file mode 100644 index 0000000..a48cf97 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/SeekBehaviour.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.steering.SeekBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.steering.SeekBehaviour

+
+
No usage of uk.me.webpigeon.steering.SeekBehaviour
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/SteeringBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/SteeringBehaviour.html new file mode 100644 index 0000000..8d7234f --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/SteeringBehaviour.html @@ -0,0 +1,220 @@ + + + + + + +Uses of Interface uk.me.webpigeon.steering.SteeringBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Interface
uk.me.webpigeon.steering.SteeringBehaviour

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/WanderingBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/WanderingBehaviour.html new file mode 100644 index 0000000..eb8895c --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/WanderingBehaviour.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.steering.WanderingBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.steering.WanderingBehaviour

+
+
No usage of uk.me.webpigeon.steering.WanderingBehaviour
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/WeightedBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/WeightedBehaviour.html new file mode 100644 index 0000000..2832606 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/WeightedBehaviour.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.steering.WeightedBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.steering.WeightedBehaviour

+
+
No usage of uk.me.webpigeon.steering.WeightedBehaviour
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/class-use/WonderBehaviour.html b/apidocs/uk/me/webpigeon/steering/class-use/WonderBehaviour.html new file mode 100644 index 0000000..c39f1a9 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/class-use/WonderBehaviour.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.steering.WonderBehaviour (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.steering.WonderBehaviour

+
+
No usage of uk.me.webpigeon.steering.WonderBehaviour
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/package-frame.html b/apidocs/uk/me/webpigeon/steering/package-frame.html new file mode 100644 index 0000000..2b111d1 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/package-frame.html @@ -0,0 +1,29 @@ + + + + + + +uk.me.webpigeon.steering (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.steering

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/steering/package-summary.html b/apidocs/uk/me/webpigeon/steering/package-summary.html new file mode 100644 index 0000000..48f2b83 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/package-summary.html @@ -0,0 +1,179 @@ + + + + + + +uk.me.webpigeon.steering (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.steering

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/package-tree.html b/apidocs/uk/me/webpigeon/steering/package-tree.html new file mode 100644 index 0000000..5ec988d --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/package-tree.html @@ -0,0 +1,147 @@ + + + + + + +uk.me.webpigeon.steering Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.steering

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/steering/package-use.html b/apidocs/uk/me/webpigeon/steering/package-use.html new file mode 100644 index 0000000..9f1a082 --- /dev/null +++ b/apidocs/uk/me/webpigeon/steering/package-use.html @@ -0,0 +1,182 @@ + + + + + + +Uses of Package uk.me.webpigeon.steering (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.steering

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/Strawberry.html b/apidocs/uk/me/webpigeon/strawberry/Strawberry.html new file mode 100644 index 0000000..028faf5 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/Strawberry.html @@ -0,0 +1,301 @@ + + + + + + +Strawberry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.strawberry
+

Class Strawberry

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/StrawberryApplet.html b/apidocs/uk/me/webpigeon/strawberry/StrawberryApplet.html new file mode 100644 index 0000000..e3cbda9 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/StrawberryApplet.html @@ -0,0 +1,388 @@ + + + + + + +StrawberryApplet (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.strawberry
+

Class StrawberryApplet

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/StrawberryWorld.html b/apidocs/uk/me/webpigeon/strawberry/StrawberryWorld.html new file mode 100644 index 0000000..a29c631 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/StrawberryWorld.html @@ -0,0 +1,473 @@ + + + + + + +StrawberryWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.strawberry
+

Class StrawberryWorld

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/class-use/Strawberry.html b/apidocs/uk/me/webpigeon/strawberry/class-use/Strawberry.html new file mode 100644 index 0000000..d526b22 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/class-use/Strawberry.html @@ -0,0 +1,166 @@ + + + + + + +Uses of Class uk.me.webpigeon.strawberry.Strawberry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.strawberry.Strawberry

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryApplet.html b/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryApplet.html new file mode 100644 index 0000000..4d17101 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryApplet.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.strawberry.StrawberryApplet (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.strawberry.StrawberryApplet

+
+
No usage of uk.me.webpigeon.strawberry.StrawberryApplet
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryWorld.html b/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryWorld.html new file mode 100644 index 0000000..bb59155 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/class-use/StrawberryWorld.html @@ -0,0 +1,166 @@ + + + + + + +Uses of Class uk.me.webpigeon.strawberry.StrawberryWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.strawberry.StrawberryWorld

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/package-frame.html b/apidocs/uk/me/webpigeon/strawberry/package-frame.html new file mode 100644 index 0000000..cac0708 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/package-frame.html @@ -0,0 +1,23 @@ + + + + + + +uk.me.webpigeon.strawberry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.strawberry

+
+

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/package-summary.html b/apidocs/uk/me/webpigeon/strawberry/package-summary.html new file mode 100644 index 0000000..a81e8e1 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/package-summary.html @@ -0,0 +1,158 @@ + + + + + + +uk.me.webpigeon.strawberry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.strawberry

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/package-tree.html b/apidocs/uk/me/webpigeon/strawberry/package-tree.html new file mode 100644 index 0000000..6081f4d --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/package-tree.html @@ -0,0 +1,161 @@ + + + + + + +uk.me.webpigeon.strawberry Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.strawberry

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/strawberry/package-use.html b/apidocs/uk/me/webpigeon/strawberry/package-use.html new file mode 100644 index 0000000..ae77881 --- /dev/null +++ b/apidocs/uk/me/webpigeon/strawberry/package-use.html @@ -0,0 +1,166 @@ + + + + + + +Uses of Package uk.me.webpigeon.strawberry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.strawberry

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/CachedVector2DSource.html b/apidocs/uk/me/webpigeon/util/CachedVector2DSource.html new file mode 100644 index 0000000..08b7726 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/CachedVector2DSource.html @@ -0,0 +1,306 @@ + + + + + + +CachedVector2DSource (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.util
+

Class CachedVector2DSource

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/Vector2D.html b/apidocs/uk/me/webpigeon/util/Vector2D.html new file mode 100644 index 0000000..69453b8 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/Vector2D.html @@ -0,0 +1,1042 @@ + + + + + + +Vector2D (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.util
+

Class Vector2D

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/class-use/CachedVector2DSource.html b/apidocs/uk/me/webpigeon/util/class-use/CachedVector2DSource.html new file mode 100644 index 0000000..0b7b784 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/class-use/CachedVector2DSource.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.util.CachedVector2DSource (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.util.CachedVector2DSource

+
+
No usage of uk.me.webpigeon.util.CachedVector2DSource
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/class-use/Vector2D.html b/apidocs/uk/me/webpigeon/util/class-use/Vector2D.html new file mode 100644 index 0000000..1f30177 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/class-use/Vector2D.html @@ -0,0 +1,507 @@ + + + + + + +Uses of Class uk.me.webpigeon.util.Vector2D (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.util.Vector2D

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/package-frame.html b/apidocs/uk/me/webpigeon/util/package-frame.html new file mode 100644 index 0000000..6cc6194 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/package-frame.html @@ -0,0 +1,22 @@ + + + + + + +uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.util

+
+

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/util/package-summary.html b/apidocs/uk/me/webpigeon/util/package-summary.html new file mode 100644 index 0000000..f55b7ef --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/package-summary.html @@ -0,0 +1,150 @@ + + + + + + +uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.util

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/package-tree.html b/apidocs/uk/me/webpigeon/util/package-tree.html new file mode 100644 index 0000000..eb7493c --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/package-tree.html @@ -0,0 +1,140 @@ + + + + + + +uk.me.webpigeon.util Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/util/package-use.html b/apidocs/uk/me/webpigeon/util/package-use.html new file mode 100644 index 0000000..f74a733 --- /dev/null +++ b/apidocs/uk/me/webpigeon/util/package-use.html @@ -0,0 +1,216 @@ + + + + + + +Uses of Package uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.util

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/BehaviourEntity.html b/apidocs/uk/me/webpigeon/world/BehaviourEntity.html new file mode 100644 index 0000000..8e8352e --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/BehaviourEntity.html @@ -0,0 +1,343 @@ + + + + + + +BehaviourEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class BehaviourEntity

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/BehaviourRegistry.html b/apidocs/uk/me/webpigeon/world/BehaviourRegistry.html new file mode 100644 index 0000000..996459c --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/BehaviourRegistry.html @@ -0,0 +1,289 @@ + + + + + + +BehaviourRegistry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class BehaviourRegistry

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/DoubleWorld.html b/apidocs/uk/me/webpigeon/world/DoubleWorld.html new file mode 100644 index 0000000..65f991c --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/DoubleWorld.html @@ -0,0 +1,399 @@ + + + + + + +DoubleWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class DoubleWorld

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/Entity.html b/apidocs/uk/me/webpigeon/world/Entity.html new file mode 100644 index 0000000..3dc4bb0 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/Entity.html @@ -0,0 +1,358 @@ + + + + + + +Entity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class Entity

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/EntityFactory.html b/apidocs/uk/me/webpigeon/world/EntityFactory.html new file mode 100644 index 0000000..07863e8 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/EntityFactory.html @@ -0,0 +1,241 @@ + + + + + + +EntityFactory (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class EntityFactory

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/GrassEntity.html b/apidocs/uk/me/webpigeon/world/GrassEntity.html new file mode 100644 index 0000000..07bec6b --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/GrassEntity.html @@ -0,0 +1,307 @@ + + + + + + +GrassEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class GrassEntity

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/GridWorld.html b/apidocs/uk/me/webpigeon/world/GridWorld.html new file mode 100644 index 0000000..bea225d --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/GridWorld.html @@ -0,0 +1,430 @@ + + + + + + +GridWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class GridWorld

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/SteeringEntity.html b/apidocs/uk/me/webpigeon/world/SteeringEntity.html new file mode 100644 index 0000000..13e1061 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/SteeringEntity.html @@ -0,0 +1,327 @@ + + + + + + +SteeringEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class SteeringEntity

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/World.html b/apidocs/uk/me/webpigeon/world/World.html new file mode 100644 index 0000000..6a12d5d --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/World.html @@ -0,0 +1,419 @@ + + + + + + +World (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
uk.me.webpigeon.world
+

Class World

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/BehaviourEntity.html b/apidocs/uk/me/webpigeon/world/class-use/BehaviourEntity.html new file mode 100644 index 0000000..28a83c0 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/BehaviourEntity.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.BehaviourEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.BehaviourEntity

+
+
No usage of uk.me.webpigeon.world.BehaviourEntity
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/BehaviourRegistry.html b/apidocs/uk/me/webpigeon/world/class-use/BehaviourRegistry.html new file mode 100644 index 0000000..a972047 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/BehaviourRegistry.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.BehaviourRegistry (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.BehaviourRegistry

+
+
No usage of uk.me.webpigeon.world.BehaviourRegistry
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/DoubleWorld.html b/apidocs/uk/me/webpigeon/world/class-use/DoubleWorld.html new file mode 100644 index 0000000..26f6410 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/DoubleWorld.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.DoubleWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.DoubleWorld

+
+
No usage of uk.me.webpigeon.world.DoubleWorld
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/Entity.html b/apidocs/uk/me/webpigeon/world/class-use/Entity.html new file mode 100644 index 0000000..f0e9a2f --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/Entity.html @@ -0,0 +1,249 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.Entity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.Entity

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/EntityFactory.html b/apidocs/uk/me/webpigeon/world/class-use/EntityFactory.html new file mode 100644 index 0000000..0866a86 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/EntityFactory.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.EntityFactory (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.EntityFactory

+
+
No usage of uk.me.webpigeon.world.EntityFactory
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/GrassEntity.html b/apidocs/uk/me/webpigeon/world/class-use/GrassEntity.html new file mode 100644 index 0000000..5e5ce61 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/GrassEntity.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.GrassEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.GrassEntity

+
+
No usage of uk.me.webpigeon.world.GrassEntity
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/GridWorld.html b/apidocs/uk/me/webpigeon/world/class-use/GridWorld.html new file mode 100644 index 0000000..a2b9fef --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/GridWorld.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.GridWorld (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.GridWorld

+
+
No usage of uk.me.webpigeon.world.GridWorld
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/SteeringEntity.html b/apidocs/uk/me/webpigeon/world/class-use/SteeringEntity.html new file mode 100644 index 0000000..bd95337 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/SteeringEntity.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.SteeringEntity (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.SteeringEntity

+
+
No usage of uk.me.webpigeon.world.SteeringEntity
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/class-use/World.html b/apidocs/uk/me/webpigeon/world/class-use/World.html new file mode 100644 index 0000000..b76d571 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/class-use/World.html @@ -0,0 +1,172 @@ + + + + + + +Uses of Class uk.me.webpigeon.world.World (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
uk.me.webpigeon.world.World

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/package-frame.html b/apidocs/uk/me/webpigeon/world/package-frame.html new file mode 100644 index 0000000..be9ccf1 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/package-frame.html @@ -0,0 +1,29 @@ + + + + + + +uk.me.webpigeon.world (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + +

uk.me.webpigeon.world

+
+

Classes

+ +
+ + diff --git a/apidocs/uk/me/webpigeon/world/package-summary.html b/apidocs/uk/me/webpigeon/world/package-summary.html new file mode 100644 index 0000000..532b7d6 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/package-summary.html @@ -0,0 +1,190 @@ + + + + + + +uk.me.webpigeon.world (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package uk.me.webpigeon.world

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/package-tree.html b/apidocs/uk/me/webpigeon/world/package-tree.html new file mode 100644 index 0000000..0341964 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/package-tree.html @@ -0,0 +1,165 @@ + + + + + + +uk.me.webpigeon.world Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package uk.me.webpigeon.world

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/apidocs/uk/me/webpigeon/world/package-use.html b/apidocs/uk/me/webpigeon/world/package-use.html new file mode 100644 index 0000000..abf50f4 --- /dev/null +++ b/apidocs/uk/me/webpigeon/world/package-use.html @@ -0,0 +1,191 @@ + + + + + + +Uses of Package uk.me.webpigeon.world (Goldsmiths AIs stuff 0.0.1-SNAPSHOT API) + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
uk.me.webpigeon.world

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/css/maven-base.css b/css/maven-base.css new file mode 100644 index 0000000..53153e9 --- /dev/null +++ b/css/maven-base.css @@ -0,0 +1,155 @@ +body { + margin: 0px; + padding: 0px; +} +img { + border:none; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; +} +.xright, #bannerRight { + float:right; +} +#banner { + padding: 0px; +} +#banner img { + border: none; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#navcolumn li.none { + text-indent: -1em; + margin-left: 1em; +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} +#navcolumn img.imageLink, .imageLink { + padding-left: 0px; + padding-bottom: 0px; + padding-top: 0px; + padding-right: 2px; + border: 0px; + margin: 0px; +} diff --git a/css/maven-theme.css b/css/maven-theme.css new file mode 100644 index 0000000..c982168 --- /dev/null +++ b/css/maven-theme.css @@ -0,0 +1,141 @@ +body { + padding: 0px 0px 10px 0px; +} +body, td, select, input, li{ + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 13px; +} +code{ + font-family: Courier, monospace; + font-size: 13px; +} +a { + text-decoration: none; +} +a:link { + color:#36a; +} +a:visited { + color:#47a; +} +a:active, a:hover { + color:#69c; +} +#legend li.externalLink { + background: url(../images/external.png) left top no-repeat; + padding-left: 18px; +} +a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { + background: url(../images/external.png) right center no-repeat; + padding-right: 18px; +} +#legend li.newWindow { + background: url(../images/newwindow.png) left top no-repeat; + padding-left: 18px; +} +a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { + background: url(../images/newwindow.png) right center no-repeat; + padding-right: 18px; +} +h2 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} +h3 { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + color: #900; + background-color: #eee; + font-weight: normal; + font-size: large; +} +h4 { + padding: 4px 4px 4px 6px; + border: 1px solid #bbb; + color: #900; + background-color: #fff; + font-weight: normal; + font-size: large; +} +h5 { + padding: 4px 4px 4px 6px; + color: #900; + font-size: normal; +} +p { + line-height: 1.3em; + font-size: small; +} +#breadcrumbs { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background-color: #ccc; +} +#leftColumn { + margin: 10px 0 0 5px; + border: 1px solid #999; + background-color: #eee; +} +#navcolumn h5 { + font-size: smaller; + border-bottom: 1px solid #aaaaaa; + padding-top: 2px; + color: #000; +} + +table.bodyTable th { + color: white; + background-color: #bbb; + text-align: left; + font-weight: bold; +} + +table.bodyTable th, table.bodyTable td { + font-size: 1em; +} + +table.bodyTable tr.a { + background-color: #ddd; +} + +table.bodyTable tr.b { + background-color: #eee; +} + +.source { + border: 1px solid #999; +} +dl { + padding: 4px 4px 4px 6px; + border: 1px solid #aaa; + background-color: #ffc; +} +dt { + color: #900; +} +#organizationLogo img, #projectLogo img, #projectLogo span{ + margin: 8px; +} +#banner { + border-bottom: 1px solid #fff; +} +.errormark, .warningmark, .donemark, .infomark { + background: url(../images/icon_error_sml.gif) no-repeat; +} + +.warningmark { + background-image: url(../images/icon_warning_sml.gif); +} + +.donemark { + background-image: url(../images/icon_success_sml.gif); +} + +.infomark { + background-image: url(../images/icon_info_sml.gif); +} + diff --git a/css/print.css b/css/print.css new file mode 100644 index 0000000..f09d546 --- /dev/null +++ b/css/print.css @@ -0,0 +1,7 @@ +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/css/site.css b/css/site.css new file mode 100644 index 0000000..055e7e2 --- /dev/null +++ b/css/site.css @@ -0,0 +1 @@ +/* You can override this file with your own styles */ \ No newline at end of file diff --git a/dependencies.html b/dependencies.html new file mode 100644 index 0000000..9d596f0 --- /dev/null +++ b/dependencies.html @@ -0,0 +1,280 @@ + + + + + + Goldsmiths AIs stuff - Project Dependencies + + + + + + + + + +
+ +
+
+
+ +
+

Project Dependencies

+
+

test

+

The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

+ + + + + + + + + + + + +
GroupIdArtifactIdVersionTypeLicense
junitjunit4.11jarCommon Public License Version 1.0
+
+

Project Transitive Dependencies

+

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

+
+

test

+

The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

+ + + + + + + + + + + + +
GroupIdArtifactIdVersionTypeLicense
org.hamcresthamcrest-core1.3jarNew BSD License
+
+

Project Dependency Graph

+ +
+

Dependency Tree

+
    +
  • uk.me.webpigeon.ais:ai-tools:jar:0.0.1-SNAPSHOT Information +
      +
    • junit:junit:jar:4.11 (test) Information +
        +
      • org.hamcrest:hamcrest-core:jar:1.3 (test) Information
+
+

Licenses

+

Unknown: Goldsmiths AIs stuff

+

New BSD License: Hamcrest Core

+

Common Public License Version 1.0: JUnit

+
+

Dependency File Details

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilenameSizeEntriesClassesPackagesJava VersionDebug Information
junit-4.11.jar245.04 kB266233281.5Yes
hamcrest-core-1.3.jar45.02 kB524531.5Yes
TotalSizeEntriesClassesPackagesJava VersionDebug Information
2290.06 kB318278311.52
test: 2test: 290.06 kBtest: 318test: 278test: 31-test: 2
+
+

Dependency Repository Locations

+ + + + + + + + + + +
Repo IDURLReleaseSnapshot
centralhttp://repo.maven.apache.org/maven2YesNo
+

Repository locations for each of the Dependencies.

+ + + + + + + + + + + + + + + +
Artifactcentral
junit:junit:jar:4.11Found at http://repo.maven.apache.org/maven2
org.hamcrest:hamcrest-core:jar:1.3Found at http://repo.maven.apache.org/maven2
Totalcentral
2 (test: 2)2
+
+
+
+
+
+ + + diff --git a/dependency-convergence.html b/dependency-convergence.html new file mode 100644 index 0000000..a359c6a --- /dev/null +++ b/dependency-convergence.html @@ -0,0 +1,136 @@ + + + + + + Goldsmiths AIs stuff - Dependency Convergence + + + + + + + + + +
+ +
+
+
+
+

Dependency Convergence

+ + + +
+ Legend: +
errorAt least one dependency has a differing version of the dependency or has SNAPSHOT dependencies.

+ + + + + + + + + + + + + + + + + + +
+ Statistics: +
Number of dependencies (NOD):2
Number of unique artifacts (NOA):2
Number of version-conflicting artifacts (NOC):0
Number of SNAPSHOT artifacts (NOS):0
Convergence (NOD/NOA):success 100 %
Ready for release (100 % convergence and no SNAPSHOTS):success Success
+
+

Dependencies used in this project

+
+
+
+
+
+ + + diff --git a/dependency-info.html b/dependency-info.html new file mode 100644 index 0000000..cf2d540 --- /dev/null +++ b/dependency-info.html @@ -0,0 +1,143 @@ + + + + + + Goldsmiths AIs stuff - Dependency Information + + + + + + + + + +
+ +
+
+
+
+

Dependency Information

+
+

Apache Maven

+
+
<dependency>
+  <groupId>uk.me.webpigeon.ais</groupId>
+  <artifactId>ai-tools</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+</dependency>
+
+

Apache Buildr

+
+
'uk.me.webpigeon.ais:ai-tools:jar:0.0.1-SNAPSHOT'
+
+

Apache Ivy

+
+
<dependency org="uk.me.webpigeon.ais" name="ai-tools" rev="0.0.1-SNAPSHOT">
+  <artifact name="ai-tools" type="jar" />
+</dependency>
+
+

Groovy Grape

+
+
@Grapes(
+@Grab(group='uk.me.webpigeon.ais', module='ai-tools', version='0.0.1-SNAPSHOT')
+)
+
+

Grails

+
+
compile 'uk.me.webpigeon.ais:ai-tools:0.0.1-SNAPSHOT'
+
+

Leiningen

+
+
[uk.me.webpigeon.ais/ai-tools "0.0.1-SNAPSHOT"]
+
+

SBT

+
+
libraryDependencies += "uk.me.webpigeon.ais" % "ai-tools" % "0.0.1-SNAPSHOT"
+
+
+
+
+
+ + + diff --git a/images/close.gif b/images/close.gif new file mode 100644 index 0000000..1c26bbc Binary files /dev/null and b/images/close.gif differ diff --git a/images/collapsed.gif b/images/collapsed.gif new file mode 100644 index 0000000..6e71084 Binary files /dev/null and b/images/collapsed.gif differ diff --git a/images/expanded.gif b/images/expanded.gif new file mode 100644 index 0000000..0fef3d8 Binary files /dev/null and b/images/expanded.gif differ diff --git a/images/external.png b/images/external.png new file mode 100644 index 0000000..3f999fc Binary files /dev/null and b/images/external.png differ diff --git a/images/icon_error_sml.gif b/images/icon_error_sml.gif new file mode 100644 index 0000000..61132ef Binary files /dev/null and b/images/icon_error_sml.gif differ diff --git a/images/icon_info_sml.gif b/images/icon_info_sml.gif new file mode 100644 index 0000000..c6cb9ad Binary files /dev/null and b/images/icon_info_sml.gif differ diff --git a/images/icon_success_sml.gif b/images/icon_success_sml.gif new file mode 100644 index 0000000..52e85a4 Binary files /dev/null and b/images/icon_success_sml.gif differ diff --git a/images/icon_warning_sml.gif b/images/icon_warning_sml.gif new file mode 100644 index 0000000..873bbb5 Binary files /dev/null and b/images/icon_warning_sml.gif differ diff --git a/images/logos/build-by-maven-black.png b/images/logos/build-by-maven-black.png new file mode 100644 index 0000000..919fd0f Binary files /dev/null and b/images/logos/build-by-maven-black.png differ diff --git a/images/logos/build-by-maven-white.png b/images/logos/build-by-maven-white.png new file mode 100644 index 0000000..7d44c9c Binary files /dev/null and b/images/logos/build-by-maven-white.png differ diff --git a/images/logos/maven-feather.png b/images/logos/maven-feather.png new file mode 100644 index 0000000..b5ada83 Binary files /dev/null and b/images/logos/maven-feather.png differ diff --git a/images/newwindow.png b/images/newwindow.png new file mode 100644 index 0000000..6287f72 Binary files /dev/null and b/images/newwindow.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..69fcc33 --- /dev/null +++ b/index.html @@ -0,0 +1,108 @@ + + + + + + Goldsmiths AIs stuff - About + + + + + + + + + +
+ +
+
+
+
+

About Goldsmiths AIs stuff

+

Goldsmiths AI suite

+
+
+
+
+
+ + + diff --git a/plugin-management.html b/plugin-management.html new file mode 100644 index 0000000..461cd40 --- /dev/null +++ b/plugin-management.html @@ -0,0 +1,128 @@ + + + + + + Goldsmiths AIs stuff - Project Plugin Management + + + + + + + + + +
+ +
+
+
+
+

Project Plugin Management

+ + + + + + + + + + + + + + + + + + + + +
GroupIdArtifactIdVersion
org.apache.maven.pluginsmaven-antrun-plugin1.3
org.apache.maven.pluginsmaven-assembly-plugin2.2-beta-5
org.apache.maven.pluginsmaven-dependency-plugin2.8
org.apache.maven.pluginsmaven-release-plugin2.3.2
+
+
+
+
+
+ + + diff --git a/plugins.html b/plugins.html new file mode 100644 index 0000000..0eb3fc4 --- /dev/null +++ b/plugins.html @@ -0,0 +1,167 @@ + + + + + + Goldsmiths AIs stuff - Project Build Plugins + + + + + + + + + +
+ +
+
+
+
+

Project Build Plugins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GroupIdArtifactIdVersion
com.github.githubsite-maven-plugin0.11
org.apache.maven.pluginsmaven-clean-plugin2.5
org.apache.maven.pluginsmaven-compiler-plugin3.2
org.apache.maven.pluginsmaven-deploy-plugin2.7
org.apache.maven.pluginsmaven-install-plugin2.4
org.apache.maven.pluginsmaven-jar-plugin2.4
org.apache.maven.pluginsmaven-javadoc-plugin2.10.1
org.apache.maven.pluginsmaven-resources-plugin2.6
org.apache.maven.pluginsmaven-site-plugin3.3
org.apache.maven.pluginsmaven-source-plugin2.4
org.apache.maven.pluginsmaven-surefire-plugin2.12.4
+
+

Project Report Plugins

+ + + + + + + + +
GroupIdArtifactIdVersion
org.apache.maven.pluginsmaven-javadoc-plugin2.10.1
+
+
+
+
+
+ + + diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 10290e4..0000000 --- a/pom.xml +++ /dev/null @@ -1,105 +0,0 @@ - - 4.0.0 - uk.me.webpigeon.ais - ai-tools - 0.0.1-SNAPSHOT - Goldsmiths AIs stuff - Goldsmiths AI suite - - - https://github.com/unitycoders/ai-tools - scm:git:git://github.com/unitycoders/ai-tools.git - scm:git:git@github.com:unitycoders/ai-tools.git - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.2 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.1 - - - - jar - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - true - true - - - - - - org.apache.maven.plugins - maven-source-plugin - - - - jar - - - - - - com.github.github - site-maven-plugin - 0.11 - - Building site for ${project.version} - github - - - - - site - - site - - - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.1 - - ${basedir}/src/main/javadoc/stylesheet.css - public - - - - - - - - junit - junit - 4.11 - test - - - 2015 - diff --git a/project-info.html b/project-info.html new file mode 100644 index 0000000..00b7b93 --- /dev/null +++ b/project-info.html @@ -0,0 +1,138 @@ + + + + + + Goldsmiths AIs stuff - Project Information + + + + + + + + + +
+ +
+
+
+
+

Project Information

+

This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

+
+

Overview

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DocumentDescription
DependenciesThis document lists the project's dependencies and provides information on each dependency.
Dependency ConvergenceThis document presents the convergence of dependency versions across the entire project, and its sub modules.
Dependency InformationThis document describes how to to include this project as a dependency using various dependency management tools.
AboutGoldsmiths AI suite
Plugin ManagementThis document lists the plugins that are defined through pluginManagement.
Project PluginsThis document lists the build plugins and the report plugins used by this project.
Source RepositoryThis document lists ways to access the online source repository.
Project SummaryThis document lists other related information of this project
+
+
+
+
+
+ + + diff --git a/project-reports.html b/project-reports.html new file mode 100644 index 0000000..e435d26 --- /dev/null +++ b/project-reports.html @@ -0,0 +1,102 @@ + + + + + + Goldsmiths AIs stuff - Generated Reports + + + + + + + + + +
+ +
+
+
+
+

Generated Reports

+

This document provides an overview of the various reports that are automatically generated by Maven . Each report is briefly described below.

+
+

Overview

+ + + + + + + + + +
DocumentDescription
JavaDocsJavaDoc API documentation.
Test JavaDocsTest JavaDoc API documentation.
+
+
+
+
+
+ + + diff --git a/project-summary.html b/project-summary.html new file mode 100644 index 0000000..0830be0 --- /dev/null +++ b/project-summary.html @@ -0,0 +1,146 @@ + + + + + + Goldsmiths AIs stuff - Project Summary + + + + + + + + + +
+ +
+
+
+
+

Project Summary

+
+

Project Information

+ + + + + + + + + + + + +
FieldValue
NameGoldsmiths AIs stuff
DescriptionGoldsmiths AI suite
Homepage-
+
+

Project Organization

+

This project does not belong to an organization.

+
+

Build Information

+ + + + + + + + + + + + + + + + + + +
FieldValue
GroupIduk.me.webpigeon.ais
ArtifactIdai-tools
Version0.0.1-SNAPSHOT
Typejar
Java Version1.7
+
+
+
+
+
+ + + diff --git a/source-repository.html b/source-repository.html new file mode 100644 index 0000000..acf9802 --- /dev/null +++ b/source-repository.html @@ -0,0 +1,126 @@ + + + + + + Goldsmiths AIs stuff - Source Repository + + + + + + + + + +
+ +
+
+
+
+

Overview

+

This project uses Git to manage its source code. Instructions on Git use can be found at http://git-scm.com/documentation.

+
+

Web Browser Access

+

The following is a link to a browsable version of the source repository:

+
+
+

Anonymous Access

+

The source can be checked out anonymously from Git with this command (See http://git-scm.com/docs/git-clone):

+
+
$ git clone git://github.com/unitycoders/ai-tools.git
+
+

Developer Access

+

Only project developers can access the Git tree via this method (See http://git-scm.com/docs/git-clone).

+
+
$ git clone git@github.com:unitycoders/ai-tools.git
+
+

Access from Behind a Firewall

+

Refer to the documentation of the SCM used for more information about access behind a firewall.

+
+
+
+
+
+ + + diff --git a/src/main/java/uk/me/webpigeon/behaviour/Decorator.java b/src/main/java/uk/me/webpigeon/behaviour/Decorator.java deleted file mode 100644 index 52dab17..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/Decorator.java +++ /dev/null @@ -1,48 +0,0 @@ -package uk.me.webpigeon.behaviour; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * Created by Piers on 09/03/2015. - */ -public abstract class Decorator extends TreeNode { - - // Use this link to the single child not the children list - TreeNode child; - - public Decorator(TreeNode child) { - super(0); - this.child = child; - // Call the super - this.addChild will except - super.addChild(child); - } - - /** - * Cannot add children to a Decorator - * @param node the node to add - */ - @Override - protected void addChild(TreeNode node) { - throw new IllegalStateException("Decorators can't have new children"); - } - - /** - * Always returns the child of the decorator - * @param n A number that will promptly be ignored by this function - * @return The child of the decorator - regardless of the value of n - */ - @Override - public TreeNode getChild(int n) { - return this.child; - } - - /** - * Returns the number of children (1) - * @return (1) its always 1 - */ - @Override - public int getChildrenSize() { - return 1; - } -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/InverseDecorator.java b/src/main/java/uk/me/webpigeon/behaviour/InverseDecorator.java deleted file mode 100644 index ca6b861..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/InverseDecorator.java +++ /dev/null @@ -1,16 +0,0 @@ -package uk.me.webpigeon.behaviour; - -/** - * Created by Piers on 09/03/2015. - */ -public class InverseDecorator extends Decorator{ - - public InverseDecorator(TreeNode child) { - super(child); - } - - @Override - public Boolean eval() { - return !child.eval(); - } -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/NDSelectorNode.java b/src/main/java/uk/me/webpigeon/behaviour/NDSelectorNode.java deleted file mode 100644 index 2f60c15..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/NDSelectorNode.java +++ /dev/null @@ -1,23 +0,0 @@ -package uk.me.webpigeon.behaviour; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Nondeterministic Selector Node - * - * Evaluate all nodes in order from 0 to random, if any node returns true - * stop evaluating and returns true. If all nodes return false then this node - * returns false. - */ -public class NDSelectorNode extends SelectorNode { - - public Collection getChildren() { - List collection = new ArrayList(super.getChildren()); - Collections.shuffle(collection); - return collection; - } - -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/NDSequenceNode.java b/src/main/java/uk/me/webpigeon/behaviour/NDSequenceNode.java deleted file mode 100644 index 0dff40e..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/NDSequenceNode.java +++ /dev/null @@ -1,23 +0,0 @@ -package uk.me.webpigeon.behaviour; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Nondeterministic Sequence Node - * - * Evaluate all nodes in order from 0 to random, if all nodes return true - * then return true, else return false. If any node returns false then this node - * returns false and evaluation stops immediately. - */ -public class NDSequenceNode extends SequenceNode { - - public Collection getChildren() { - List collection = new ArrayList(super.getChildren()); - Collections.shuffle(collection); - return collection; - } - -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/RepeatDecorator.java b/src/main/java/uk/me/webpigeon/behaviour/RepeatDecorator.java deleted file mode 100644 index 834cb60..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/RepeatDecorator.java +++ /dev/null @@ -1,22 +0,0 @@ -package uk.me.webpigeon.behaviour; - -/** - * Created by Piers on 09/03/2015. - */ -public class RepeatDecorator extends Decorator { - private int repetitions; - private int ticksSoFar = 0; - - public RepeatDecorator(TreeNode child, int repetitions) { - super(child); - this.repetitions = repetitions; - } - - @Override - public Boolean eval() { - if (ticksSoFar < repetitions) { - ticksSoFar++; - } - return child.eval(); - } -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/SelectorNode.java b/src/main/java/uk/me/webpigeon/behaviour/SelectorNode.java deleted file mode 100644 index a1b9123..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/SelectorNode.java +++ /dev/null @@ -1,41 +0,0 @@ -package uk.me.webpigeon.behaviour; - -/** - * Selector Node - * - * Evaluate all nodes in order from 0 to N, if any node returns true - * stop evaluating and returns true. If all nodes return false then this node - * returns false. - */ -public class SelectorNode extends TreeNode { - - public SelectorNode(TreeNode... children) { - super(children.length); - for (TreeNode child : children) { - addChild(child); - } - } - - /** - * Evaluate all child nodes in order from 0 ... size. - * - * When any child node evaluates successfully, this method immediately - * returns True. - * - * @return true if any node evaluates successfully - */ - @Override - public Boolean eval() { - - Boolean result = false; - for (TreeNode child : getChildren()) { - result = child.eval(); - if (result) { - return true; - } - } - - return false; - } - -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/SequenceNode.java b/src/main/java/uk/me/webpigeon/behaviour/SequenceNode.java deleted file mode 100644 index cd99e24..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/SequenceNode.java +++ /dev/null @@ -1,41 +0,0 @@ -package uk.me.webpigeon.behaviour; - -/** - * Sequence Node - * - * Evaluate all nodes in order from 0 to N, if all nodes return true - * then return true, else return false. If any node returns false then this node - * returns false and evaluation stops immediately. - */ -public class SequenceNode extends TreeNode { - - public SequenceNode(TreeNode... children) { - super(children.length); - for (TreeNode child : children) { - addChild(child); - } - } - - /** - * Evaluate all child nodes in order from 0 ... size. - * - * If any child fails to evaluate then evaluation of subsequent - * children stop and this method returns false. - * - * @return true if all nodes evaluate successfully - */ - @Override - public Boolean eval() { - - Boolean result; - for (TreeNode child : getChildren()) { - result = child.eval(); - if (!result) { - return false; - } - } - - return true; - } - -} diff --git a/src/main/java/uk/me/webpigeon/behaviour/TreeNode.java b/src/main/java/uk/me/webpigeon/behaviour/TreeNode.java deleted file mode 100644 index e4b2dfd..0000000 --- a/src/main/java/uk/me/webpigeon/behaviour/TreeNode.java +++ /dev/null @@ -1,105 +0,0 @@ -package uk.me.webpigeon.behaviour; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Base Behaviour Tree Node. - * - * This node is used as the basis for all leaf and non-leaf nodes in our - * behaviour tree implementation. - */ -public abstract class TreeNode { - private List children; - - /** - * Create a new TreeNode. - * - * @param childrenC the list of child nodes - */ - public TreeNode(TreeNode... childrenC) { - this.children = new ArrayList(Arrays.asList(childrenC)); - } - - /** - * Create a new TreeNode. - * - * @param size the initial size of the backing arraylist for children - */ - public TreeNode(int size) { - this.children = new ArrayList(size); - } - - /** - * Get all children of this node. - * - * This returns an empty collection in the event that this node is a - * leaf node. The collection returned is not modifiable. - * - * @return the child nodes of this object - */ - public Collection getChildren() { - return Collections.unmodifiableCollection(children); - } - - /** - * Add a child node to this Node. - * - * The child will be added to the end of the list of current nodes. - * - * @param node the node to add - */ - protected void addChild(TreeNode node) { - assert node != null; - children.add(node); - } - - /** - * Get the nth child from this node. - * - * This method assumes the child exists and is non-zero. Passing it a - * non-existent child ID will result in undefined behaviour. - * - * @param n the number of the child to look for - * @return the child node - */ - public TreeNode getChild(int n) { - assert n >= children.size(); - assert n < 0; - return children.get(n); - } - - /** - * Return the number of children this node has. - * - * If this node is a leaf node, then this method will return 0. - * - * @return the number of children this node has - */ - public int getChildrenSize() { - return children.size(); - } - - /** - * If this node has no children, this returns True. - * - * @return true if this node has no children, false otherwise - */ - public boolean isLeaf() { - return children.isEmpty(); - } - - /** - * Evaluate this node and return true if it was successfully evaluated. - * - * It's up to nodes to define what they consider to be "successfully evaluated". - * You should check the Javadoc for the node type. - * - * @return true if successful, false otherwise. - */ - public abstract Boolean eval(); - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/BaseStats.java b/src/main/java/uk/me/webpigeon/joseph/BaseStats.java deleted file mode 100644 index 85b6b41..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/BaseStats.java +++ /dev/null @@ -1,8 +0,0 @@ -package uk.me.webpigeon.joseph; - -public interface BaseStats { - public static final double BASE_SAT = 10; - public static final double BASE_HUNGER = 0.01; - public static final double BASE_SIGHT = 100; - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/BehavourFactory.java b/src/main/java/uk/me/webpigeon/joseph/BehavourFactory.java deleted file mode 100644 index 9525595..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/BehavourFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package uk.me.webpigeon.joseph; - -import uk.me.webpigeon.behaviour.SequenceNode; -import uk.me.webpigeon.behaviour.TreeNode; -import uk.me.webpigeon.steering.SeekBehaviour; -import uk.me.webpigeon.steering.SteeringBehaviour; -import uk.me.webpigeon.util.Vector2D; - -public class BehavourFactory { - - public static SteeringBehaviour buildEatBehavour() { - SteeringBehaviour findPlant = new SeekBehaviour(new Vector2D(10,10)); - return findPlant; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/CowPopulationManager.java b/src/main/java/uk/me/webpigeon/joseph/CowPopulationManager.java deleted file mode 100644 index 812649f..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/CowPopulationManager.java +++ /dev/null @@ -1,105 +0,0 @@ -package uk.me.webpigeon.joseph; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.EntityFactory; -import uk.me.webpigeon.world.World; -import uk.me.webpigeon.world.WorldComponent; - -public class CowPopulationManager implements WorldComponent { - private double epsilon = 0.02; - private int cowPopulation; - private List cows; - private List newCows; - - public CowPopulationManager(int cowPopulation) { - this.cowPopulation = cowPopulation; - this.cows = new ArrayList(); - this.newCows = new ArrayList(); - } - - public void update(World world, int delta) { - - Iterator cowItr = cows.iterator(); - while (cowItr.hasNext()) { - Cow cow = cowItr.next(); - - //remove dead cows from our population - if(cow.isDead()) { - cowItr.remove(); - } - } - - // add any outstanding cows - addWaitingCows(world); - } - - private void addWaitingCows(World world) { - Iterator cowItr = newCows.iterator(); - while (cowItr.hasNext()) { - Cow cow = cowItr.next(); - cows.add(cow); - world.addEntity(cow); - cowItr.remove(); - } - } - - public void addMoreCows(int cowCount, World world) { - // find out now many new cows we need - //int replacementCowsNeeded = cowPopulation - cows.size(); - for (int i=0; i hunger = new InvertNode(new CowProperty(cow, Property.SATURATION)); - TreeNode quadtraic = new QuadraticCurve(hunger, 1, 0.2); - return new Eat(quadtraic); - } - - public static Action buildRunAway(Cow cow, World world) { - TreeNode hunterDist = new DistanceToEntity(cow, world, Tag.HUNTER); - TreeNode inverted = new InvertNode(hunterDist); - - return new EvadePreditor(new QuadraticCurve(inverted, 1, 0.8), Tag.HUNTER); - } - - public static Action buildWanderingBehavour(Cow cow, World world, UtilitySystem util) { - TreeNode foodDist = new DistanceToEntity(cow, world, Tag.GRASS); - TreeNode hunterDist = new InvertNode(new DistanceToEntity(cow, world, Tag.HUNTER)); - - SteeringBehaviour behaviour = new WanderingBehaviour(); - return new SteeringAction(new MathNode('-', foodDist, hunterDist), behaviour); - } - - public static Action buildReproduceBehavour(CowPopulationManager pop, UtilitySystem util) { - AbstractTreeNode currPop = new CowPopulationStats("current", pop); - AbstractTreeNode maxPop = new CowPopulationStats("max", pop); - MathNode div = new MathNode('/', maxPop, currPop); - return new MakeBabbyCow(div, pop); - } - - public static void applyCowActions(Cow cow, World world, CowPopulationManager pop, UtilitySystem util) { - //util.addAction(buildReproduceBehavour(pop, util)); - util.addAction(buildEatAction(cow, util)); - util.addAction(buildWanderingBehavour(cow, world, util)); - util.addAction(buildRunAway(cow, world)); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/CowPopulationStats.java b/src/main/java/uk/me/webpigeon/joseph/cow/CowPopulationStats.java deleted file mode 100644 index 24f0f4a..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/CowPopulationStats.java +++ /dev/null @@ -1,28 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; - -public class CowPopulationStats extends AbstractTreeNode { - private CowPopulationManager pop; - private String stat; - - public CowPopulationStats(String stat, CowPopulationManager pop) { - this.stat = stat; - this.pop = pop; - } - - @Override - public Double eval() { - if ("max".equals(stat)) { - return (double) pop.getPopMax(); - } - - if ("current".equals(stat)) { - return (double)pop.getPop(); - } - - return 0.0; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/CowProperty.java b/src/main/java/uk/me/webpigeon/joseph/cow/CowProperty.java deleted file mode 100644 index 9bb29df..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/CowProperty.java +++ /dev/null @@ -1,20 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; - -public class CowProperty extends AbstractTreeNode { - private Cow cow; - private Property prop; - - public CowProperty(Cow cow, Property prop) { - this.cow = cow; - this.prop = prop; - } - - @Override - public Double eval() { - return cow.getValue(prop, 0) / cow.getLimit(prop, 1); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/DistanceToEntity.java b/src/main/java/uk/me/webpigeon/joseph/cow/DistanceToEntity.java deleted file mode 100644 index 05e469f..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/DistanceToEntity.java +++ /dev/null @@ -1,51 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.Tag; -import uk.me.webpigeon.world.World; - -public class DistanceToEntity implements TreeNode { - private Entity us; - private World world; - private Tag type; - - public DistanceToEntity(Entity us, World world, Tag type) { - this.us = us; - this.world = world; - this.type = type; - } - - @Override - public void addChild(TreeNode child) { - throw new IllegalArgumentException("Cannot add children to leaf nodes"); - } - - @Override - public int getChildCount() { - return 0; - } - - @Override - public boolean isLeaf() { - return true; - } - - @Override - public Double eval() { - Entity other = world.getNearestEntityOfType(us, type); - if(other == null) { - return 1.0; - } - - double maxSight = us.getLimit(Property.SIGHT_RANGE, 100); - double distance = us.getLocation().dist(other.getLocation()); - if (distance > maxSight) { - return 1.0; //out of range - } - - return distance/maxSight; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/Eat.java b/src/main/java/uk/me/webpigeon/joseph/cow/Eat.java deleted file mode 100644 index c65fdd9..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/Eat.java +++ /dev/null @@ -1,39 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.joseph.utility.Action; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.steering.SeekBehaviour; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.GrassEntity; -import uk.me.webpigeon.world.Tag; -import uk.me.webpigeon.world.World; - -public class Eat extends TargetingAction { - private static final Double EAT_RANGE = 2.0; - - public Eat(TreeNode utilFunction) { - super(utilFunction, new SeekBehaviour(null), Tag.GRASS); - } - - @Override - protected void targetingComplete(World world, Entity target) { - if (target == null || target.isDead()) { - return; - } - - double currSat = us.getValue(Property.SATURATION, 0); - currSat += target.getHealth(); - us.setValue(Property.SATURATION, currSat); - world.removeEntity(target); - } - - @Override - protected boolean isCorrectDistance(Entity us, Entity target) { - Vector2D dest = target.getLocation(); - return dest.dist(us.getLocation()) <= EAT_RANGE; - } -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/EvadePreditor.java b/src/main/java/uk/me/webpigeon/joseph/cow/EvadePreditor.java deleted file mode 100644 index 652b08e..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/EvadePreditor.java +++ /dev/null @@ -1,28 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.joseph.utility.Action; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.steering.FleeBehaviour; -import uk.me.webpigeon.steering.SeekBehaviour; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.Tag; -import uk.me.webpigeon.world.World; - -public class EvadePreditor extends TargetingAction { - - public EvadePreditor(TreeNode utilCalc, Tag targetType) { - super(utilCalc, new FleeBehaviour(null), targetType); - } - - @Override - protected boolean isCorrectDistance(Entity us, Entity target) { - double safeDistance = us.getValue(Property.SIGHT_RANGE, 100); - Vector2D targetLocation = target.getLocation(); - return (targetLocation.dist(us.getLocation()) > safeDistance); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/InvertNode.java b/src/main/java/uk/me/webpigeon/joseph/cow/InvertNode.java deleted file mode 100644 index 3ae2ce0..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/InvertNode.java +++ /dev/null @@ -1,33 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; - -public class InvertNode implements TreeNode { - private TreeNode child; - - public InvertNode(TreeNode child) { - this.child = child; - } - - @Override - public Double eval() { - return 1 - child.eval(); - } - - @Override - public void addChild(TreeNode child) { - throw new RuntimeException(); - } - - @Override - public int getChildCount() { - return 1; - } - - @Override - public boolean isLeaf() { - return false; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/MakeBabbyCow.java b/src/main/java/uk/me/webpigeon/joseph/cow/MakeBabbyCow.java deleted file mode 100644 index 8b2b4a1..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/MakeBabbyCow.java +++ /dev/null @@ -1,33 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.joseph.utility.Action; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.World; - -public class MakeBabbyCow extends Action { - private CowPopulationManager population; - private boolean cowAdded; - - public MakeBabbyCow(TreeNode utilCalc, CowPopulationManager population) { - super(utilCalc); - this.population = population; - } - - @Override - public void executeStep(Entity entity, World world) { - if (!cowAdded) { - Cow cow = (Cow)entity; - population.addCow(world, cow.getGenome()); - cowAdded = true; - } - } - - @Override - public void notifyStarted(Entity cow) { - cowAdded = false; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/Property.java b/src/main/java/uk/me/webpigeon/joseph/cow/Property.java deleted file mode 100644 index 67c71a2..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/Property.java +++ /dev/null @@ -1,8 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -public enum Property { - SATURATION, - SIGHT_RANGE, - METABOLISM, - AGE -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/SteeringAction.java b/src/main/java/uk/me/webpigeon/joseph/cow/SteeringAction.java deleted file mode 100644 index 270f09a..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/SteeringAction.java +++ /dev/null @@ -1,40 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.joseph.utility.Action; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.steering.SteeringBehaviour; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.World; - -public class SteeringAction extends Action { - final SteeringBehaviour behaviour; - - public SteeringAction(TreeNode utilCalc, SteeringBehaviour behaviour) { - super(utilCalc); - this.behaviour = behaviour; - } - - @Override - public void executeStep(Entity entity, World world) { - Vector2D targetForce = behaviour.process(); - entity.setVelocity(targetForce); - } - - @Override - public void notifyStarted(Entity entity) { - behaviour.bind(entity); - } - - public String toString() { - return "Action["+behaviour+"]"; - } - - @Override - public void debugDraw(Graphics2D g) { - behaviour.debugDraw(g); - } -} diff --git a/src/main/java/uk/me/webpigeon/joseph/cow/TargetingAction.java b/src/main/java/uk/me/webpigeon/joseph/cow/TargetingAction.java deleted file mode 100644 index 8574fef..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/cow/TargetingAction.java +++ /dev/null @@ -1,72 +0,0 @@ -package uk.me.webpigeon.joseph.cow; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.joseph.utility.Action; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.steering.FleeBehaviour; -import uk.me.webpigeon.steering.TargetedBehavour; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.Tag; -import uk.me.webpigeon.world.World; - -public abstract class TargetingAction extends Action { - private TargetedBehavour targeting; - protected Entity us; - private Entity target; - private Tag targetType; - - public TargetingAction(TreeNode utilCalc, TargetedBehavour targeting, Tag type) { - super(utilCalc); - this.targeting = targeting; - this.targetType = type; - } - - @Override - public void executeStep(Entity entity, World world) { - if (target == null) { - target = getTarget(world); - } - - if (target == null || target.isDead() || isCorrectDistance(us, target)) { - targetingComplete(world, target); - target = null; - targeting.setTarget(null); - entity.setVelocity(new Vector2D(0,0)); - } else { - targeting.setTarget(target.getLocation()); - Vector2D force = targeting.process(); - entity.setVelocity(force); - } - } - - protected void targetingComplete(World world, Entity target) {} - protected abstract boolean isCorrectDistance(Entity us, Entity target); - - protected Entity getTarget(World world) { - Entity newTarget = world.getNearestEntityOfType(us, targetType); - if (newTarget == null) { - return null; - } - - double maxVisibleDistance = us.getValue(Property.SIGHT_RANGE, 100); - double distanceToTarget = newTarget.getLocation().dist(us.getLocation()); - if (distanceToTarget > maxVisibleDistance) { - return null; - } - return newTarget; - } - - @Override - public void notifyStarted(Entity entity) { - this.us = entity; - targeting.bind(entity); - } - - public void debugDraw(Graphics2D g) { - if (target != null) { - targeting.debugDraw(g); - } - } -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/Action.java b/src/main/java/uk/me/webpigeon/joseph/utility/Action.java deleted file mode 100644 index 175f157..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/Action.java +++ /dev/null @@ -1,37 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.World; - -public class Action { - private TreeNode utilCalc; - - public Action(TreeNode utilCalc) { - this.utilCalc = utilCalc; - } - - public void executeStep(Entity entity, World world) { - - } - - public boolean isComplete() { - return true; - } - - public double getScore() { - return utilCalc.eval(); - } - - public void notifyStarted(Entity cow) { - - } - - public void debugDraw(Graphics2D g) { - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/LogisticCurve.java b/src/main/java/uk/me/webpigeon/joseph/utility/LogisticCurve.java deleted file mode 100644 index 3d88a0a..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/LogisticCurve.java +++ /dev/null @@ -1,18 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.joseph.utility.trees.UtilCurve; - -public class LogisticCurve extends UtilCurve { - - public LogisticCurve(TreeNode child) { - super(child); - } - - @Override - public Double eval() { - // TODO Auto-generated method stub - return 0.0; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/MathNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/MathNode.java deleted file mode 100644 index 95c6540..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/MathNode.java +++ /dev/null @@ -1,53 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; - -public class MathNode implements TreeNode { - private char opr; - private TreeNode left; - private TreeNode right; - - public MathNode(char opr, TreeNode sub, TreeNode right){ - this.opr = opr; - this.left = sub; - this.right = right; - } - - @Override - public Double eval() { - switch (opr) { - case '+': - return left.eval() + right.eval(); - - case '-': - return left.eval() - right.eval(); - - case '/': - return left.eval() / right.eval(); - - case '*': - return left.eval() * right.eval(); - - default: - return null; - } - } - - @Override - public void addChild(TreeNode child) { - throw new IllegalArgumentException("Cannot modify child nodes"); - } - - @Override - public int getChildCount() { - return 2; - } - - @Override - public boolean isLeaf() { - return false; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/MeanNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/MeanNode.java deleted file mode 100644 index 8248d94..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/MeanNode.java +++ /dev/null @@ -1,24 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; - -public class MeanNode extends AbstractTreeNode { - - public MeanNode(TreeNode ... children) { - for (TreeNode child : children) { - addChild(child); - } - } - - @Override - public Double eval() { - double total = 0.0; - for (TreeNode node : children) { - total += node.eval(); - } - - return total / children.size(); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/QuadraticCurve.java b/src/main/java/uk/me/webpigeon/joseph/utility/QuadraticCurve.java deleted file mode 100644 index 8502fdb..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/QuadraticCurve.java +++ /dev/null @@ -1,21 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import uk.me.webpigeon.joseph.utility.trees.TreeNode; -import uk.me.webpigeon.joseph.utility.trees.UtilCurve; - -public class QuadraticCurve extends UtilCurve { - private double m; - private double k; - - public QuadraticCurve(TreeNode child, double m, double k) { - super(child); - this.m = m; - this.k = k; - } - - @Override - public Double eval() { - return Math.pow(child.eval()/m, k); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/StatNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/StatNode.java deleted file mode 100644 index e958b09..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/StatNode.java +++ /dev/null @@ -1,48 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.joseph.utility.trees.AbstractTreeNode; -import uk.me.webpigeon.joseph.utility.trees.TreeNode; - -public class StatNode implements TreeNode { - private String opr; - private TreeNode left; - private TreeNode right; - - public StatNode(String opr, TreeNode sub, TreeNode right){ - this.opr = opr; - this.left = sub; - this.right = right; - } - - @Override - public Double eval() { - switch (opr) { - case "max": - return Math.max(left.eval(), right.eval()); - - case "min": - return Math.min(left.eval(), right.eval()); - - default: - System.err.println("unknown oper: "+opr); - return null; - } - } - - @Override - public void addChild(TreeNode child) { - throw new IllegalArgumentException("Cannot modify child nodes"); - } - - @Override - public int getChildCount() { - return 2; - } - - @Override - public boolean isLeaf() { - return false; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/UtilitySystem.java b/src/main/java/uk/me/webpigeon/joseph/utility/UtilitySystem.java deleted file mode 100644 index 0053173..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/UtilitySystem.java +++ /dev/null @@ -1,40 +0,0 @@ -package uk.me.webpigeon.joseph.utility; - -import java.util.ArrayList; -import java.util.List; - -import uk.me.webpigeon.joseph.cow.Cow; - -public class UtilitySystem { - private List actions; - - public UtilitySystem() { - this.actions = new ArrayList<>(); - } - - /** - * Find out what is most important at the moment. - */ - public Action process(Cow cow) { - Action bestAction = null; - double bestScore = -Double.MAX_VALUE; - - for (Action action : actions) { - double score = action.getScore(); - - if (score > bestScore) { - bestScore = score; - bestAction = action; - } else if (score == bestScore && Math.random() > 0.5) { - bestScore = score; - bestAction = action; - } - } - - return bestAction; - } - - public void addAction(Action action) { - actions.add(action); - } -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/trees/AbstractTreeNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/trees/AbstractTreeNode.java deleted file mode 100644 index 081a006..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/trees/AbstractTreeNode.java +++ /dev/null @@ -1,28 +0,0 @@ -package uk.me.webpigeon.joseph.utility.trees; - -import java.util.ArrayList; -import java.util.List; - -import uk.me.webpigeon.joseph.cow.Cow; - -public abstract class AbstractTreeNode implements TreeNode { - protected List> children; - - public AbstractTreeNode() { - this.children = new ArrayList<>(); - } - - public void addChild(TreeNode node) { - assert node != null; - children.add(node); - } - - public int getChildCount() { - return children.size(); - } - - public boolean isLeaf() { - return children.isEmpty(); - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/trees/ImmutableTreeNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/trees/ImmutableTreeNode.java deleted file mode 100644 index fd8d091..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/trees/ImmutableTreeNode.java +++ /dev/null @@ -1,15 +0,0 @@ -package uk.me.webpigeon.joseph.utility.trees; - -public abstract class ImmutableTreeNode implements TreeNode { - - @Override - public final void addChild(TreeNode child) { - throw new IllegalArgumentException("Cannot add children - immutable"); - } - - @Override - public boolean isLeaf() { - return getChildCount() == 0; - } - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/trees/TreeNode.java b/src/main/java/uk/me/webpigeon/joseph/utility/trees/TreeNode.java deleted file mode 100644 index a015a21..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/trees/TreeNode.java +++ /dev/null @@ -1,11 +0,0 @@ -package uk.me.webpigeon.joseph.utility.trees; - -public interface TreeNode { - - public void addChild(TreeNode child); - public int getChildCount(); - - public boolean isLeaf(); - public T eval(); - -} diff --git a/src/main/java/uk/me/webpigeon/joseph/utility/trees/UtilCurve.java b/src/main/java/uk/me/webpigeon/joseph/utility/trees/UtilCurve.java deleted file mode 100644 index 057f992..0000000 --- a/src/main/java/uk/me/webpigeon/joseph/utility/trees/UtilCurve.java +++ /dev/null @@ -1,16 +0,0 @@ -package uk.me.webpigeon.joseph.utility.trees; - -public abstract class UtilCurve extends ImmutableTreeNode { - protected TreeNode child; - - public UtilCurve(TreeNode child) { - assert child != null; - this.child = child; - } - - @Override - public int getChildCount() { - return 1; - } - -} diff --git a/src/main/java/uk/me/webpigeon/piers/HunterAgent.java b/src/main/java/uk/me/webpigeon/piers/HunterAgent.java deleted file mode 100644 index 2699ca1..0000000 --- a/src/main/java/uk/me/webpigeon/piers/HunterAgent.java +++ /dev/null @@ -1,237 +0,0 @@ -package uk.me.webpigeon.piers; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.piers.neural.NeuralNet; -import uk.me.webpigeon.piers.neural.Sensor; -import uk.me.webpigeon.steering.SeekBehaviour; -import uk.me.webpigeon.steering.SteeringBehaviour; -import uk.me.webpigeon.steering.WanderingBehaviour; -import uk.me.webpigeon.steering.WeightedBehaviour; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -import java.awt.*; -import java.awt.geom.Arc2D; -import java.util.ArrayList; -import java.util.HashMap; - -/** - * Created by Piers on 04/03/2015. - *

- * Agent that will use the offline evolved behavioural tree in controlling its - * behaviour - */ -public class HunterAgent extends Entity { - public static final int TICKS_PER_HUNGER_DROP = 50; - // How big we are - int radius = 10; - - // How hungry are we - // When this is below STARVING_THRESHOLD then we start to lose health - int hungerLevel = 100; - private static int STARVING_THRESHOLD = 10; - - // Maximum amount of life for a hunter - private static int MAX_TICKS = 1_000; - private int currentTicks; - - private int foodCarrying; - - private static ArrayList> sensors; - private static HunterBehaviour behaviour; - - private NeuralNet brain; - - protected HunterVillage home; - - /** - * Create HunterAgent with given home and a provided brain - * - * @param home - * @param brain - */ - public HunterAgent(HunterVillage home, NeuralNet brain) { - initialise(home, brain); - } - - /** - * Create HunterAgent with given home and new random brain - * - * @param home - */ - public HunterAgent(HunterVillage home) { - NeuralNet brain = new NeuralNet(sensors.size(), HunterBehaviourNames.values().length, 3, HunterBehaviourNames.values().length); - brain.createNet(); - initialise(home, brain); - } - - private void initialise(HunterVillage home, NeuralNet brain) { - this.home = home; - this.brain = brain; - this.location = new Vector2D(home.getLocation(), true); - } - - @Override - public void update() { - if (velocity == null) velocity = new Vector2D(1, 0, true); - currentTicks++; - - if (currentTicks % TICKS_PER_HUNGER_DROP == 0) hungerLevel--; - - // Hunt cow if we are near it - Cow cow = (Cow) world.getNearestEntityOfType(this, Cow.class); - if (cow != null) { - if (cow.getLocation().dist(this.getLocation()) <= radius) { - // kill cow - if (foodCarrying == 0) { - foodCarrying += 100; - cow.setHealth(-1); -// System.out.println("Cow killed"); - } - } - } - - //Add food carrying if near home - if (this.getLocation().dist(home.getLocation()) <= 25) { - // Put food into home - if (foodCarrying > 0) { - home.addFood(foodCarrying); - foodCarrying = 0; -// System.out.println("Food returned"); - } - - int toEat = 100 - hungerLevel; - hungerLevel += home.getFood(toEat); - } - - - // think about hunger and health - if (hungerLevel < STARVING_THRESHOLD) health--; - - - // Set the input layer to use our sensors - ArrayList inputs = new ArrayList<>(); - for (Sensor sensor : sensors) { - sensor.bind(this); - inputs.add(sensor.getValue()); - } - - ArrayList outputs = brain.getOutputs(inputs); - - behaviour.bind(this); - behaviour.setWeights(outputs); - this.velocity = behaviour.process(); - this.velocity.normalise(); - this.velocity.multiply(2.0); - - super.update(); - } - - public double getDistanceToNearestCow() { - Entity cow = world.getNearestEntityOfType(this, Cow.class); - if (cow != null) return cow.getLocation().dist(this.getLocation()); - return Double.MAX_VALUE; // No cows - } - - public Vector2D getNearestCowLocation() { - Entity cow = world.getNearestEntityOfType(this, Cow.class); - if (cow != null) return cow.getLocation(); - // This is causing problems - return null; - } - - @Override - public void draw(Graphics2D graphics) { - graphics.setColor(Color.RED); - graphics.fillOval((int) getX(), (int) getY(), radius, radius); - } - - @Override - public boolean isDead() { - return (currentTicks > MAX_TICKS || super.isDead()); - } - - public NeuralNet getBrain() { - return brain; - } - - public static void initialiseBehaviour() { - behaviour = new HunterBehaviour(); - } - - public static void initialiseSensors() { - sensors = new ArrayList<>(); -// // health -// sensors.add(new Sensor() { -// @Override -// public void setValue() { -// value = (double) entity.health; -// } -// }); - - // hunger - sensors.add(new Sensor() { - @Override - public void setValue() { - value = (double) entity.hungerLevel; - } - }); - - sensors.add(new Sensor() { - @Override - public void setValue() { - value = entity.getDistanceToNearestCow(); - } - }); - - sensors.add(new Sensor() { - @Override - public void setValue() { - value = (double) entity.foodCarrying; - } - }); - } -} - - -class HunterBehaviour extends WeightedBehaviour { - private HashMap hunterBehaviours = new HashMap<>(); - - public HunterBehaviour() { - hunterBehaviours.put(HunterBehaviourNames.RETURN_HOME, new SeekBehaviour(null)); - hunterBehaviours.put(HunterBehaviourNames.CHASE_COW, new SeekBehaviour(null)); - hunterBehaviours.put(HunterBehaviourNames.WANDER, new WanderingBehaviour()); - - // For now weights of 1.0 - for (SteeringBehaviour behaviour : hunterBehaviours.values()) { - addBehavour(behaviour, 1.0); - } - } - - public void setWeights(ArrayList weights) { - if (weights.size() != hunterBehaviours.size()) - throw new IllegalArgumentException("Weights size was not correct(" + weights.size() + ") should have been (" + hunterBehaviours.size() + ")"); - int i = 0; - for (HunterBehaviourNames behaviour : HunterBehaviourNames.values()) { - behaviours.put(hunterBehaviours.get(behaviour), weights.get(i)); - } - } - - - @Override - public void bind(Entity entity) { - if (!(entity instanceof HunterAgent)) - throw new IllegalArgumentException("Entity must be of type: " + HunterAgent.class + " not of type: " + entity.getClass()); - super.bind(entity); - - ((SeekBehaviour) hunterBehaviours.get(HunterBehaviourNames.RETURN_HOME)).setTarget(((HunterAgent) entity).home.getLocation()); - ((SeekBehaviour) hunterBehaviours.get(HunterBehaviourNames.CHASE_COW)).setTarget(((HunterAgent) entity).getNearestCowLocation()); - - } -} - -enum HunterBehaviourNames { - RETURN_HOME, - CHASE_COW, - WANDER -} diff --git a/src/main/java/uk/me/webpigeon/piers/HunterVillage.java b/src/main/java/uk/me/webpigeon/piers/HunterVillage.java deleted file mode 100644 index 55ee8c7..0000000 --- a/src/main/java/uk/me/webpigeon/piers/HunterVillage.java +++ /dev/null @@ -1,107 +0,0 @@ -package uk.me.webpigeon.piers; - -import uk.me.webpigeon.piers.neural.NeuralNet; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; -import uk.me.webpigeon.world.World; -import uk.me.webpigeon.world.WorldComponent; - -import javax.xml.stream.events.EntityDeclaration; -import java.awt.*; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * Created by Piers on 09/03/2015. - *

- * The object that represents the village that the hunters live in - */ -public class HunterVillage extends Entity { - - public static final int HUNTER_COST = 50; - // How much food is available for the hunters to eat - private int foodStocks = 50; - private int totalFoodStocksEver = foodStocks; - - // How many people do we have - private int currentPopulation; - private int maxPopulation = 10; - - // The brian to use when creating hunters - NeuralNet hunterBrain; - - private ArrayList hunters; - private boolean firstCreationDone = false; - - - @Override - public void draw(Graphics2D graphics) { -// super.draw(graphics); - graphics.setColor(Color.cyan); - graphics.fillRect((int) location.getX(), (int) location.getY(), 25, 25); - } - - public HunterVillage(Vector2D location) { - this.location = location; - hunters = new ArrayList<>(); - } - - @Override - public void update() { - // Don't call super.update(); - // take out dead hunters - Iterator iterator = hunters.iterator(); - while (iterator.hasNext()) { - HunterAgent agent = iterator.next(); - if (agent.isDead()) { - iterator.remove(); -// System.out.println("Hunter died - All mourn the hunter!"); - } - } - - currentPopulation = hunters.size(); - if (foodStocks >= HUNTER_COST && currentPopulation < maxPopulation) createNewHunter(); - } - - public NeuralNet getHunterBrain() { - return hunterBrain; - } - - public void setHunterBrain(NeuralNet hunterBrain) { - this.hunterBrain = hunterBrain; - } - - private void createNewHunter() { - HunterAgent agent = new HunterAgent(this); - foodStocks -= HUNTER_COST; - world.addEntity(agent); - hunters.add(agent); - firstCreationDone = true; - } - - public void addFood(int food) { - foodStocks += food; - totalFoodStocksEver += food; - } - - // Gets as much food as possible from the village - public int getFood(int wantedFood) { - int foodGiven; - if (foodStocks > wantedFood) foodGiven = wantedFood; - foodGiven = foodStocks; - foodStocks -= foodGiven; - return foodGiven; - } - - @Override - public boolean isDead() { - if (firstCreationDone) { - return hunters.size() == 0; - } - return false; - } - - public int getTotalFoodStocksEver() { - return totalFoodStocksEver; - } -} diff --git a/src/main/java/uk/me/webpigeon/piers/OfflineHunterEvolver.java b/src/main/java/uk/me/webpigeon/piers/OfflineHunterEvolver.java deleted file mode 100644 index 4b254b1..0000000 --- a/src/main/java/uk/me/webpigeon/piers/OfflineHunterEvolver.java +++ /dev/null @@ -1,334 +0,0 @@ -package uk.me.webpigeon.piers; - -import com.sun.org.apache.bcel.internal.generic.POP; -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.piers.neural.NeuralNet; -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.DoubleWorld; -import uk.me.webpigeon.world.GrassEntity; - -import javax.swing.*; -import javax.swing.text.html.parser.Entity; -import java.awt.*; -import java.io.*; -import java.util.ArrayList; -import java.util.Date; -import java.util.Random; - -/** - * Created by Piers on 09/03/2015. - *

- * A hunter evolver designed to provide the developer with a credible start point for the Hunters - */ -public final class OfflineHunterEvolver { - - private static final String HUNTER_DIRECTORY = "/hunters"; - public static final int GENERATIONS = 100; - - // World to use for evaluation - private DoubleWorld world; - // village to use for evaluation - private HunterVillage village; - - // population of genomes - ArrayList population = new ArrayList<>(); - ArrayList next = new ArrayList<>(); - - // Best genome seen this generation - HunterGenome bestThisGeneration; - // Worst genome seen this generation - HunterGenome worstThisGeneration; - // Best genome seen in total - HunterGenome bestInTotal; - - - private static int POPULATION_SIZE = 100; - private static final float CROSSOVER_CHANCE = 0.70f; - private static final float MUTATION_CHANCE = 0.25f; - - // Maximum number of ticks to run the game for - public static final int MAX_TICKS = 5_000; - - - private NeuralNet brain; - private int numberOfWeights; - - private Random random = new Random(); - - /** - * Forbid other parts of the program from using this class - */ - private OfflineHunterEvolver() { - village = new HunterVillage(new Vector2D(400, 400)); - - brain = new HunterAgent(village).getBrain(); - brain.createNet(); - numberOfWeights = brain.getNumberOfWeights(); - System.out.println("Number of Weights: " + numberOfWeights); - - createInitialPopulation(); - - } - - private void createInitialPopulation() { - population = new ArrayList<>(POPULATION_SIZE); - next = new ArrayList<>(POPULATION_SIZE); - for (int i = 0; i < POPULATION_SIZE; i++) { - population.add(new HunterGenome(this, numberOfWeights)); - } - } - - // Runs a generation of the GA - causing the population to shift to the new one - public void runSingleGeneration() { - - next.clear(); - bestThisGeneration = null; - worstThisGeneration = null; - - while (next.size() < POPULATION_SIZE) { - // add a new Genome - float rand = random.nextFloat(); - if (rand < CROSSOVER_CHANCE) { - next.add(new HunterGenome(tournament(5), tournament(5))); - continue; - } - if (rand < CROSSOVER_CHANCE + MUTATION_CHANCE) { - next.add(new HunterGenome(tournament(5))); - continue; - } - next.add(tournament(5).getClone()); -// System.out.println(next.size()); - } - - population.clear(); - population.addAll(next); - if (bestInTotal == null || bestInTotal.getFitness() < bestThisGeneration.getFitness()) - bestInTotal = bestThisGeneration; - - - System.out.println("Best Overall: " + bestInTotal.getFitness() + - " Best This Generation:" + bestThisGeneration.getFitness() - + " Worst this Generation: " + worstThisGeneration.getFitness()); - } - - // Potentially quite expensive operation - private HunterGenome getBestFromPopulation() { - HunterGenome best = population.get(0); - for (int i = 1; i < population.size(); i++) { - if (population.get(i).getFitness() > best.getFitness()) best = population.get(i); - } - return best; - } - - private void showBestGenome() { - JFrame frame = new JFrame("Best Genome"); - - world = new DoubleWorld(800, 800); - village = new HunterVillage(new Vector2D(400, 400)); - - frame.setPreferredSize(new Dimension(800, 800)); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - - brain.setWeights(bestInTotal.weights); - village.setHunterBrain(brain); - - CowPopulationManager pop = new CowPopulationManager(10); - pop.addMoreCows(10, world); - world.addComponent(pop); - world.addEntity(village); - - for (int i = 0; i < 50; i++) { - world.addEntity(new GrassEntity(Vector2D.getRandomCartesian( - 800, 800, true))); - } - - Thread thread = new Thread(world); - - frame.add(world); - frame.pack(); - - thread.start(); - - frame.setVisible(true); - } - - // Tournament selection - prevents need to calculate fitness for all candidates - private HunterGenome tournament(int size) { - HunterGenome best = getRandomFromPopulation(); - for (int i = 1; i < size; i++) { - HunterGenome choice = getRandomFromPopulation(); - while (choice.getFitness() <= 50) { - choice = getRandomFromPopulation(); - } - if (choice.getFitness() > best.getFitness()) best = choice; - if (worstThisGeneration == null || choice.getFitness() < worstThisGeneration.getFitness()) worstThisGeneration = choice; - } - // Set the best seen so far - if (bestThisGeneration == null || bestThisGeneration.getFitness() < best.getFitness()) - bestThisGeneration = best; - - return best; - } - - private HunterGenome getRandomFromPopulation() { - return population.get(random.nextInt(population.size())); - } - - // Only call this from a genome - public double calculateFitnessFromGenome(HunterGenome candidate) { - DoubleWorld world = new DoubleWorld(800, 800); - HunterVillage village = new HunterVillage(new Vector2D(400, 400)); - CowPopulationManager cows = new CowPopulationManager(10); - cows.addMoreCows(10, world); - world.addComponent(cows); - world.addEntity(village); - - // Implant our genome into the hunters -// village.getHunterBrain().setWeights(candidate.weights); - brain.setWeights(candidate.weights); - village.setHunterBrain(brain); - - for (int i = 0; i < 50; i++) { - world.addEntity(new GrassEntity(Vector2D.getRandomCartesian( - 800, 800, true))); - } - double totalFitness = 0; - for (int i = 0; i < 5; i++) { - // Run the simulation - for (int j = 0; j < OfflineHunterEvolver.MAX_TICKS; j++) { - world.update(20); - if (village.isDead()) break; - } - totalFitness += (double) village.getTotalFoodStocksEver(); - } - - // retrieve how well they did - return totalFitness / 5; - } - - private void saveBestGenome() throws IOException { - Date date = new Date(); - String fileName = String.format("src/main/resources/hunters/%6.0f_%4d_%2d_%2d_%2d_%2d.ser", - bestInTotal.getFitness(), - date.getYear() + 1900, - date.getMonth() + 1, - date.getDate(), - date.getHours(), - date.getMinutes()); - - FileOutputStream fileOut = new FileOutputStream(fileName); - ObjectOutputStream oos = new ObjectOutputStream(fileOut); - oos.writeObject(bestInTotal); - oos.close(); - fileOut.close(); - System.out.println("Saved to " + fileName); - } - - public static void main(String[] args) { - - // Important to do this - HunterAgent.initialiseBehaviour(); - HunterAgent.initialiseSensors(); - - OfflineHunterEvolver evolver = new OfflineHunterEvolver(); - - for (int i = 0; i < GENERATIONS; i++) { - System.out.println("Generation: " + i); - evolver.runSingleGeneration(); - } - - try { - evolver.saveBestGenome(); - } catch (IOException e) { - e.printStackTrace(); - } - - evolver.showBestGenome(); - - } -} - -class HunterGenome implements Serializable { - // Stores essentially just the weights - ArrayList weights; - private static Random random = new Random(); - private static double INIDIVIDUAL_BIT_MUTATION_CHANCE = 0.10; - - private Double fitness = null; - - private transient OfflineHunterEvolver evolver; - - private HunterGenome() { - weights = new ArrayList<>(); - } - - // Random genome - public HunterGenome(OfflineHunterEvolver evolver, int numberOfWeights) { - weights = new ArrayList<>(numberOfWeights); - for (int i = 0; i < numberOfWeights; i++) { - weights.add(rand()); - } - - this.evolver = evolver; - } - - // Mutation operation - public HunterGenome(HunterGenome source) { - this.weights = new ArrayList<>(source.weights.size()); - for (int i = 0; i < source.weights.size(); i++) { - if (random.nextDouble() < INIDIVIDUAL_BIT_MUTATION_CHANCE) { - this.weights.add(rand()); - } else { - this.weights.add(source.weights.get(i)); - } - } - this.evolver = source.evolver; - } - - //CrossOver operation - public HunterGenome(HunterGenome first, HunterGenome second) { - if (first.weights.size() != second.weights.size()) - throw new IllegalArgumentException("Genomes of incompatible size"); - - int size = first.weights.size(); - this.weights = new ArrayList<>(size); - // Begin crossover - single point - int crossoverPoint = random.nextInt(size); - for (int i = 0; i < size; i++) { - this.weights.add((i < crossoverPoint) ? first.weights.get(i) : second.weights.get(i)); - } - - this.evolver = first.evolver; - } - - // Cloning - public HunterGenome getClone() { - HunterGenome clone = new HunterGenome(); - clone.weights.addAll(this.weights); - // This is reasonable - will cut down on calculations - clone.fitness = this.fitness; - clone.evolver = this.evolver; - return clone; - } - - public double getFitness() { - if (fitness == null) calculateFitness(); - return fitness; - } - - private void calculateFitness() { - // Do the heavy work calculating fitness - fitness = evolver.calculateFitnessFromGenome(this); - } - - private double rand() { - return ((Math.random() * 2) - 1); - } - - @Override - public String toString() { - return "HunterGenome{" + - "fitness=" + fitness + - '}'; - } -} \ No newline at end of file diff --git a/src/main/java/uk/me/webpigeon/piers/jbt/HunterConfiguration.xml b/src/main/java/uk/me/webpigeon/piers/jbt/HunterConfiguration.xml deleted file mode 100644 index 6388e51..0000000 --- a/src/main/java/uk/me/webpigeon/piers/jbt/HunterConfiguration.xml +++ /dev/null @@ -1,11 +0,0 @@ - - HunterDomain.xml - model/actions - model/conditions - model/actions/out - model/conditions/out - execution/actions - execution/conditions - execution/actions/out - execution/conditions/out - \ No newline at end of file diff --git a/src/main/java/uk/me/webpigeon/piers/jbt/HunterDomain.xml b/src/main/java/uk/me/webpigeon/piers/jbt/HunterDomain.xml deleted file mode 100644 index 1eac7a2..0000000 --- a/src/main/java/uk/me/webpigeon/piers/jbt/HunterDomain.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/uk/me/webpigeon/piers/neural/NeuralNet.java b/src/main/java/uk/me/webpigeon/piers/neural/NeuralNet.java deleted file mode 100644 index 4f68d09..0000000 --- a/src/main/java/uk/me/webpigeon/piers/neural/NeuralNet.java +++ /dev/null @@ -1,166 +0,0 @@ -package uk.me.webpigeon.piers.neural; - -import java.util.ArrayList; - -import uk.me.webpigeon.world.Entity; - -/** - * Neural net to act as the brain for things - * Created by Piers on 10/03/2015. - */ -public class NeuralNet { - // Number of inputs for the net - int numberOfInputs; - // Number of outputs for the net - int numberOfOutputs; - // Number of layers - should be greater than 2 (Input and output layer) - int numberOfLayers; - // Number of neurons to place in each hidden layer - int neuronsPerHiddenLayer; - ArrayList layers = new ArrayList<>(); - - public NeuralNet(int numberOfInputs, int numberOfOutputs, int numberOfLayers, int neuronsPerHiddenLayer) { - this.numberOfInputs = numberOfInputs; - this.numberOfOutputs = numberOfOutputs; - this.numberOfLayers = numberOfLayers; - this.neuronsPerHiddenLayer = neuronsPerHiddenLayer; - } - - public void createNet() { - - // input layer - layers.add(new NeuronLayer(neuronsPerHiddenLayer, numberOfInputs)); - // hidden layers - for (int i = 1; i < numberOfLayers - 1; i++) { - layers.add(new NeuronLayer(neuronsPerHiddenLayer, neuronsPerHiddenLayer)); - } - // add output layer - layers.add(new NeuronLayer(numberOfOutputs, neuronsPerHiddenLayer)); - } - - public ArrayList getWeights() { - ArrayList weights = new ArrayList<>(); - for (NeuronLayer layer : layers) { - for (Neuron neuron : layer.neurons) { - for (int i = 0; i < neuron.numberOfInputs; i++) { - weights.add(neuron.weights.get(i)); - } - } - } - return weights; - } - - public void setWeights(ArrayList weights) { - int currentWeight = 0; - for (NeuronLayer layer : layers) { - for (Neuron neuron : layer.neurons) { - neuron.weights.clear(); - for (int i = 0; i < neuron.numberOfInputs; i++) { - neuron.weights.add(weights.get(currentWeight)); - currentWeight++; - } - } - } - } - - public int getNumberOfWeights() { - int weights = 0; - for (NeuronLayer layer : layers) { - for (Neuron neuron : layer.neurons) { - // Account for its threshold in here - weights += neuron.weights.size() - 1; - } - } - return weights; - } - - public ArrayList getOutputs(ArrayList initialInputs) { - ArrayList outputs = new ArrayList<>(); - ArrayList inputs = new ArrayList<>(); - int currentWeight; - - if (initialInputs.size() != numberOfInputs) { - return new ArrayList<>(); - } - - for (int i = 0; i < numberOfLayers; i++) { - // For every run but the first, set the old outputs as the inputs to the calculation - if (i > 0) { - inputs.clear(); - inputs.addAll(outputs); - } else { - inputs.addAll(initialInputs); - } - // clear the outputs ready for storage - outputs.clear(); - currentWeight = 0; - -// System.out.println("Layer " + i + " started - input size: " + inputs.size()); - - for (Neuron neuron : layers.get(i).neurons) { - double totalInputs = 0; - int numInputs = neuron.numberOfInputs; -// System.out.println("neuron inputs: " + numInputs); - // For each weight - remembering the last is the weight of the node - for (int k = 0; k < numInputs; k++) { -// System.out.println("K: " + k + " W: " + currentWeight); - totalInputs += neuron.weights.get(k); - totalInputs *= inputs.get(currentWeight); - currentWeight++; - } - - // Add in the final weight for the whole neuron - totalInputs += neuron.weights.get(numInputs - 1) * -1; - outputs.add(calculateSigmoid(totalInputs, 1)); - currentWeight = 0; - } - } - return outputs; - } - - private double calculateSigmoid(double activation, double response) { - return (1 / (1 + Math.exp(-activation / response))); - } - -} - -/** - * Individual Neuron - */ -class Neuron { - - // List of weights - last weight is the threshold for the item - ArrayList weights; - - // Number of inputs in this neuron - int numberOfInputs; - - public Neuron(int numberOfInputs) { - this.numberOfInputs = numberOfInputs; - weights = new ArrayList<>(numberOfInputs + 1); - for (int i = 0; i < numberOfInputs + 1; i++) { - weights.add((Math.random() * 2) - 1); - } - } - -} - -/** - * Individual Neuron Layer - */ -class NeuronLayer { - // Number of neurons in this layer - int numberOfNeurons; - - // The neurons in this layer - ArrayList neurons = new ArrayList<>(); - - public NeuronLayer(int numberOfNeurons, int numberOfInputsPerNeuron) { - this.numberOfNeurons = numberOfNeurons; - for (int i = 0; i < numberOfNeurons; i++) { - neurons.add(new Neuron(numberOfInputsPerNeuron)); - } - } - -} - diff --git a/src/main/java/uk/me/webpigeon/piers/neural/Sensor.java b/src/main/java/uk/me/webpigeon/piers/neural/Sensor.java deleted file mode 100644 index 2564d4b..0000000 --- a/src/main/java/uk/me/webpigeon/piers/neural/Sensor.java +++ /dev/null @@ -1,27 +0,0 @@ -package uk.me.webpigeon.piers.neural; - -import uk.me.webpigeon.world.Entity; - -/** - * Represents a fact about the world - */ -public abstract class Sensor { - protected T entity; - - protected Double value; - - public void reset() { - value = null; - } - - public abstract void setValue(); - - public double getValue() { - if (value == null) setValue(); - return value; - } - - public void bind(T entity) { - this.entity = entity; - } -} diff --git a/src/main/java/uk/me/webpigeon/steering/FleeBehaviour.java b/src/main/java/uk/me/webpigeon/steering/FleeBehaviour.java deleted file mode 100644 index 3b5e667..0000000 --- a/src/main/java/uk/me/webpigeon/steering/FleeBehaviour.java +++ /dev/null @@ -1,55 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Color; -import java.awt.Graphics2D; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -public class FleeBehaviour implements TargetedBehavour { - private Vector2D targetPos; - private Entity entity; - - public FleeBehaviour(Vector2D targetPos) { - this.targetPos = targetPos; - } - - public void bind(Entity entity) { - this.entity = entity; - } - - /** - * Return the position vector which corresponds to the opposite direction to the object. - * - * @return the normalised direction vector - */ - public Vector2D process() { - Vector2D currentPos = entity.getLocation(); - - // Flee(q) = smax.unit(p − q) − v - - Vector2D targetDirection = Vector2D.subtract(currentPos, targetPos); - targetDirection.normalise(); - - Vector2D currentVel = targetDirection; - return currentVel; - } - - @Override - public void debugDraw(Graphics2D g) { - if (entity == null) { - return; - } - - g.setColor(Color.RED); - Vector2D entPos = entity.getLocation(); - g.drawLine((int) entPos.x, (int) entPos.y, (int) targetPos.x, - (int) targetPos.y); - } - - @Override - public void setTarget(Vector2D target) { - this.targetPos = target; - } - -} diff --git a/src/main/java/uk/me/webpigeon/steering/SeekBehaviour.java b/src/main/java/uk/me/webpigeon/steering/SeekBehaviour.java deleted file mode 100644 index e384216..0000000 --- a/src/main/java/uk/me/webpigeon/steering/SeekBehaviour.java +++ /dev/null @@ -1,48 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Color; -import java.awt.Graphics2D; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -public class SeekBehaviour implements TargetedBehavour { - private Vector2D targetPos; - private Entity entity; - - public SeekBehaviour(Vector2D targetPos) { - this.targetPos = targetPos; - } - - public Vector2D process() { - if (targetPos == null) return new Vector2D(0, 0, true); - Vector2D currentPos = entity.getLocation(); - - Vector2D targetDirection = Vector2D.subtract(targetPos, currentPos); - targetDirection.normalise(); - - Vector2D currentVel = targetDirection; - return currentVel; - } - - public void bind(Entity entity) { - this.entity = entity; - } - - public void setTarget(Vector2D seekTarget) { - targetPos = seekTarget; - } - - @Override - public void debugDraw(Graphics2D g) { - if (entity == null || targetPos == null) { - return; - } - - g.setColor(Color.GREEN); - Vector2D entPos = entity.getLocation(); - g.drawLine((int) entPos.x, (int) entPos.y, (int) targetPos.x, - (int) targetPos.y); - } - -} diff --git a/src/main/java/uk/me/webpigeon/steering/SteeringBehaviour.java b/src/main/java/uk/me/webpigeon/steering/SteeringBehaviour.java deleted file mode 100644 index b59e3dd..0000000 --- a/src/main/java/uk/me/webpigeon/steering/SteeringBehaviour.java +++ /dev/null @@ -1,43 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Graphics2D; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -/** - * This interface defines steering behaviours. - */ -public interface SteeringBehaviour { - - /** - * Bind a behaviour to a given entity. - * - * @param entity the entity this behavour is bound to - */ - public void bind(Entity entity); - - /** - * process this behaviour and return it's resultant vector. - * - * The resultant vector should be a normalised position vector indicating the - * direction in which this behaviour would like the entity to move. - * - * (be aware that this might need to change in the future as more complex behavours - * are implemented). - * - * @return a normalised position vector. - */ - public Vector2D process(); - - /** - * Draw debug visualisations for this behaviour. - * - * Draw debug visualisations over the top of the world for this behaviour. - * The graphics's origin is the world origin and the units are the world units. - * - * @param g the graphics objects to use to draw debug graphics - */ - public void debugDraw(Graphics2D g); - -} diff --git a/src/main/java/uk/me/webpigeon/steering/TargetedBehavour.java b/src/main/java/uk/me/webpigeon/steering/TargetedBehavour.java deleted file mode 100644 index fa46092..0000000 --- a/src/main/java/uk/me/webpigeon/steering/TargetedBehavour.java +++ /dev/null @@ -1,8 +0,0 @@ -package uk.me.webpigeon.steering; - -import uk.me.webpigeon.util.Vector2D; - -public interface TargetedBehavour extends SteeringBehaviour { - - public void setTarget(Vector2D target); -} diff --git a/src/main/java/uk/me/webpigeon/steering/WanderingBehaviour.java b/src/main/java/uk/me/webpigeon/steering/WanderingBehaviour.java deleted file mode 100644 index 5cac8e9..0000000 --- a/src/main/java/uk/me/webpigeon/steering/WanderingBehaviour.java +++ /dev/null @@ -1,71 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.util.Random; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -/** - * Created by Piers on 04/03/2015. - */ -public class WanderingBehaviour implements SteeringBehaviour { - - private double wanderRadius = 25; - private double wanderDistance = 25; - private double angleJitter = 5; - private Entity entity; - - // random vector - private Vector2D c = Vector2D.toCartesian(Vector2D.getRandomPolar( - Math.toRadians(360), 1, 1, true)); - private SeekBehaviour seek = new SeekBehaviour(null); - private Random random = new Random(); - private Vector2D centerOfCircle; - private Vector2D seekPosition; - - @Override - public Vector2D process() { - // Obtain information about the entity - Vector2D ourPosition = new Vector2D(entity.getLocation(), true); - Vector2D distanceFromUnitToWanderCircle = new Vector2D( - entity.getVelocity(), true); - - // Modify distanceFromUnitToWanderCircle to reflect the difference - // between Position and center of circle - distanceFromUnitToWanderCircle.normalise(); - distanceFromUnitToWanderCircle.multiply(wanderDistance * 2); - - // Use that information to calculate the center of the circle - centerOfCircle = Vector2D.add(ourPosition, - distanceFromUnitToWanderCircle); - // Vary c by jittering it a little - c.normalise(); - c.rotate(Math.toRadians((random.nextDouble() * 2 - 1) * angleJitter)); - - // c is a unit vector in its own co-ordinate system - bring it back - seekPosition = Vector2D.add(centerOfCircle, c, wanderRadius); - - // Set the seeking behaviour to the target - seek.setTarget(seekPosition); - return seek.process(); - } - - @Override - public void bind(Entity entity) { - this.entity = entity; - seek.bind(entity); - } - - @Override - public void debugDraw(Graphics2D g) { - // TODO Auto-generated method stub - g.drawOval((int) (centerOfCircle.x - wanderRadius), - (int) (centerOfCircle.y - wanderRadius), - (int) wanderRadius * 2, (int) wanderRadius * 2); - g.setColor(Color.GREEN); - g.drawOval((int) seekPosition.x - 2, (int) seekPosition.y - 2, 4, 4); - seek.debugDraw(g); - } -} diff --git a/src/main/java/uk/me/webpigeon/steering/WeightedBehaviour.java b/src/main/java/uk/me/webpigeon/steering/WeightedBehaviour.java deleted file mode 100644 index df3bed7..0000000 --- a/src/main/java/uk/me/webpigeon/steering/WeightedBehaviour.java +++ /dev/null @@ -1,51 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Graphics2D; -import java.util.HashMap; -import java.util.Map; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -public class WeightedBehaviour implements SteeringBehaviour { - protected Map behaviours; - - public WeightedBehaviour() { - this.behaviours = new HashMap(); - } - - public void addBehavour(SteeringBehaviour behaviour, double weight) { - behaviours.put(behaviour, weight); - } - - public Vector2D process() { - - Vector2D total = new Vector2D(); - - for (Map.Entry entry : behaviours.entrySet()) { - SteeringBehaviour behaviour = entry.getKey(); - Double weight = entry.getValue(); - - Vector2D result = Vector2D.multiply(behaviour.process(), weight); - total = Vector2D.add(total, result); - } - - total.normalise(); - - return total; - } - - public void bind(Entity entity) { - for (SteeringBehaviour sb : behaviours.keySet()) { - sb.bind(entity); - } - } - - @Override - public void debugDraw(Graphics2D g) { - for (SteeringBehaviour sb : behaviours.keySet()) { - sb.debugDraw(g); - } - } - -} diff --git a/src/main/java/uk/me/webpigeon/steering/WonderBehaviour.java b/src/main/java/uk/me/webpigeon/steering/WonderBehaviour.java deleted file mode 100644 index 77d0427..0000000 --- a/src/main/java/uk/me/webpigeon/steering/WonderBehaviour.java +++ /dev/null @@ -1,70 +0,0 @@ -package uk.me.webpigeon.steering; - -import java.awt.Graphics2D; -import java.util.Random; - -import uk.me.webpigeon.util.Vector2D; -import uk.me.webpigeon.world.Entity; - -public class WonderBehaviour implements SteeringBehaviour { - private double wanderRadius = 10; - private double wanderDistance = 3; - private double jitter = 1; - private Entity entity; - - private Vector2D c; - private Vector2D wanders; - private SeekBehaviour seek; - private Random random; - - public WonderBehaviour() { - this.wanderDistance = 0.5; - this.seek = new SeekBehaviour(null); - this.wanders = new Vector2D(); - this.random = new Random(); - } - - @Override - public void bind(Entity entity) { - this.entity = entity; - seek.bind(entity); - } - - @Override - public Vector2D process() { - Vector2D ourPosition = new Vector2D(entity.getX(), entity.getY()); - - Vector2D v = entity.getVelocity(); - // v.normalise(); - - Vector2D pw = Vector2D.add(ourPosition, - Vector2D.multiply(v, wanderDistance)); - - double x = (random.nextDouble() * 2) - 1; - double y = (random.nextDouble() * 2) - 1; - - Vector2D a = new Vector2D(jitter * x, jitter * y); - Vector2D wanders2 = Vector2D.add(wanders, a); - Vector2D cNorm = new Vector2D(wanders2, true); - cNorm.normalise(); - wanders = Vector2D.multiply(cNorm, wanderRadius); - - // set the new target - Vector2D seekTarget = Vector2D - .add(Vector2D.add(ourPosition, - Vector2D.multiply(v, wanderDistance)), wanders); - seek.setTarget(seekTarget); - return seek.process(); - } - - @Override - public void debugDraw(Graphics2D g) { - // TODO Auto-generated method stub - - g.drawOval((int) wanders.x, (int) wanders.y, (int) wanderRadius * 2, - (int) wanderRadius * 2); - - seek.debugDraw(g); - } - -} diff --git a/src/main/java/uk/me/webpigeon/strawberry/Strawberry.java b/src/main/java/uk/me/webpigeon/strawberry/Strawberry.java deleted file mode 100644 index 3a25d57..0000000 --- a/src/main/java/uk/me/webpigeon/strawberry/Strawberry.java +++ /dev/null @@ -1,137 +0,0 @@ -package uk.me.webpigeon.strawberry; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.util.ArrayList; - -import uk.me.webpigeon.util.Vector2D; - -/** - * Created by Piers on 05/03/2015. - */ -public class Strawberry { - - int x; - int y; - - Vector2D location; - - int timeLived = 0; - int growThreshold = 25; - int lifeThreshold = 250; - - static int maxRunnerDistance = 75; - - static int manyRunners = 5; - - ArrayList targetLocations; - ArrayList currentRunnerLocations; - boolean[] runnerCompleted; - boolean running = false; - - boolean dead = false; - - public Strawberry(int x, int y) { - this.x = x; - this.y = y; - - location = new Vector2D(x, y, true); - - targetLocations = new ArrayList<>(); - currentRunnerLocations = new ArrayList<>(); - } - - public Strawberry(Vector2D location) { - this((int) location.x, (int) location.y); - } - - public void update(StrawberryWorld world) { - if (!dead) { - timeLived++; - if (!running) { - if (growThreshold < timeLived) { - // Send out the runners - int numberOfRunners = (int) (world.map[x][y] * manyRunners); - int distance = maxRunnerDistance - - (int) (world.map[x][y] * maxRunnerDistance); - for (int i = 0; i < numberOfRunners; i++) { - // Vector2D runnerTarget = new - // Vector2D(Math.toRadians(Math.random() * 360), 1, - // true); - Vector2D runnerTarget = Vector2D.getRandomPolar( - 2 * Math.PI, 1, 1, true); - // System.out.println(runnerTarget); - runnerTarget = Vector2D.toCartesian(runnerTarget); - // System.out.println(runnerTarget); - runnerTarget.normalise(); - runnerTarget.multiply(distance); - runnerTarget.add(location); - if (runnerTarget.x < 0 || runnerTarget.x > world.width - || runnerTarget.y < 0 - || runnerTarget.y > world.height) { - i--; - continue; - } - - targetLocations.add(runnerTarget); - currentRunnerLocations - .add(new Vector2D(location, true)); - } - running = true; - runnerCompleted = new boolean[targetLocations.size()]; - } - } else { - - // run the runners - for (int i = 0; i < targetLocations.size(); i++) { - if (!runnerCompleted[i]) { - // System.out.println(currentRunnerLocations.get(i).dist(targetLocations.get(i))); - Vector2D difference = Vector2D.subtract( - targetLocations.get(i), - currentRunnerLocations.get(i)); - if (difference.mag() > 6) { - // System.out.println(difference + " " + - // difference.mag()); - currentRunnerLocations.get(i).add( - Vector2D.subtract(targetLocations.get(i), - location), - 3 / targetLocations.get(i).mag()); - } else { - // System.out.println("Strawberry lived for" + - // timeLived); - world.addStrawberry(new Strawberry(targetLocations - .get(i))); - runnerCompleted[i] = true; - } - } - } - } - - if (timeLived > lifeThreshold) { - // time to die - dead = true; - } - } - - } - - public void draw(Graphics2D graphics2D) { - // 139,69,19 - graphics2D.setColor((dead) ? new Color(139, 69, 19) : Color.GREEN); - graphics2D.fillRect(x, y, 5, 5); - - if (!dead) { - for (int i = 0; i < currentRunnerLocations.size(); i++) { - graphics2D.setColor(Color.GREEN.darker().darker()); - Vector2D target = currentRunnerLocations.get(i); - int targetX = (int) target.x; - int targetY = (int) target.y; - graphics2D.drawLine(x, y, targetX, targetY); - // graphics2D.setColor(Color.CYAN); - // graphics2D.fillRect((int) targetLocations.get(i).x, (int) - // targetLocations.get(i).y, 5, 5); - - } - } - } -} diff --git a/src/main/java/uk/me/webpigeon/strawberry/StrawberryApplet.java b/src/main/java/uk/me/webpigeon/strawberry/StrawberryApplet.java deleted file mode 100644 index fddb674..0000000 --- a/src/main/java/uk/me/webpigeon/strawberry/StrawberryApplet.java +++ /dev/null @@ -1,25 +0,0 @@ -package uk.me.webpigeon.strawberry; - -import java.applet.Applet; -import java.awt.Graphics; - -/** - * Created by Piers on 05/03/2015. - */ -public class StrawberryApplet extends Applet { - - StrawberryWorld world = new StrawberryWorld(800, 600); - - @Override - public void init() { - Thread thread = new Thread(world); - this.add(world); - thread.start(); - super.init(); - } - - @Override - public void paint(Graphics g) { - world.paint(g); - } -} diff --git a/src/main/java/uk/me/webpigeon/strawberry/StrawberryWorld.java b/src/main/java/uk/me/webpigeon/strawberry/StrawberryWorld.java deleted file mode 100644 index da51ed9..0000000 --- a/src/main/java/uk/me/webpigeon/strawberry/StrawberryWorld.java +++ /dev/null @@ -1,254 +0,0 @@ -package uk.me.webpigeon.strawberry; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.util.ArrayList; -import java.util.ListIterator; - -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.WindowConstants; - -/** - * Created by Piers on 05/03/2015. - */ -public class StrawberryWorld extends JComponent implements Runnable { - - int width; - int height; - - float[][] map; - int[][] visitCount; - float largestIndividualVisit; - ArrayList strawberries = new ArrayList<>(); - ArrayList newBerries = new ArrayList<>(); - int tickCount = 0; - - public StrawberryWorld(int width, int height) { - this.width = width; - this.height = height; - map = new float[width][height]; - visitCount = new int[width / 20][height / 20]; - generateSimplexNoise(); - - strawberries.add(new Strawberry(width / 2, height / 2)); - } - - @Override - public Dimension getPreferredSize() { - return new Dimension(width + width / 2, height); - } - - @Override - public void run() { - while (true) { - try { - Thread.sleep((tickCount > 1000) ? 10 : 50); - tickCount++; - System.out.println("Update: " + tickCount); - update(); - repaint(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - public static void main(String[] args) { - JFrame frame = new JFrame("Strawberry"); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - - StrawberryWorld world = new StrawberryWorld(800, 600); - Thread thread = new Thread(world); - frame.add(world); - - frame.pack(); - frame.setVisible(true); - - thread.start(); - } - - public synchronized void update() { - for (Strawberry berry : strawberries) - berry.update(this); - if (newBerries.size() != 0) { - strawberries.addAll(newBerries); - newBerries.clear(); - } - ListIterator itr = strawberries.listIterator(); - while (itr.hasNext()) { - Strawberry berry = itr.next(); - if (berry.dead) - itr.remove(); - } - if (strawberries.size() > 1000) { - eugenics(); - } - } - - public void eugenics() { - - ListIterator itr = strawberries.listIterator(); - int killNumber = strawberries.size() / 20; - while (itr.hasNext()) { - Strawberry berry = itr.next(); - if (killNumber-- > 0) - itr.remove(); - } - } - - public void addStrawberry(Strawberry strawberry) { - newBerries.add(strawberry); - visitCount[strawberry.x / 20][strawberry.y / 20]++; - if (visitCount[strawberry.x / 20][strawberry.y / 20] > largestIndividualVisit) - largestIndividualVisit++; - } - - @Override - protected synchronized void paintComponent(Graphics g) { - Graphics2D graphics2D = (Graphics2D) g; - - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - graphics2D.setColor(new Color(map[x][y], map[x][y], map[x][y])); - graphics2D.fillRect(x, y, 1, 1); - } - } - - for (int x = 0; x < width / 20; x++) { - for (int y = 0; y < height / 20; y++) { - g.setColor(new Color(1.0f / ((visitCount[x][y] == 0) ? 1 - : visitCount[x][y]), (float) Math.min(1.0, - visitCount[x][y] / (largestIndividualVisit)), 0.0f)); - graphics2D.fillRect(width + (x * 10), y * 10, 10, 10); - g.setColor(Color.black); - graphics2D.drawRect(width + (x * 10), y * 10, 10, 10); - } - } - - for (Strawberry berry : strawberries) - berry.draw(graphics2D); - super.paintComponent(g); - } - - public void generateSimplexNoise() { - float frequency = 4.0f / (float) width; - - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - map[x][y] = (float) noise(x * frequency, y * frequency); - map[x][y] = (map[x][y] + 1) / 2; - } - } - } - - private static int perm[] = new int[512]; - - private static int fastfloor(double x) { - return x > 0 ? (int) x : (int) x - 1; - } - - // 2D simplex noise - public static double noise(double xin, double yin) { - double n0, n1, n2; // Noise contributions from the three corners - // Skew the input space to determine which simplex cell we're in - final double F2 = 0.5 * (Math.sqrt(3.0) - 1.0); - double s = (xin + yin) * F2; // Hairy factor for 2D - int i = fastfloor(xin + s); - int j = fastfloor(yin + s); - final double G2 = (3.0 - Math.sqrt(3.0)) / 6.0; - double t = (i + j) * G2; - double X0 = i - t; // Unskew the cell origin back to (x,y) space - double Y0 = j - t; - double x0 = xin - X0; // The x,y distances from the cell origin - double y0 = yin - Y0; - // For the 2D case, the simplex shape is an equilateral triangle. - // Determine which simplex we are in. - int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) - // coords - if (x0 > y0) { - i1 = 1; - j1 = 0; - } // lower triangle, XY order: (0,0)->(1,0)->(1,1) - else { - i1 = 0; - j1 = 1; - } // upper triangle, YX order: (0,0)->(0,1)->(1,1) - // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and - // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where - // c = (3-sqrt(3))/6 - double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed - // coords - double y1 = y0 - j1 + G2; - double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) - // unskewed coords - double y2 = y0 - 1.0 + 2.0 * G2; - // Work out the hashed gradient indices of the three simplex corners - int ii = i & 255; - int jj = j & 255; - int gi0 = perm[ii + perm[jj]] % 12; - int gi1 = perm[ii + i1 + perm[jj + j1]] % 12; - int gi2 = perm[ii + 1 + perm[jj + 1]] % 12; - // Calculate the contribution from the three corners - double t0 = 0.5 - x0 * x0 - y0 * y0; - if (t0 < 0) - n0 = 0.0; - else { - t0 *= t0; - n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for - // 2D gradient - } - double t1 = 0.5 - x1 * x1 - y1 * y1; - if (t1 < 0) - n1 = 0.0; - else { - t1 *= t1; - n1 = t1 * t1 * dot(grad3[gi1], x1, y1); - } - double t2 = 0.5 - x2 * x2 - y2 * y2; - if (t2 < 0) - n2 = 0.0; - else { - t2 *= t2; - n2 = t2 * t2 * dot(grad3[gi2], x2, y2); - } - // Add contributions from each corner to get the final noise value. - // The result is scaled to return values in the interval [-1,1]. - return 70.0 * (n0 + n1 + n2); - } - - private static double dot(int g[], double x, double y) { - return g[0] * x + g[1] * y; - } - - private static int grad3[][] = { { 1, 1, 0 }, { -1, 1, 0 }, { 1, -1, 0 }, - { -1, -1, 0 }, { 1, 0, 1 }, { -1, 0, 1 }, { 1, 0, -1 }, - { -1, 0, -1 }, { 0, 1, 1 }, { 0, -1, 1 }, { 0, 1, -1 }, - { 0, -1, -1 } }; - - private static int p[] = { 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, - 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, - 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, - 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, - 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, - 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, - 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, - 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, - 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, - 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, - 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, - 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, - 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, - 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, - 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, - 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, - 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, - 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 }; - - static { - for (int i = 0; i < 512; i++) - perm[i] = p[i & 255]; - } -} diff --git a/src/main/java/uk/me/webpigeon/strawberry/index.html b/src/main/java/uk/me/webpigeon/strawberry/index.html deleted file mode 100644 index 94600c8..0000000 --- a/src/main/java/uk/me/webpigeon/strawberry/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Strawberry visualisation

- - - - -

hehe - cool huh

- - \ No newline at end of file diff --git a/src/main/java/uk/me/webpigeon/util/CachedVector2DSource.java b/src/main/java/uk/me/webpigeon/util/CachedVector2DSource.java deleted file mode 100644 index e8367ed..0000000 --- a/src/main/java/uk/me/webpigeon/util/CachedVector2DSource.java +++ /dev/null @@ -1,38 +0,0 @@ -package uk.me.webpigeon.util; - -import java.util.HashMap; - -/** - * Caches Vector2D's - */ -public class CachedVector2DSource { - private HashMap> vectors; - int width; - int height; - - public CachedVector2DSource(int width, int height) { - vectors = new HashMap<>(width); - this.width = width; - this.height = height; - } - - public Vector2D getVector(int x, int y) { - if (!vectors.containsKey(x)) - vectors.put(x, new HashMap(height)); - if (!vectors.get(x).containsKey(y)) - vectors.get(x).put(y, new Vector2D(x, y, false)); - return vectors.get(x).get(y); - } - - public Vector2D getVector(double x, double y) { - return getVector((int) x, (int) y); - } - - public int numberOfVectors() { - int sum = 0; - for (HashMap temp : vectors.values()) { - sum += temp.size(); - } - return sum; - } -} diff --git a/src/main/java/uk/me/webpigeon/util/Vector2D.java b/src/main/java/uk/me/webpigeon/util/Vector2D.java deleted file mode 100644 index 2270fe0..0000000 --- a/src/main/java/uk/me/webpigeon/util/Vector2D.java +++ /dev/null @@ -1,515 +0,0 @@ -package uk.me.webpigeon.util; - -import java.util.Random; - -import javax.xml.bind.annotation.XmlAttribute; - -public final class Vector2D { - - // fields - @XmlAttribute(name = "x") - public double x; - @XmlAttribute(name = "y") - public double y; - - // default is to make them immutable. - private boolean mutable = false; - - private static final Random random = new Random(); - - /** - * Create a new immutable vector of size (0,0). - */ - public Vector2D() { - x = 0; - y = 0; - } - - /** - * Create a new vector of size (0,0). - * - * @param mutable true if vector can be modified - */ - public Vector2D(boolean mutable) { - x = 0; - y = 0; - this.mutable = mutable; - } - - /** - * Create a new immutable vector of a user defined size. - * - * @param x the x component - * @param y the y component - */ - public Vector2D(double x, double y) { - this.x = x; - this.y = y; - } - - /** - * Create a new vector of a user defined size. - * - * @param x the x component - * @param y the y component - * @param mutable true if vector can be modified - */ - public Vector2D(double x, double y, boolean mutable) { - this(x, y); - this.mutable = mutable; - } - - /** - * Create an immutable copy of vector which is a copy of another vector. - * - * @param v the vector to copy - */ - public Vector2D(Vector2D v) { - this.x = v.getX(); - this.y = v.getY(); - } - - /** - * Create an immutable copy of vector which is a copy of another vector. - * - * @param v the vector to copy - * @param mutable true if vector can be modified - */ - public Vector2D(Vector2D v, boolean mutable) { - this(v); - this.mutable = mutable; - } - - private void setToMutable() { - this.mutable = true; - } - - /** - * Update the position of this vector. - * - * @param x the new x position of this vector - * @param y the new y position of this vector - * @throws IllegalArgumentException is this is an immutable vector - */ - public void set(double x, double y) { - if (mutable) { - this.x = x; - this.y = y; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - /** - * Update the position of this vector. - * - * @param v the vector to copy from - * @throws IllegalArgumentException is this is an immutable vector - */ - public void set(Vector2D v) { - if (mutable) { - set(v.getX(), v.getY()); - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - // compare for equality (needs to allow for Object type argument...) - - /** - * Returns whether a provided object is equal to this one - * - * @param o the object to compare against - * @return boolean - * whether or not o was the same as this - */ - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - Vector2D vector2D = (Vector2D) o; - - if (Double.compare(vector2D.x, x) != 0) - return false; - if (Double.compare(vector2D.y, y) != 0) - return false; - - return true; - } - - /** - * Returns whether the provided object is at least as close to this - * as provided - * - * @param o the object to compare against - * @param eps The provided error rate epsilon - * @return boolean - * The result - true if they are ~equal - */ - public boolean roughlyEquals(Object o, float eps) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - Vector2D vector2D = (Vector2D) o; - - if (Math.abs(x - vector2D.x) > eps) - return false; - if (Math.abs(y - vector2D.y) > eps) - return false; - - return true; - } - - /** - * Returns the hashcode for this object - * - * @return int - * The hashcode result - */ - @Override - public int hashCode() { - int result; - long temp; - temp = x != +0.0d ? Double.doubleToLongBits(x) : 0L; - result = (int) (temp ^ (temp >>> 32)); - temp = y != +0.0d ? Double.doubleToLongBits(y) : 0L; - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - /** - * Returns the mathematical magnitude of this - * - * @return double - * The magnitude - */ - public double mag() { - return (Math.sqrt(x * x + y * y)); - } - - /** - * Returns the angle of this vector in respect to (1,0) - * - * @return double - * The angle - in Radians - */ - public double theta() { - return (Math.atan2(y, x)); - } - - /** - * Returns the direction between the two vectors starting from this one - * - * @param other The other vector for the comparison - * @return Vector2D - * The result of the operation - */ - public Vector2D getNormalDirectionBetween(Vector2D other) { - Vector2D direction = new Vector2D(true); - direction.x = other.x - x; - direction.y = other.y - y; - direction.normalise(); - // System.out.println(direction); - return direction; - } - - /** - * Returns the angle between the two Vectors in radians - * - * @param v The other vector - * @return double - * The angle - In radians - */ - public double angleBetween(Vector2D v) { - // return (float) - // Math.toDegrees(Math.acos(Math.toRadians(scalarProduct(v) / (mag() * - // v.mag())))); - // return (float) - // Math.toDegrees(Vector2D.toPolar(getNormalDirectionBetween(v)).getTheta()); - return Math.toDegrees(theta() - v.theta()); - } - - // String for displaying vector as text - @Override - public String toString() { - return "Vector2D{" + "x=" + x + ", y=" + y + '}'; - } - - // add argument vector - - /** - * Mathematical add operation - * @param v - * The Vector to add to this one - */ - public void add(Vector2D v) { - add(v.getX(), v.getY()); - } - - /** - * Static mathematical add operation, returning a new Vector2D - * @param first - * The first argument - * @param second - * The second argument - * @return Vector2D - * A unique Vector2D that represents the addition of - * the two inputs - */ - public static Vector2D add(final Vector2D first, final Vector2D second) { - Vector2D third = new Vector2D(first, true); - third.add(second); - return third; - } - - // add coordinate values - - /** - * Mathematical add operation with two inputs - * @param x - * The value to be added to X axis - * @param y - * The value to be added to Y axis - */ - public void add(double x, double y) { - if (mutable) { - this.x += x; - this.y += y; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - /** - * Static mathematical add operation with two inputs - * @param first - * The starting point to add to - * @param x - * The value to be added to the X axis - * @param y - * The value to be added to the Y axis - * @return - * The unique Vector2D that represents the result of the operation - */ - public static Vector2D add(final Vector2D first, double x, double y) { - Vector2D third = new Vector2D(first, true); - third.add(x, y); - return third; - } - - // weighted add - frequently useful - public void add(Vector2D v, double fac) { - add(v.getX() * fac, v.getY() * fac); - } - - public static Vector2D add(final Vector2D first, final Vector2D second, - double fac) { - Vector2D third = new Vector2D(first, true); - third.add(second.x * fac, second.y * fac); - return third; - } - - // subtract argument vector - public void subtract(Vector2D v) { - subtract(v.getX(), v.getY()); - } - - public static Vector2D subtract(final Vector2D first, final Vector2D second) { - Vector2D third = new Vector2D(first, true); - third.subtract(second); - return third; - } - - // subtract coordinate values - public void subtract(double x, double y) { - if (mutable) { - this.x -= x; - this.y -= y; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - public static Vector2D subtract(final Vector2D first, double x, double y) { - Vector2D third = new Vector2D(first, true); - third.subtract(x, y); - return third; - } - - // multiply with factor - public void multiply(double fac) { - if (mutable) { - this.x *= fac; - this.y *= fac; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - public static Vector2D multiply(Vector2D first) { - return multiply(first, 1.0); - } - - public static Vector2D multiply(Vector2D first, double fac) { - Vector2D second = new Vector2D(first, true); - second.multiply(fac); - return second; - } - - public void divide(double fac) { - // TODO Check for zero division - if (fac == 0) - throw new IllegalArgumentException( - "Factor is 0 - Can't divide by 0"); - if (mutable) { - this.x /= fac; - this.y /= fac; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - public static Vector2D divide(Vector2D first, double fac) { - Vector2D second = new Vector2D(first, true); - second.divide(fac); - second.mutable = first.mutable; - return second; - } - - // "wrap" vector with respect to given positive values w and h - - // method assumes that x >= -w and y >= -h - - public void wrap(double w, double h) { - if (mutable) { - if (x >= w) { - x = x % w; - } - if (y >= h) { - y = y % h; - } - if (x < 0) { - x = (x + w) % w; - } - if (y < 0) { - y = (y + h) % h; - } - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - // rotate by angle given in radians - public void rotate(double theta) { - set(x * Math.cos(theta) - y * Math.sin(theta), x * Math.sin(theta) + y - * Math.cos(theta)); - } - - // scalar product with argument vector - public double scalarProduct(Vector2D v) { - return ((x * v.getX()) + (y * v.getY())); - } - - public static Vector2D scalarProduct(Vector2D v1, Vector2D v2) { - Vector2D vector = new Vector2D(v1, true); - vector.scalarProduct(v2); - return vector; - } - - public static Vector2D toCartesian(Vector2D input) { - double x = (input.getY() * Math.cos(input.getR())); - double y = (input.getY() * Math.sin(input.getR())); - return new Vector2D(x, y, input.mutable); - } - - public static Vector2D toPolar(Vector2D input) { - double r = Math.sqrt(input.getX() * input.getX() + input.getY() - * input.getY()); - double theta = Math.tanh(input.getY() / input.getX()); - return new Vector2D(r, theta, input.mutable); - } - - // distance to argument vector - public double dist(Vector2D v) { - double tempX = (x - v.getX()) * (x - v.getX()); - double tempY = (y - v.getY()) * (y - v.getY()); - - return (Math.sqrt(tempX + tempY)); - } - - public void clone(Vector2D target) { - if (mutable) { - this.x = target.x; - this.y = target.y; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - public static void clone(Vector2D target, Vector2D source) { - if (source.mutable) { - source.x = target.x; - source.y = target.y; - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - // normalise vector so that mag becomes 1 - - // direction is unchanged - - public void normalise() { - if (mutable) { - if (x != 0 || y != 0) { - multiply((1 / mag())); - } - } else { - throw new IllegalAccessError("This Vector2D is immutable"); - } - } - - public static Vector2D normalise(Vector2D first) { - Vector2D second = new Vector2D(first, false); - second.normalise(); - if (first.mutable) - second.setToMutable(); - return second; - } - - public double getX() { - return x; - } - - public double getR() { - return x; - } - - public double getY() { - return y; - } - - public double getTheta() { - return y; - } - - public static Vector2D getRandomCartesian(double xLimit, double yLimit, - boolean mutable) { - return new Vector2D(random.nextFloat() * xLimit, random.nextFloat() - * yLimit, mutable); - } - - public static Vector2D getRandomPolar(double angleRange, double speedMin, - double speedMax, boolean mutable) { - return new Vector2D( - random.nextFloat() * angleRange - angleRange / 2, - (speedMin != speedMax) ? (random.nextFloat() * speedMax - speedMin) - + speedMin - : speedMax, mutable); - } -} diff --git a/src/main/java/uk/me/webpigeon/world/BehaviourEntity.java b/src/main/java/uk/me/webpigeon/world/BehaviourEntity.java deleted file mode 100644 index 36508f5..0000000 --- a/src/main/java/uk/me/webpigeon/world/BehaviourEntity.java +++ /dev/null @@ -1,30 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Graphics2D; - -/** - * Created by Piers on 03/03/2015. - */ -public class BehaviourEntity extends Entity { - - public String entityBehaviourName; - - static { - // Initialise the necessary behaviour for this - BehaviourRegistry.registerBehaviour("Wander", null); - } - - public BehaviourEntity(String entityBehaviourName) { - this.entityBehaviourName = entityBehaviourName; - } - - @Override - public void update() { - - } - - @Override - public void draw(Graphics2D graphics) { - - } -} diff --git a/src/main/java/uk/me/webpigeon/world/BehaviourRegistry.java b/src/main/java/uk/me/webpigeon/world/BehaviourRegistry.java deleted file mode 100644 index 9e9ebf5..0000000 --- a/src/main/java/uk/me/webpigeon/world/BehaviourRegistry.java +++ /dev/null @@ -1,27 +0,0 @@ -package uk.me.webpigeon.world; - -import java.util.HashMap; - -import uk.me.webpigeon.behaviour.TreeNode; - -/** - * Created by Piers on 03/03/2015. - */ -public class BehaviourRegistry { - - private static final HashMap behavioursByType = new HashMap<>(); - - public static void registerBehaviour(String uniqueName, TreeNode behaviour) { - if (behavioursByType.containsKey(uniqueName)) - throw new IllegalArgumentException( - "This unique reference string has already been used"); - behavioursByType.put(uniqueName, behaviour); - } - - public static TreeNode getBehaviour(String uniqueName) { - if (behavioursByType.containsKey(uniqueName)) - return behavioursByType.get(uniqueName); - throw new IllegalArgumentException( - "No behaviour has been registered with this name"); - } -} diff --git a/src/main/java/uk/me/webpigeon/world/DoubleWorld.java b/src/main/java/uk/me/webpigeon/world/DoubleWorld.java deleted file mode 100644 index c019e20..0000000 --- a/src/main/java/uk/me/webpigeon/world/DoubleWorld.java +++ /dev/null @@ -1,67 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.WindowConstants; - -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.piers.HunterAgent; -import uk.me.webpigeon.piers.HunterVillage; -import uk.me.webpigeon.util.Vector2D; - -public class DoubleWorld extends World { - - public DoubleWorld(int width, int height) { - super(width, height); - } - - @Override - public void draw(Graphics2D g2) { - scaleX = getWidth() / (width * 1.0); - scaleY = getHeight() / (height * 1.0); - g2.scale(scaleX, scaleY); - - g2.setColor(new Color(123, 191, 106)); - g2.fillRect(0, 0, width, height); - super.draw(g2); - } - - public static void main(String[] args) { - DoubleWorld.DEBUG_DRAW = true; - World world = new DoubleWorld(800, 600); - - HunterAgent.initialiseBehaviour(); - HunterAgent.initialiseSensors(); - - CowPopulationManager pop = new CowPopulationManager(10); - pop.addMoreCows(10, world); - world.addComponent(pop); - - for (int i = 0; i < 50; i++) { - world.addEntity(new GrassEntity(Vector2D.getRandomCartesian( - world.width, world.height, true))); - } - - world.addEntity(new HunterVillage(new Vector2D(250, 250))); - - - Thread t = new Thread(world); - t.start(); - - world.addMouseListener(new MouseListener(world)); - - JFrame frame = new JFrame("Crazy Double World"); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - frame.setPreferredSize(new Dimension(800, 600)); - frame.add(world); - frame.add(new JPanel(), BorderLayout.EAST); - frame.pack(); - frame.setVisible(true); - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/Entity.java b/src/main/java/uk/me/webpigeon/world/Entity.java deleted file mode 100644 index 8a29680..0000000 --- a/src/main/java/uk/me/webpigeon/world/Entity.java +++ /dev/null @@ -1,187 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import uk.me.webpigeon.joseph.cow.Property; -import uk.me.webpigeon.util.Vector2D; - -/** - * Base abstract class for all entity objects in the world - *

- * Created by Piers on 03/03/2015. - */ -public abstract class Entity { - - // The GridWorld in all its glory - protected World world; - protected List previousLocations; - protected Map properties; - protected Map propertyLimits; - protected Set tags; - - // Location of the entity - protected Vector2D location; - protected Vector2D velocity; - protected double rotation; - - // Health - protected int health; - - public Entity(double x, double y, EnumSet tags) { - this.location = new Vector2D(x, y, true); - this.velocity = new Vector2D(0, 0, true); - this.health = 100; - this.previousLocations = new ArrayList<>(); - - this.tags = tags; - this.properties = new EnumMap<>(Property.class); - this.propertyLimits = new EnumMap<>(Property.class); - } - - public Entity(double x, double y) { - this(x, y, EnumSet.noneOf(Tag.class)); - } - - public Entity() { - this(0, 0); - } - - public void update() { - location.add(velocity); - rotation = velocity.angleBetween(new Vector2D(1, 0)); - previousLocations.add(new Vector2D(location)); - location.wrap(world.width, world.height); - } - - public void draw(Graphics2D graphics) { - Graphics2D sandbox = (Graphics2D) graphics.create(); - sandbox.translate(location.getX(), location.getY()); - - // TODO piers - can you look at this, i'm assuming theta will be the - // rotation, but it looks wrong - // Vector2D polarVel = Vector2D.toPolar(velocity); - double theta = velocity.getTheta(); - sandbox.rotate(Math.toRadians(rotation)); - drawLocal(sandbox); - sandbox.rotate(Math.toRadians(-rotation)); - sandbox.translate(-location.getX(), -location.getY()); - } - - public void drawLocal(Graphics2D graphics) {} - - public void debugDraw(Graphics2D g) { - } - - /** - * Bind an entity to a world. - * - * This method is called by the world when the entity gets added to the - * world. - * - * @param world - * the world the entity now belongs to - */ - void bind(World world) { - this.world = world; - } - - public double getX() { - return location.getX(); - } - - public double getY() { - return location.getY(); - } - - public Vector2D getLocation() { - return location; - } - - public Vector2D getVelocity() { - return velocity; - } - - public boolean isDead() { - return health <= 0; - } - - public void setVelocity(Vector2D velocity) { - this.velocity = velocity; - } - - public int getHealth() { - return health; - } - - public boolean hasTag(Tag tag) { - return tags.contains(tag); - } - - public boolean hasAllTags(Tag ... extras) { - List tags = Arrays.asList(extras); - return tags.containsAll(tags); - } - - public int getZIndex() { - return 0; - } - - public Double setValue(Property prop, Double newValue) { - double maxVal = getLimit(prop, Double.MAX_VALUE); - double storeVal = Math.min(maxVal, newValue); - return properties.put(prop, storeVal); - } - - public Double getValue(Property prop) { - return properties.get(prop); - } - - public double getValue(Property prop, double defaultValue) { - Double val = getValue(prop); - if (val == null) { - assert getLimit(prop) == null || getLimit(prop) > defaultValue; - return defaultValue; - } - return val; - } - - public Double setLimit(Property prop, Double newValue) { - return propertyLimits.put(prop, newValue); - } - - public Double getLimit(Property prop) { - return propertyLimits.get(prop); - } - - public double getLimit(Property prop, double defaultVal) { - Double limit = getLimit(prop); - if (limit == null) { - return defaultVal; - } - return limit; - } - - public double getNormProp(Property prop) { - double maxVal = getLimit(prop, Double.MAX_VALUE); - double val = getValue(prop, Double.MAX_VALUE); - - if (maxVal == 0) { - return 0.0; - } - - return val / maxVal; - } - - public void setHealth(int newHealth) { - health = newHealth; - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/EntityFactory.java b/src/main/java/uk/me/webpigeon/world/EntityFactory.java deleted file mode 100644 index 05d41ef..0000000 --- a/src/main/java/uk/me/webpigeon/world/EntityFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -package uk.me.webpigeon.world; - -import java.util.Random; - -import uk.me.webpigeon.joseph.BaseStats; -import uk.me.webpigeon.joseph.CowPopulationManager; -import uk.me.webpigeon.joseph.GenomeCoding; -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.joseph.cow.CowFactory; -import uk.me.webpigeon.joseph.cow.Property; -import uk.me.webpigeon.joseph.utility.UtilitySystem; -import uk.me.webpigeon.steering.SeekBehaviour; -import uk.me.webpigeon.steering.WanderingBehaviour; -import uk.me.webpigeon.steering.WeightedBehaviour; -import uk.me.webpigeon.util.Vector2D; - -public class EntityFactory { - private EntityFactory() { - } - - public static double[] buildDefaultGenome() { - return new double[]{BaseStats.BASE_SAT, BaseStats.BASE_HUNGER, BaseStats.BASE_SIGHT}; - } - - public static Cow buildCow(World world, int maxWidth, int maxHeight, CowPopulationManager pop) { - return buildGenomeCow(maxWidth, maxHeight, world, pop, buildDefaultGenome()); - } - - - public static Cow buildGenomeCow(int maxWidth, int maxHeight, World world, CowPopulationManager pop, double[] genome) { - Random r = new Random(); - - int x = r.nextInt(maxWidth); - int y = r.nextInt(maxHeight); - - UtilitySystem util = new UtilitySystem(); - Cow cow = new Cow(x, y, util, genome); - - setGenome(cow, genome); - - CowFactory.applyCowActions(cow, world, pop, util); - return cow; - } - - public static void setGenome(Entity entity, double[] genome) { - entity.setValue(Property.SATURATION, genome[GenomeCoding.MAX_SAT_ID]); - entity.setLimit(Property.SATURATION, genome[GenomeCoding.MAX_SAT_ID]); - entity.setValue(Property.METABOLISM, Math.abs(genome[GenomeCoding.HUNGER_RATE])); - entity.setLimit(Property.METABOLISM, Math.abs(genome[GenomeCoding.HUNGER_RATE])); - entity.setValue(Property.SIGHT_RANGE, Math.abs(genome[GenomeCoding.SIGHT_RANGE])); - } -} diff --git a/src/main/java/uk/me/webpigeon/world/GrassEntity.java b/src/main/java/uk/me/webpigeon/world/GrassEntity.java deleted file mode 100644 index 0869974..0000000 --- a/src/main/java/uk/me/webpigeon/world/GrassEntity.java +++ /dev/null @@ -1,76 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.util.EnumSet; - -import javax.imageio.ImageIO; - -import uk.me.webpigeon.util.Vector2D; - -/** - * Created by Piers on 04/03/2015. - */ -public class GrassEntity extends Entity { - private static final Float GRASS_MAX_AGE = 1000f; - private static BufferedImage grassImage; - - static { - try { - grassImage = ImageIO.read(GrassEntity.class - .getResourceAsStream("/images/grass.jpg")); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private int age; - private int seedCooldown; - - public GrassEntity(Vector2D location) { - super(location.x, location.y, EnumSet.of(Tag.GRASS)); - this.age = 0; - this.location = location; - } - - public void update() { - super.update(); - age++; - seedCooldown--; - if (age > 500 && seedCooldown <= 0) { - Vector2D randomPolar = Vector2D.getRandomPolar(2 * Math.PI, 0, 150, true); - Vector2D cartDir = Vector2D.add(Vector2D.toCartesian(randomPolar),getLocation()); - - world.addEntity(new GrassEntity(cartDir)); - seedCooldown = (int)(Math.random() * 1000); - } - - if (age > GRASS_MAX_AGE) { - health = 0; - } - } - - @Override - public void draw(Graphics2D graphics) { - if (grassImage != null) { - //graphics.drawImage(grassImage, null, (int) (location.x - 16), - // (int) (location.y - 16)); - } - debugDraw(graphics); - } - - public void debugDraw(Graphics2D graphics) { - graphics.setColor(new Color(0.0f, 1 - (age / GRASS_MAX_AGE), 0.0f)); - graphics.fillRect((int)(location.x - 10), (int)(location.y - 10), 20, 20); - } - - public int getZIndex() { - return -100; - } - - public int getAge() { - return age; - } -} diff --git a/src/main/java/uk/me/webpigeon/world/GridWorld.java b/src/main/java/uk/me/webpigeon/world/GridWorld.java deleted file mode 100644 index 7cb9bce..0000000 --- a/src/main/java/uk/me/webpigeon/world/GridWorld.java +++ /dev/null @@ -1,56 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; - -import javax.swing.JFrame; -import javax.swing.WindowConstants; - -/** - * Created by Piers on 03/03/2015. - */ -public class GridWorld extends World { - - // size in pixels of the grid - private int gridSize = 50; - - public GridWorld(int width, int height) { - super(width, height); - } - - public static void main(String[] args) { - JFrame frame = new JFrame("Crazy Grid World"); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - - frame.setPreferredSize(new Dimension(800, 600)); - - World world = new GridWorld(10, 5); - frame.add(world); - - frame.pack(); - frame.setVisible(true); - } - - public int getCenterOfGrid(int input) { - return (input * gridSize) + (gridSize / 2); - } - - @Override - public Dimension getPreferredSize() { - return new Dimension((width * gridSize) + gridSize, (height * gridSize) - + gridSize); - } - - @Override - public void draw(Graphics2D g2) { - g2.setColor(Color.GREEN); - for (int i = 0; i <= Math.max(width, height); i++) { - if (i <= width) - g2.drawLine(i * gridSize, 0, i * gridSize, height * gridSize); - if (i <= height) - g2.drawLine(0, i * gridSize, width * gridSize, i * gridSize); - } - super.draw(g2); - } -} diff --git a/src/main/java/uk/me/webpigeon/world/MouseListener.java b/src/main/java/uk/me/webpigeon/world/MouseListener.java deleted file mode 100644 index d4ab59e..0000000 --- a/src/main/java/uk/me/webpigeon/world/MouseListener.java +++ /dev/null @@ -1,24 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Point; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import uk.me.webpigeon.util.Vector2D; - -public class MouseListener extends MouseAdapter { - private World world; - - public MouseListener(World world) { - this.world = world; - } - - @Override - public void mouseClicked(MouseEvent e) { - Point worldPoint = world.project(e.getPoint()); - Vector2D worldVec = new Vector2D(worldPoint.x, worldPoint.y); - Entity entity = world.getNearestEntityOfType(worldVec, Tag.AGENT); - System.out.println("CLICKY CLICKY "+entity); - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/RenderOrder.java b/src/main/java/uk/me/webpigeon/world/RenderOrder.java deleted file mode 100644 index bad50b7..0000000 --- a/src/main/java/uk/me/webpigeon/world/RenderOrder.java +++ /dev/null @@ -1,12 +0,0 @@ -package uk.me.webpigeon.world; - -import java.util.Comparator; - -public class RenderOrder implements Comparator { - - @Override - public int compare(Entity arg0, Entity arg1) { - return Integer.compare(arg0.getZIndex(), arg1.getZIndex()); - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/SteeringEntity.java b/src/main/java/uk/me/webpigeon/world/SteeringEntity.java deleted file mode 100644 index 018b618..0000000 --- a/src/main/java/uk/me/webpigeon/world/SteeringEntity.java +++ /dev/null @@ -1,65 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.util.ArrayList; -import java.util.EnumSet; - -import uk.me.webpigeon.steering.SteeringBehaviour; -import uk.me.webpigeon.util.Vector2D; - -public class SteeringEntity extends Entity { - private static final Double VECTOR_SMOOTHING = 0.2; - private static final Integer SIZE = 20; - private SteeringBehaviour behaviour; - private ArrayList previousLocations = new ArrayList<>(); - - public SteeringEntity(int x, int y, SteeringBehaviour behaviour) { - super(x, y, EnumSet.of(Tag.COW)); - setBehavour(behaviour); - } - - public final void setBehavour(SteeringBehaviour behaviour) { - this.behaviour = behaviour; - if (behaviour != null) { - behaviour.bind(this); - } - } - - @Override - public void update() { - if (behaviour != null) { - Vector2D targetForce = behaviour.process(); - setVelocity(targetForce); - } - super.update(); - } - - @Override - public void drawLocal(Graphics2D graphics) { - graphics.setColor(Color.WHITE); - graphics.fillRect(-SIZE, -(int) (SIZE / 2.0), SIZE * 2, SIZE); - - graphics.setColor(Color.black); - graphics.fillRect( -SIZE + SIZE * 2, -(int) (SIZE / 2.0) + (SIZE / 4), SIZE/4, SIZE/2); - } - - public void debugDraw(Graphics2D graphics) { - graphics.setColor(Color.DARK_GRAY); - for (int i = 0; i < previousLocations.size() - 1; i++) { - graphics.drawOval((int) previousLocations.get(i).getX() - SIZE / 6, - (int) previousLocations.get(i).getY() - SIZE / 6, SIZE / 3, - SIZE / 3); - } - - if (behaviour != null) { - behaviour.debugDraw(graphics); - } - } - - public void setVelocity(Vector2D velocity) { - Vector2D newVelocity = Vector2D.add(velocity, velocity, VECTOR_SMOOTHING); - super.setVelocity(newVelocity); - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/Tag.java b/src/main/java/uk/me/webpigeon/world/Tag.java deleted file mode 100644 index 77750c3..0000000 --- a/src/main/java/uk/me/webpigeon/world/Tag.java +++ /dev/null @@ -1,9 +0,0 @@ -package uk.me.webpigeon.world; - -public enum Tag { - AGENT, - GRASS, - COW, - HUNTER, - VILLAGE -} diff --git a/src/main/java/uk/me/webpigeon/world/World.java b/src/main/java/uk/me/webpigeon/world/World.java deleted file mode 100644 index d0619df..0000000 --- a/src/main/java/uk/me/webpigeon/world/World.java +++ /dev/null @@ -1,214 +0,0 @@ -package uk.me.webpigeon.world; - -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.geom.Point2D; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; - -import javax.swing.JComponent; - -import uk.me.webpigeon.joseph.cow.Cow; -import uk.me.webpigeon.util.Vector2D; - -/** - * Created by Piers on 03/03/2015. - */ -public class World extends JComponent implements Runnable { - public static Boolean DEBUG_DRAW = false; - private List entities; - private List components; - - private List addList; - - protected double scaleX; - protected double scaleY; - - // width of the world - protected int width; - // height of the world - protected int height; - - // boolean to say are we paused - protected boolean paused; - // boolean to say are we still running - protected boolean running = true; - - // How long we aim to spend on each tick - protected int tickDelay = 20; - // Time spent since last update and this update - protected long timeOfLastUpdate; - protected long previousTime; - - public World(int width, int height) { - this.width = width; - this.height = height; - this.entities = new ArrayList(); - this.components = new ArrayList(); - this.addList = new ArrayList(); - } - - @Override - public void run() { - while (running) { - try { - - Thread.sleep(tickDelay); - long currentTime = System.nanoTime(); - timeOfLastUpdate = currentTime - previousTime; - previousTime = currentTime; - - if (!paused) { - update(timeOfLastUpdate); - repaint(); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - /** - * Adds a new WorldComponent to this world - * - * @param component The WorldComponent to be added - */ - public void addComponent(WorldComponent component) { - components.add(component); - } - - /** - * Adds the entity to the world and binds the world to the entity - * - * @param entity The entity to be added to this world - */ - public void addEntity(Entity entity) { - addList.add(entity); - } - - public void removeEntity(Entity entity) { - entity.health = 0; - } - - public void update(long timeOfLastUpdate) { - - Iterator entItr = entities.iterator(); - while (entItr.hasNext()) { - Entity entity = entItr.next(); - entity.update(); - - //reap dead entities - if (entity.isDead()) { - entItr.remove(); - } - } - - for (WorldComponent component : components) { - component.update(this, 0); - } - - Iterator addItr = addList.iterator(); - while (addItr.hasNext()) { - Entity entity = addItr.next(); - entities.add(entity); - entity.bind(this); - addItr.remove(); - } - - } - - /** - * Gets the entities that are within the provided radius to the provided source entity - * - * @param source The start point for the check - * @param radius The search radius to use - * @return The list of entities that are close enough - */ - public ArrayList getNearEntities(Entity source, double radius) { - Vector2D srcLoc = source.getLocation(); - List closeBy = entities.stream() - .filter(s -> srcLoc.dist(s.location) <= radius) - .collect(Collectors.toList()); - - return new ArrayList(closeBy); - } - - /** - * Gets the entities that are within the provided radius to the provided source entity and are of a certain class - * - * @param source The start point for the check - * @param radius The search radius to use - * @param type The class of the entity to search for - * @return The list of entities that are close enough of the correct class - */ - public ArrayList getNearEntities(Entity source, double radius, Tag type){ - ArrayList closeBy = getNearEntities(source, radius); - List filtered = closeBy.stream().filter(e -> e.hasTag(type)).collect(Collectors.toList()); - return new ArrayList(filtered); - } - - /** - * Gets the nearest entity of a given type to the provided source - * - * @param source The start point for the check - * @param type The clas of the entity to search for - * @return The entity that is the nearest of that type - */ - public Entity getNearestEntityOfType(Entity source, Tag type) { - return getNearestEntityOfType(source.location, type); - } - - public Entity getNearestEntityOfType(Vector2D source, Tag type) { - List entityList = entities.stream().filter(s -> s.hasTag(type)) - .sorted( (s1, s2) -> Double.compare(source.dist(s1.getLocation()), source.dist(s2.getLocation()))) - .collect(Collectors.toList()); - - if (entityList.isEmpty()) { - return null; - } - - return entityList.get(0); - } - - @Deprecated - public Entity getNearestEntityOfType(Entity source, Class type) { - if (type.equals(Cow.class)) { - return getNearestEntityOfType(source, Tag.COW); - } - - return null; - } - - protected void paintComponent(Graphics g) { - Graphics2D g2 = (Graphics2D) g; - draw(g2); - } - - public void draw(Graphics2D g2) { - List renderList = new ArrayList<>(entities); - Collections.sort(renderList, new RenderOrder()); - - for (Entity entity : renderList) { - entity.draw(g2); - if (DEBUG_DRAW) { - entity.debugDraw(g2); - } - } - } - - public Point project(Point2D p) { - int x = (int) (p.getX() * scaleX); - int y = (int) (p.getY() * scaleY); - return new Point(x, y); - } - - public Collection getEntities() { - return Collections.unmodifiableList(entities); - } - -} diff --git a/src/main/java/uk/me/webpigeon/world/WorldComponent.java b/src/main/java/uk/me/webpigeon/world/WorldComponent.java deleted file mode 100644 index 855cc00..0000000 --- a/src/main/java/uk/me/webpigeon/world/WorldComponent.java +++ /dev/null @@ -1,7 +0,0 @@ -package uk.me.webpigeon.world; - -public interface WorldComponent { - - public void update(World world, int delta); - -} diff --git a/src/main/resources/hunters/ 950_2015_ 3_13_ 8_21.ser b/src/main/resources/hunters/ 950_2015_ 3_13_ 8_21.ser deleted file mode 100644 index 3132f58..0000000 Binary files a/src/main/resources/hunters/ 950_2015_ 3_13_ 8_21.ser and /dev/null differ diff --git a/src/main/resources/hunters/ 1250_2015_ 3_13_ 8_ 3.ser b/src/main/resources/hunters/ 1250_2015_ 3_13_ 8_ 3.ser deleted file mode 100644 index 752c9e1..0000000 Binary files a/src/main/resources/hunters/ 1250_2015_ 3_13_ 8_ 3.ser and /dev/null differ diff --git a/src/main/resources/hunters/1250.000000_2015_ 3_13_ 7_59.ser b/src/main/resources/hunters/1250.000000_2015_ 3_13_ 7_59.ser deleted file mode 100644 index 3a24915..0000000 Binary files a/src/main/resources/hunters/1250.000000_2015_ 3_13_ 7_59.ser and /dev/null differ diff --git a/src/main/resources/images/grass.jpg b/src/main/resources/images/grass.jpg deleted file mode 100644 index 82ffb5a..0000000 Binary files a/src/main/resources/images/grass.jpg and /dev/null differ diff --git a/src/test/java/uk/me/webpigeon/util/TestBasicVectors.java b/src/test/java/uk/me/webpigeon/util/TestBasicVectors.java deleted file mode 100644 index f818961..0000000 --- a/src/test/java/uk/me/webpigeon/util/TestBasicVectors.java +++ /dev/null @@ -1,40 +0,0 @@ -package uk.me.webpigeon.util; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -public class TestBasicVectors { - private final Double EPSILON = 0.0002; - - @Test - public void testVectorConstructorWorks() { - float expectX = 10; - float expectY = 5; - - Vector2D v2 = new Vector2D(expectX, expectY); - assertEquals(expectX, v2.x, EPSILON); - assertEquals(expectY, v2.y, EPSILON); - assertEquals(expectX, v2.getX(), EPSILON); - assertEquals(expectY, v2.getY(), EPSILON); - } - - /*@Test - public void testCloneDoesNotAlterOrig() { - float expectX = 10; - float expectY = 5; - - Vector2D v1 = new Vector2D(expectX, expectY); - Vector2D v2 = new Vector2D(); - v2.clone(v1); - - v2.multiply(10); - - assertEquals(expectX, v1.x, EPSILON); - assertEquals(expectY, v1.y, EPSILON); - assertEquals(expectX, v1.getX(), EPSILON); - assertEquals(expectY, v1.getY(), EPSILON); - - }*/ - -} diff --git a/src/test/java/uk/me/webpigeon/util/TestVectorNorm.java b/src/test/java/uk/me/webpigeon/util/TestVectorNorm.java deleted file mode 100644 index 54764b9..0000000 --- a/src/test/java/uk/me/webpigeon/util/TestVectorNorm.java +++ /dev/null @@ -1,69 +0,0 @@ -package uk.me.webpigeon.util; - -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; -import java.util.Collection; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -@RunWith(Parameterized.class) -public class TestVectorNorm { - private final Double EPSILON = 0.0002; - - @Parameters - public static Collection data() { - return Arrays.asList(new Object[][] { - // already normalised vectors - { 0, 1, 0, 1 }, - { 0, -1, 0, -1 }, - { 1, 0, 1, 0 }, - { -1, 0, -1, 0 }, - - // un-normialised vectors - { 0, 2, 0, 1 }, - { 0, -2, 0, -1 }, - { 2, 0, 1, 0 }, - { -2, 0, -1, 0 }, - - // > 1 un-normalised vectors - { 0, 0.5, 0, 1 }, - { 0, -0.5, 0, -1 }, - { 0.5, 0, 1, 0 }, - { -0.5, 0, -1, 0 }, - - // 45 degree vectors - { 1, 1, 0.7071067811865475, 0.7071067811865475 }, - { -1, -1, -0.7071067811865475, -0.7071067811865475 }, - { 1, -1, 0.7071067811865475, -0.7071067811865475 }, - { -1, 1, -0.7071067811865475, 0.7071067811865475 }, }); - } - - private double x; - private double y; - private double nX; - private double nY; - - public TestVectorNorm(double x, double y, double nX, double nY) { - this.x = x; - this.y = y; - this.nX = nX; - this.nY = nY; - } - - @Test - public void test() { - Vector2D testVector = new Vector2D(x, y, true); - Vector2D expectedNormal = new Vector2D(nX, nY); - - testVector.normalise(); - - assertEquals(expectedNormal.x, testVector.x, EPSILON); - assertEquals(expectedNormal.y, testVector.y, EPSILON); - assertEquals(expectedNormal.mag(), 1.0, EPSILON); - } - -} diff --git a/testapidocs/allclasses-frame.html b/testapidocs/allclasses-frame.html new file mode 100644 index 0000000..152cb32 --- /dev/null +++ b/testapidocs/allclasses-frame.html @@ -0,0 +1,21 @@ + + + + + + +All Classes (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + +

All Classes

+ + + diff --git a/testapidocs/allclasses-noframe.html b/testapidocs/allclasses-noframe.html new file mode 100644 index 0000000..1870b46 --- /dev/null +++ b/testapidocs/allclasses-noframe.html @@ -0,0 +1,21 @@ + + + + + + +All Classes (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + +

All Classes

+ + + diff --git a/testapidocs/constant-values.html b/testapidocs/constant-values.html new file mode 100644 index 0000000..806fc5a --- /dev/null +++ b/testapidocs/constant-values.html @@ -0,0 +1,124 @@ + + + + + + +Constant Field Values (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Constant Field Values

+

Contents

+
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/deprecated-list.html b/testapidocs/deprecated-list.html new file mode 100644 index 0000000..4191f1a --- /dev/null +++ b/testapidocs/deprecated-list.html @@ -0,0 +1,124 @@ + + + + + + +Deprecated List (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/help-doc.html b/testapidocs/help-doc.html new file mode 100644 index 0000000..9d4ca63 --- /dev/null +++ b/testapidocs/help-doc.html @@ -0,0 +1,225 @@ + + + + + + +API Help (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html new file mode 100644 index 0000000..141c509 --- /dev/null +++ b/testapidocs/index-all.html @@ -0,0 +1,155 @@ + + + + + + +Index (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + +
+ + + + + + + +
+ + +
D T U  + + +

D

+
+
data() - Static method in class uk.me.webpigeon.util.TestVectorNorm
+
 
+
+ + + +

T

+
+
test() - Method in class uk.me.webpigeon.util.TestVectorNorm
+
 
+
TestBasicVectors - Class in uk.me.webpigeon.util
+
 
+
TestBasicVectors() - Constructor for class uk.me.webpigeon.util.TestBasicVectors
+
 
+
testVectorConstructorWorks() - Method in class uk.me.webpigeon.util.TestBasicVectors
+
 
+
TestVectorNorm - Class in uk.me.webpigeon.util
+
 
+
TestVectorNorm(double, double, double, double) - Constructor for class uk.me.webpigeon.util.TestVectorNorm
+
 
+
+ + + +

U

+
+
uk.me.webpigeon.util - package uk.me.webpigeon.util
+
 
+
+D T U 
+ +
+ + + + + + + +
+ + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/index.html b/testapidocs/index.html new file mode 100644 index 0000000..544396e --- /dev/null +++ b/testapidocs/index.html @@ -0,0 +1,72 @@ + + + + + + +Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="uk/me/webpigeon/util/package-summary.html">Non-frame version</a>.</p> + + + diff --git a/testapidocs/overview-tree.html b/testapidocs/overview-tree.html new file mode 100644 index 0000000..2a952b3 --- /dev/null +++ b/testapidocs/overview-tree.html @@ -0,0 +1,138 @@ + + + + + + +Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/package-list b/testapidocs/package-list new file mode 100644 index 0000000..c6c30a7 --- /dev/null +++ b/testapidocs/package-list @@ -0,0 +1 @@ +uk.me.webpigeon.util diff --git a/testapidocs/script.js b/testapidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/testapidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/testapidocs/stylesheet.css b/testapidocs/stylesheet.css new file mode 100644 index 0000000..cebb4fd --- /dev/null +++ b/testapidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; + width:100%; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/testapidocs/uk/me/webpigeon/util/TestBasicVectors.html b/testapidocs/uk/me/webpigeon/util/TestBasicVectors.html new file mode 100644 index 0000000..165f658 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/TestBasicVectors.html @@ -0,0 +1,271 @@ + + + + + + +TestBasicVectors (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + + +
+
uk.me.webpigeon.util
+

Class TestBasicVectors

+
+
+ +
+
    +
  • +
    +
    +
    public class TestBasicVectors
    +extends Object
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestBasicVectors

        +
        public TestBasicVectors()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        testVectorConstructorWorks

        +
        public void testVectorConstructorWorks()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/TestVectorNorm.html b/testapidocs/uk/me/webpigeon/util/TestVectorNorm.html new file mode 100644 index 0000000..2c00871 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/TestVectorNorm.html @@ -0,0 +1,290 @@ + + + + + + +TestVectorNorm (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + + +
+
uk.me.webpigeon.util
+

Class TestVectorNorm

+
+
+ +
+
    +
  • +
    +
    +
    public class TestVectorNorm
    +extends Object
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestVectorNorm

        +
        public TestVectorNorm(double x,
        +                      double y,
        +                      double nX,
        +                      double nY)
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/class-use/TestBasicVectors.html b/testapidocs/uk/me/webpigeon/util/class-use/TestBasicVectors.html new file mode 100644 index 0000000..addca09 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/class-use/TestBasicVectors.html @@ -0,0 +1,124 @@ + + + + + + +Uses of Class uk.me.webpigeon.util.TestBasicVectors (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Uses of Class
uk.me.webpigeon.util.TestBasicVectors

+
+
No usage of uk.me.webpigeon.util.TestBasicVectors
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/class-use/TestVectorNorm.html b/testapidocs/uk/me/webpigeon/util/class-use/TestVectorNorm.html new file mode 100644 index 0000000..ba7efb1 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/class-use/TestVectorNorm.html @@ -0,0 +1,124 @@ + + + + + + +Uses of Class uk.me.webpigeon.util.TestVectorNorm (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Uses of Class
uk.me.webpigeon.util.TestVectorNorm

+
+
No usage of uk.me.webpigeon.util.TestVectorNorm
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/package-frame.html b/testapidocs/uk/me/webpigeon/util/package-frame.html new file mode 100644 index 0000000..324e8f6 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/package-frame.html @@ -0,0 +1,22 @@ + + + + + + +uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + +

uk.me.webpigeon.util

+ + + diff --git a/testapidocs/uk/me/webpigeon/util/package-summary.html b/testapidocs/uk/me/webpigeon/util/package-summary.html new file mode 100644 index 0000000..180019c --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/package-summary.html @@ -0,0 +1,146 @@ + + + + + + +uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Package uk.me.webpigeon.util

+
+
+ +
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/package-tree.html b/testapidocs/uk/me/webpigeon/util/package-tree.html new file mode 100644 index 0000000..da8ae6a --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/package-tree.html @@ -0,0 +1,134 @@ + + + + + + +uk.me.webpigeon.util Class Hierarchy (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Hierarchy For Package uk.me.webpigeon.util

+
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2015. All rights reserved.

+ + diff --git a/testapidocs/uk/me/webpigeon/util/package-use.html b/testapidocs/uk/me/webpigeon/util/package-use.html new file mode 100644 index 0000000..53bbd14 --- /dev/null +++ b/testapidocs/uk/me/webpigeon/util/package-use.html @@ -0,0 +1,124 @@ + + + + + + +Uses of Package uk.me.webpigeon.util (Goldsmiths AIs stuff 0.0.1-SNAPSHOT Test API) + + + + + + + + + + + +
+

Uses of Package
uk.me.webpigeon.util

+
+
No usage of uk.me.webpigeon.util
+ + + + +

Copyright © 2015. All rights reserved.

+ +