Exemplo n.º 1
0
    List <Vector3> PolyLassoObjectToWorldShape(PolyLassoObject polyLassoObject)
    {
        Transform objParent = polyLassoObject.gameObject.transform.parent;

        polyLassoObject.gameObject.transform.parent = null;

        List <Vector3> result = new List <Vector3>();

        for (int u = 0; u < polyLassoObject.shape.Count; u++)
        {
            Vector3 worldPoint = new Vector3(polyLassoObject.shape[u].x + polyLassoObject.gameObject.transform.position.x,
                                             polyLassoObject.shape[u].y + polyLassoObject.gameObject.transform.position.y,
                                             polyLassoObject.shape[u].z + polyLassoObject.gameObject.transform.position.z);

            worldPoint = RotatePointAroundPivot(worldPoint, polyLassoObject.gameObject.transform.position, polyLassoObject.gameObject.transform.rotation.eulerAngles, polyLassoObject.gameObject.transform.localScale);
            worldPoint = new Vector3(worldPoint.x, polyLassoObject.gameObject.transform.position.y, worldPoint.z);

            result.Add(worldPoint);
        }
        polyLassoObject.gameObject.transform.parent = objParent;

        return(result);
    }
Exemplo n.º 2
0
    public void SetPolyLassoObjectShapePointPairs(PolyLassoObject pObj)
    {
        pObj.shapePointPairs = new List <Vector3P>();
        List <Vector3> shape = PolyLassoObjectToWorldShape(pObj);

        float offsetZ = Mathf.Abs(surforgeSettings.textureBorders.minZ - surforgeSettings.textureBorders.maxZ) * surforgeSettings.root.transform.localScale.z;
        float offsetX = Mathf.Abs(surforgeSettings.textureBorders.minX - surforgeSettings.textureBorders.maxX) * surforgeSettings.root.transform.localScale.x;


        for (int i = 0; i < shape.Count; i++)
        {
            Vector3P pair = new Vector3P();
            if (i < (shape.Count - 1))
            {
                pair.a = shape[i];
                pair.b = shape[i + 1];
            }
            else
            {
                pair.a = shape[i];
                pair.b = shape[0];
            }
            pObj.shapePointPairs.Add(pair);

            if (surforgeSettings.seamless)
            {
                Vector3P pairSeamless1 = new Vector3P();
                pairSeamless1.a = new Vector3(pair.a.x + offsetX, pair.a.y, pair.a.z);
                pairSeamless1.b = new Vector3(pair.b.x + offsetX, pair.b.y, pair.b.z);
                pObj.shapePointPairs.Add(pairSeamless1);

                Vector3P pairSeamless2 = new Vector3P();
                pairSeamless2.a = new Vector3(pair.a.x - offsetX, pair.a.y, pair.a.z);
                pairSeamless2.b = new Vector3(pair.b.x - offsetX, pair.b.y, pair.b.z);
                pObj.shapePointPairs.Add(pairSeamless2);

                Vector3P pairSeamless3 = new Vector3P();
                pairSeamless3.a = new Vector3(pair.a.x, pair.a.y, pair.a.z + offsetZ);
                pairSeamless3.b = new Vector3(pair.b.x, pair.b.y, pair.b.z + offsetZ);
                pObj.shapePointPairs.Add(pairSeamless3);

                Vector3P pairSeamless4 = new Vector3P();
                pairSeamless4.a = new Vector3(pair.a.x, pair.a.y, pair.a.z - offsetZ);
                pairSeamless4.b = new Vector3(pair.b.x, pair.b.y, pair.b.z - offsetZ);
                pObj.shapePointPairs.Add(pairSeamless4);

                Vector3P pairSeamless5 = new Vector3P();
                pairSeamless5.a = new Vector3(pair.a.x + offsetX, pair.a.y, pair.a.z + offsetZ);
                pairSeamless5.b = new Vector3(pair.b.x + offsetX, pair.b.y, pair.b.z + offsetZ);
                pObj.shapePointPairs.Add(pairSeamless5);

                Vector3P pairSeamless6 = new Vector3P();
                pairSeamless6.a = new Vector3(pair.a.x + offsetX, pair.a.y, pair.a.z - offsetZ);
                pairSeamless6.b = new Vector3(pair.b.x + offsetX, pair.b.y, pair.b.z - offsetZ);
                pObj.shapePointPairs.Add(pairSeamless6);

                Vector3P pairSeamless7 = new Vector3P();
                pairSeamless7.a = new Vector3(pair.a.x - offsetX, pair.a.y, pair.a.z + offsetZ);
                pairSeamless7.b = new Vector3(pair.b.x - offsetX, pair.b.y, pair.b.z + offsetZ);
                pObj.shapePointPairs.Add(pairSeamless7);

                Vector3P pairSeamless8 = new Vector3P();
                pairSeamless8.a = new Vector3(pair.a.x - offsetX, pair.a.y, pair.a.z - offsetZ);
                pairSeamless8.b = new Vector3(pair.b.x - offsetX, pair.b.y, pair.b.z - offsetZ);
                pObj.shapePointPairs.Add(pairSeamless8);
            }
        }
    }