Esempio n. 1
0
    // Update is called once per frame

    /*
     *  void Update () {
     *  if (Input.GetMouseButton(0))
     *  {
     *      HandleInputCreate();
     *  }
     *  if (Input.GetMouseButton(1))
     *  {
     *      HandleInputDestory();
     *  }
     * }
     *
     */

    public void HandleInput(Ray inputRay, float createOrDestoy)
    {
        //Ray inputRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        //print("cr/de" + createOrDestoy);
        RaycastHit hit;

        if (Physics.Raycast(inputRay, out hit))
        {
            print(hit.transform.name);
            PlanetObjectsHandler objects = hit.collider.GetComponent <PlanetObjectsHandler>();

            if (objects)
            {
                //print("has handler");
                Vector3 point = hit.point;
                point += hit.normal;
                if (createOrDestoy > 0)
                {
                    objects.AddObject(point, hit.normal, size, radius * createOrDestoy, activeCreate);
                }
                else
                {
                    objects.RemoveObject(point, hit.normal, size, radius * -createOrDestoy, activeCreate);
                }
            }
        }
    }
Esempio n. 2
0
    void HandleInputDestory()
    {
        Ray        inputRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(inputRay, out hit))
        {
            PlanetObjectsHandler objects = hit.collider.GetComponent <PlanetObjectsHandler>();
            if (objects)
            {
                Vector3 point = hit.point;
                point += hit.normal;
                objects.RemoveObject(point, hit.normal, size, radius, activeCreate);
            }
        }
    }
Esempio n. 3
0
    public void Build()
    {
        poh               = GetComponent <PlanetObjectsHandler>();
        cVtex             = GetComponent <ColorVertexes>();
        deformingMesh     = GetComponent <MeshFilter>().mesh;
        updatingColors    = deformingMesh.colors;
        originalVerices   = deformingMesh.vertices;
        displacedVertices = new Vector3[originalVerices.Length];
        for (int i = 0; i < originalVerices.Length; i++)
        {
            displacedVertices[i] = originalVerices[i];
        }
        vertexVelocities = new Vector3[originalVerices.Length];
        colliderMesh     = GetComponent <MeshCollider>();

        built = true;
        //InvokeRepeating("DoAnUpdate", 0f, 0.05f);
    }
Esempio n. 4
0
    private void ProcessEvent(EventItem e)
    {
        switch (e.theEvent)
        {
        case Event.moveTo:    //keep moving if not at target
            if (!AtPos(e.happenTo.transform.position, e.target))
            {
                e.happenTo.MoveTo(e.target);
                //EnqueueEvent(e);
            }
            else
            {
                e.happenTo.state = Event.idle;
            }
            break;

        case Event.born:    //keep moving if not at target
            if (!AtPos(e.happenTo.transform.position, e.target))
            {
                e.happenTo.MoveTo(e.target);
                //EnqueueEvent(e);
            }
            else
            {
                e.happenTo.state = Event.idle;
            }
            break;

        case Event.idle:
            e.happenTo.SetText("What is the meaning of life...");
            break;

        case Event.dead:
            print(e.happenTo.name + " died");
            GameManager.instance.currentSystem.GetComponent <SystemAttributes>().systemCurrency += e.happenTo.belief;
            AIManager.instance.NPCList.Remove(e.happenTo);
            Destroy(e.happenTo.gameObject);
            break;

        case Event.build:
            e.happenTo.SetText("time to build");
            //print(GameManager.instance.player.GetComponent<PlayerAttributes>().orbiting.name);
            PlanetObjectsHandler poh = GameManager.instance.player.GetComponent <PlayerAttributes>().orbiting.GetComponent <PlanetObjectsHandler>();
            GameObject           t   = poh.AddSingle(e.happenTo.transform.position, Vector3.forward, 100f, 10f, PrefabManager.instance.NPCHouse);
            //e.happenTo.state = Event.houseBuilt;
            if (t != null)
            {
                e.happenTo.SetText("what a lovely home");
                e.happenTo.home = t;
                //go to the house
                e.happenTo.state     = Event.houseBuilt;
                e.happenTo.targetPos = t.transform.position;
                e.happenTo.belief   += e.happenTo.fickleness * 10;
            }
            else
            {
                e.happenTo.belief -= e.happenTo.fickleness;
            }
            break;

        case Event.reproduce:
            if (e.happenTo.home == null)    // || e.happenTo.partner == null)
            {
                e.happenTo.SetText("Should build a house before kids");
                e.happenTo.state = Event.idle;
                //EnqueueEvent(new EventItem(e.happenTo, Event.idle, e.happenTo.home));
                break;
            }

            if (!AtPos(e.happenTo.transform.position, e.happenTo.home.transform.position))
            {
                e.happenTo.SetText("Bout to get me that PUHSAAHHH");
                e.happenTo.MoveTo(e.happenTo.home.transform.position);
            }
            else      //if (AtPos(e.happenTo.partner.transform.localPosition, e.happenTo.home.transform.position)) {
            {
                e.happenTo.SetText("I Did a Birth");
                e.happenTo.state   = Event.idle;
                e.happenTo.belief += e.happenTo.fickleness * 5;
                AIManager.instance.BirthChild(e.happenTo);
            }
            break;

        case Event.fight:
            if (!AtPos(e.happenTo.transform.localPosition, e.target))
            {
                e.happenTo.MoveTo(e.target);
            }
            else
            {
                if ((e.happenTo.attacking.health -= e.happenTo.fightingSkill) <= 0)
                {
                    e.happenTo.attacking = null;
                    e.happenTo.state     = Event.idle;
                }
            }
            break;

        default:
            break;
        }
        return;
    }