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