/// <summary> /// Sets position, scale and rotation of tree obj to match given pTargetTree /// </summary> private static void SetRefTreeObjTransform(ref CRefTree pRefTree, CTree pTargetTree, int pAngleOffset) { Vector3 arrayCenter = CProjectData.GetArrayCenter(); float minHeight = CProjectData.GetMinHeight(); //float treeHeight = pTargetTree.peak.maxHeight.Y - (float)groundHeight; float treeHeight = pTargetTree.GetTreeHeight(); float heightRatio = treeHeight / pRefTree.GetTreeHeight(); pRefTree.Obj.Scale = heightRatio * Vector3.One; //align position to tree pRefTree.Obj.Position = pTargetTree.peak.Center; pRefTree.Obj.Position.Z -= pRefTree.GetTreeHeight() * heightRatio; //move obj so it is at 0,0,0 pRefTree.Obj.Position -= arrayCenter; pRefTree.Obj.Position -= Vector3.UnitZ * minHeight; pRefTree.Obj.Rotation = new Vector3(0, -pAngleOffset, 0); //in OBJ format Y = height CUtils.SwapYZ(ref pRefTree.Obj.Position); }