## org.ascape.model.rule
Class Propogate

    java.lang.Object
      org.ascape.model.AscapeObject
          org.ascape.model.rule.Rule
              org.ascape.model.rule.Propogate

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, HasName, RandomFunctions

Direct Known Subclasses:
  PropogateScapeOnly

    public class Propogate

extends Rule

A rule that executes on the target scape, all children of the target scape, and (if desired) all members of this or any children of the target scape. Any scape with members active set to false will not be propagated to. If isScapeOnly returns true, the rule will be propogated down to scapes, and will not be executed on any non-scape member cells.

Since:
  1.0
Version:
  1.5
Author:
  Miles Parker
See Also:
  `Scape.isMembersActive()`, Serialized Form

Field Summary

Fields inherited from class org.ascape.model.AscapeObject
`ARBITRARY_SEED, name, PLATFORM_DEFAULT_COLOR, scape`

Constructor Summary
`Propogate(java.lang.String name)` Constructs a propogate rule with the provided name.

Method Summary
`void` `execute(Agent agent)` Execute rule on child scapes and (optionally) agents.
`boolean` `isRandomExecution()` Returns false.
`boolean` `isScapeOnly()` Is this rule intended only to be propogated to scapes?.

Methods inherited from class org.ascape.model.rule.Rule
`getScape, isCauseRemoval, isIterateAll, setScape`

Methods inherited from class org.ascape.model.AscapeObject
`clone, diffDeep, diffDeep, diffDeepBFS, diffDeepDFS, diffDeepValidate, diffDeepVisit, equalsDeep, equalsDeep, equalsDeep, getComparisonStream, getName, getRandom, getRandomSeed, randomInRange, randomInRange, randomIs, randomToLimit, reseed, setComparisonStream, setName, setRandom, setRandomSeed, toString`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### Propogate

    public Propogate(java.lang.String name)

  Constructs a propogate rule with the provided name. It is strongly encouraged to provide a name for all rules.

  Parameters:
    `name` - the name of this object

Method Detail

### execute

    public void execute(Agent agent)

  Execute rule on child scapes and (optionally) agents.

  Specified by:
    `execute` in class `Rule`
  Parameters:
    `agent` - the target agent

### isScapeOnly

    public boolean isScapeOnly()

  Is this rule intended only to be propogated to scapes?.

  Returns:
    true, if is scape only

### isRandomExecution

    public boolean isRandomExecution()

  Returns false. Initialization should not need to be random, since it should not depend on the state of any other agent.

  Overrides:
    `isRandomExecution` in class `Rule`
  Returns:
    true, if is random execution