예제 #1
0
    public void customTriggerOuterShellEnable(VolColEntity e, Collider c)
    {
        Quaternion q = c.transform.parent.rotation;

        q = Quaternion.Inverse(q);
        Vector3 dir = q * (c.transform.position - this.transform.position);

        /* Debug.Log(c.transform.position.x + " " + this.transform.FindChild("childHead").position.x);
         * Debug.Log(c.transform.position.y + " " + this.transform.FindChild("childHead").position.y);
         * Debug.Log(c.transform.position.z+ " " + this.transform.FindChild("childHead").position.z);*/

        dir.Normalize();
        enableFace(dir, e.transform.Find("Voxel").gameObject);
    }
예제 #2
0
    // Use this for initialization
    void Start()
    {
        GameObject     volumericCollisionHandled = GameObject.Find("volumericCollisionHandled");
        SphereCollider sc;
        BoxCollider    bc;

        if (volumericCollisionHandled == null)
        {
            volumericCollisionHandled      = new GameObject();
            volumericCollisionHandled.name = "volumericCollisionHandled";
            sc = volumericCollisionHandled.AddComponent <SphereCollider>();
            volumericCollisionHandled.transform.parent   = this.transform;
            volumericCollisionHandled.transform.position = this.transform.position;

            bc = this.gameObject.AddComponent <BoxCollider>();
        }
        else
        {
            sc = volumericCollisionHandled.GetComponent <SphereCollider>();
            bc = GetComponent <BoxCollider>();
        }

        sc.radius    = 1;
        sc.isTrigger = true;
        volumericCollisionHandled.layer = LayerMask.NameToLayer("colliderGuardian");
        //  bc.size = this.transform.localScale;

        Load();
        if (numberOfSubdividesX != numberOfSegmentsXOld || numberOfSubdividesY != numberOfSegmentsYOld || numberOfSubdividesZ != numberOfSegmentsZOld)
        {
            this.recreate        = true;
            numberOfSegmentsXOld = numberOfSubdividesX;
            numberOfSegmentsYOld = numberOfSubdividesY;
            numberOfSegmentsZOld = numberOfSubdividesZ;
            Save();
        }

        if (this.recreate || (GameObject.Find("childHead") == null))
        {
            Debug.Log("recreate");
            DestroyImmediate(this.headTree);
            DestroyImmediate(GameObject.Find("childHead"));

            GameObject child = new GameObject();
            child.name = "childHead";
            child.transform.position         = this.transform.position;
            child.transform.parent           = this.transform;
            child.transform.localEulerAngles = new Vector3(0, 0, 0);

            child.transform.localScale = new Vector3(1, 1, 1);
            this.transform.localScale  = new Vector3(1f / (Mathf.Pow(2, numberOfSubdividesY)), this.transform.localScale.y, this.transform.localScale.z);

            this.headTree = child.AddComponent <VolColEntity>() as VolColEntity;
            BoxCollider bc2 = child.AddComponent <BoxCollider>();
            bc2.size                  = bc.size;
            bc2.isTrigger             = true;
            headTree.transform.parent = this.transform;
            headTree.Init(child, bc2, this.numberOfSubdividesX, this.numberOfSubdividesY, this.numberOfSubdividesZ);

            this.recreate = false;
        }
        else
        {
            this.headTree = GameObject.Find("childHead").GetComponent <VolColEntity>();
        }

        if (Application.isPlaying)
        {
            customTriggerFunctionEnabled = true;
            customTriggerFunction        = this.customTriggerOuterShellEnable;

            createOuterShellCollider();
        }
    }