Predicates.IN C# (CSharp) Метод

IN() публичный Метод

public IN ( object args ) : Vector3
args object
Результат Vector3
    public Vector3 IN(object[] args)
    {
        Vector3 outValue = Vector3.zero;
        if (args [0] is GameObject) {	// on an object
            GameObject obj = ((GameObject)args [0]);
            Bounds bounds = new Bounds ();

            // check if object is concave
            bool isConcave = false;
            Voxeme voxeme = obj.GetComponent<Voxeme> ();
            if (voxeme != null) {
                isConcave = (voxeme.voxml.Type.Concavity == "Concave");
                isConcave = (isConcave && Vector3.Dot(obj.transform.up,Vector3.up) > 0.5f);
            }
            //Debug.Log (isConcave);

            if (isConcave) {	// concavity activated
                // get surface with concavity
                // which side is concavity on? - assume +Y for now
                bounds = Helper.GetObjectWorldSize (obj);

                float concavityMinY = bounds.min.y;
                foreach (Renderer renderer in obj.GetComponentsInChildren<Renderer>()) {
                    Debug.Log (renderer.gameObject.name + " " + Helper.GetObjectWorldSize (renderer.gameObject).min.y);
                    if (Helper.GetObjectWorldSize (renderer.gameObject).min.y > concavityMinY) {
                        concavityMinY = Helper.GetObjectWorldSize (renderer.gameObject).min.y;
                    }
                }

                outValue = new Vector3 (obj.transform.position.x,
                    concavityMinY,
                    obj.transform.position.z);
            }
            else {	// concavity deactivated
                outValue = new Vector3(float.NaN,float.NaN,float.NaN);
            }
            Debug.Log ("in: " + Helper.VectorToParsable (outValue));
        }
        else if (args [0] is Vector3) {	// on a location
            outValue = (Vector3)args[0];
        }

        return outValue;
    }