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); }
// 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(); } }