Beispiel #1
0
    public void setFlags()
    {
        Enumerations.States theState = state;
        switch (theState)
        {
        case Enumerations.States.Unpopulated:
            isPopulated = false;
            isStable    = false;
            isComplex   = false;
            isLocked    = false;
            break;

        case Enumerations.States.Populated:
            isPopulated = true;
            isStable    = false;
            isComplex   = false;
            isLocked    = false;
            break;

        case Enumerations.States.Stable:
            isPopulated = true;
            isStable    = true;
            isComplex   = false;
            isLocked    = false;
            break;

        case Enumerations.States.Potential_Complex:
            isPopulated = true;
            isStable    = true;
            isComplex   = false;
            isLocked    = false;
            break;

        case Enumerations.States.Complex:
            isPopulated = true;
            isStable    = true;
            isComplex   = true;
            isLocked    = false;
            break;

        case Enumerations.States.Border:
            isPopulated = false;
            isStable    = false;
            isComplex   = false;
            isLocked    = true;
            break;
        }
    }
Beispiel #2
0
    public void setNextState()
    {
        if (isLocked == false)
        {
            if (isPopulated == true)
            {
                if (!isStable && (getNumPopulatedNeighbors() < 2 || getNumPopulatedNeighbors() > 3))
                {
                    m_stabilizationCount = 0;
                    state = Enumerations.States.Unpopulated;
                    return;
                }

                if (isComplex)
                {
                    state = Enumerations.States.Complex;
                    return;
                }
                else
                {
                    if (isStable)
                    {
                        if (getNumStableNeighbors() >= 3)
                        {
                            state = Enumerations.States.Potential_Complex;
                            return;
                        }
                        else
                        {
                            state = Enumerations.States.Stable;
                            return;
                        }
                    }
                    else
                    {
                        if (m_stabilizationCount >= stabilizationPeriod)
                        {
                            state = Enumerations.States.Stable;
                            return;
                        }
                    }
                }

                /*if (m_stabilizationCount >= STABLIZATION_PERIOD)
                 * {
                 *  if (getNumStableNeighbors() >= 3)
                 *  {
                 *      if (!isComplex)
                 *      {
                 *          state = Enumerations.States.Potential_Complex;
                 *          return;
                 *      }
                 *      state = Enumerations.States.Complex;
                 *      return;
                 *  }
                 *  state = Enumerations.States.Stable;
                 *  return;
                 * }*/

                m_stabilizationCount++;
                state = Enumerations.States.Populated;
                return;
            }
            else
            {
                if (getNumPopulatedNeighbors() == 3)
                {
                    m_stabilizationCount++;
                    state = Enumerations.States.Populated;
                    return;
                }
            }
            m_stabilizationCount = 0;
            state = Enumerations.States.Unpopulated;
            return;
        }
    }
Beispiel #3
0
    public void setDecal()
    {
        Enumerations.States theState = state;
        switch (theState)
        {
        case Enumerations.States.Unpopulated:
            nodeDecal = null;
            break;

        case Enumerations.States.Populated:
            nodeDecal = null;
            break;

        case Enumerations.States.Stable:
            if (nodeDecal == null)
            {
                nodeDecal = GameObject.CreatePrimitive(PrimitiveType.Cube);
                nodeDecal.transform.position   = new Vector3(position.x, 1, position.z);
                nodeDecal.transform.localScale = decalScale;
                nodeDecal.name = "Decal for node @ " + nodeDecal.transform.position;
            }
            else
            {
                nodeDecal.transform.position   = new Vector3(position.x, 1, position.z);
                nodeDecal.transform.localScale = decalScale;
            }
            break;

        case Enumerations.States.Potential_Complex:
            if (nodeDecal == null)
            {
                nodeDecal = GameObject.CreatePrimitive(PrimitiveType.Cube);
                nodeDecal.transform.position   = new Vector3(position.x, 1, position.z);
                nodeDecal.transform.localScale = decalScale;
                nodeDecal.name = "Decal for node @ " + nodeDecal.transform.position;
                setDecalColor(Color.blue);
            }
            else
            {
                nodeDecal.transform.position   = new Vector3(position.x, 1, position.z);
                nodeDecal.transform.localScale = decalScale;
                setDecalColor(Color.green);
            }
            break;

        case Enumerations.States.Complex:
            if (nodeDecal == null)
            {
                nodeDecal = GameObject.CreatePrimitive(PrimitiveType.Cube);
                nodeDecal.transform.position = new Vector3(position.x, 1, position.z);
                nodeDecal.name = "Decal for node @ " + nodeDecal.transform.position;
                nodeDecal.transform.localScale = new Vector3(1, complexity, 1);
                if (complexity == 0)
                {
                    Debug.Log("The complexity for node " + nodeDecal.transform.position + " was 0.");
                    setDecalColor(Color.red);
                }
            }
            else
            {
                nodeDecal.transform.position   = new Vector3(position.x, 1, position.z);
                nodeDecal.transform.localScale = new Vector3(1, complexity, 1);
                if (complexity == 0)
                {
                    Debug.Log("The complexity for node " + nodeDecal.transform.position + " was 0 and the node already existed.");
                    setDecalColor(Color.black);
                }
            }
            break;

        case Enumerations.States.Border:
            if (nodeDecal != null)
            {
                GameObject.Destroy(nodeDecal);
                Debug.Log("A node decal at " + nodeDecal.transform.position + " was destroyed because it became a border.");
                nodeDecal = null;
            }
            break;
        }
    }