private Texture2D GenerateLeafTexture(int size) { TextureBuilder texturer = new TextureBuilder(); Color leafColor = new Color(0.1f, 0.5f, 0.1f, 1.0f); if (m_leaf_randomize_colors) { /* * Color[] randomColors = new Color[4]; * randomColors[0] = new Color(Random.Range(0.2f,0.8f),Random.Range(0.2f,0.8f),Random.Range(0.2f,0.8f),1.0f); * for(int i = 1; i <= 3; i++) { * randomColors[i] = randomColors[0]*new Color(Random.Range(0.2f,0.8f),Random.Range(0.2f,0.8f),Random.Range(0.2f,0.8f),1.0f); * } * texturer.Color4GridTexture(size,randomColors); */ Color[] randomColors = new Color[4]; if (Random.Range(0.00f, 1.00f) > specialChance) { // Use normal values randomColors[0] = new Color(Random.Range(leafColor.r - treeColorVar.r, leafColor.r + treeColorVar.r), Random.Range(leafColor.g - treeColorVar.g, leafColor.g + treeColorVar.g), Random.Range(leafColor.b - treeColorVar.b, leafColor.b + treeColorVar.b), 1.0f); for (int i = 1; i <= 3; i++) { randomColors[i] = randomColors[0] * new Color(Random.Range(leafColor.r - treeColorVar.r, leafColor.r + treeColorVar.r), Random.Range(leafColor.g - treeColorVar.g, leafColor.g + treeColorVar.g), Random.Range(leafColor.b - treeColorVar.b, leafColor.b + treeColorVar.b), 1.0f); } } else { // Use special values randomColors[0] = new Color(Random.Range(treeColorSpecial.r - treeColorSpecialVar.r, treeColorSpecial.r + treeColorSpecialVar.r), Random.Range(treeColorSpecial.g - treeColorSpecialVar.g, treeColorSpecial.g + treeColorSpecialVar.g), Random.Range(treeColorSpecial.b - treeColorSpecialVar.b, treeColorSpecial.b + treeColorSpecialVar.b), 1.0f); for (int i = 1; i <= 3; i++) { randomColors[i] = randomColors[0] * new Color(Random.Range(treeColorSpecial.r - treeColorSpecialVar.r, treeColorSpecial.r + treeColorSpecialVar.r), Random.Range(treeColorSpecial.g - treeColorSpecialVar.g, treeColorSpecial.g + treeColorSpecialVar.g), Random.Range(treeColorSpecial.b - treeColorSpecialVar.b, treeColorSpecial.b + treeColorSpecialVar.b), 1.0f); } } texturer.Color4GridTexture(size, randomColors); } else { texturer.Color4GridTexture(size, m_leaf_colors); } //texturer.OverlaySolidNoise(m_leaf_color-new Color(0.3f,0.3f,0.3f,0.0f),0.5f,20.0f,new Vector2(0.0f,0.0f),1.0f); //texturer.OverlaySolidNoise(m_leaf_color,0.6f,20.0f,new Vector2(0.0f,0.0f),1.0f); if (m_leaf_randomize_shape) { texturer.CutOutLeafShape(1, 8, true); } else { // Default leaf shape TextureBuilder.LeafCurvePoint[] leafPoints = new TextureBuilder.LeafCurvePoint[2]; //Vector2 up = new Vector2(0.0f,0.1f); //Vector2 down = new Vector2(0.0f,-0.1f); leafPoints[0].start = new Vector2(0.5f, 0.0f); leafPoints[0].mid1 = leafPoints[0].start + new Vector2(0.0f, 0.5f); leafPoints[0].end = new Vector2(0.2f, 0.7f); leafPoints[0].mid2 = leafPoints[0].end + new Vector2(0.0f, -0.5f); leafPoints[1].start = new Vector2(0.2f, 0.7f); leafPoints[1].mid1 = leafPoints[1].start + new Vector2(0.2f, -0.3f); leafPoints[1].end = new Vector2(0.5f, 1.0f); leafPoints[1].mid2 = leafPoints[1].end + new Vector2(-0.1f, -0.3f); texturer.CutOutLeafShape(leafPoints, 2, true); } texturer.GetTexture().Apply(); return(texturer.GetTexture()); }