public void ToggleItem(int j) { for (int i = 0; i < 3; i++) { ItemsToggle[i].GetComponent <Image>().sprite = proriti[0]; } if (EventSystem.current.currentSelectedGameObject.GetComponent <Toggle>().isOn) { IsProritet = true; if (j == 0) { ProritetTreeType = Tree.TreeType.Sticks; } else if (j == 1) { ProritetTreeType = Tree.TreeType.Leaves; } else if (j == 2) { ProritetTreeType = Tree.TreeType.Fruit; } ItemsToggle[j].GetComponent <Image>().sprite = proriti[1]; } }
public static void TreeCreate(vec3 pos, int seed, Tree.TreeType type) { // at least 2m distance vec2 pos2D = new vec2(pos.x, pos.z); foreach (var tree in entitySave.trees) { if (vec2.distance(pos2D, new vec2(tree.x, tree.z)) < 4f) { return; } } Random random = new Random(seed); entitySave.trees.Add(new EntitySave.TreeSave { x = pos.x, y = pos.y, z = pos.z, seed = seed, type = type }); AddTree(pos, random, type); }
private static void AddTree(vec3 pos, Random random, Tree.TreeType type) { World world = Instance.world; vec3 up = new vec3((float)random.NextDouble() * .05f - .025f, 1, (float)random.NextDouble() * .05f - .025f).Normalized; vec3 randXZ = ((float)random.NextDouble() * 2.0f - 1.0f) * vec3.UnitX + ((float)random.NextDouble() * 2.0f - 1.0f) * vec3.UnitZ; vec3 left = vec3.cross(up, randXZ.Normalized).Normalized; vec3 front = vec3.cross(left, up); // Scale the trees randomly left.x *= 0.8f + 0.4f * (float)random.NextDouble(); up.y *= 0.7f + 0.6f * (float)random.NextDouble(); front.z *= 0.8f + 0.4f * (float)random.NextDouble(); mat4 transform1 = mat4.Translate(pos); mat4 transform2 = new mat4(left, up, front, vec3.Zero); //world.AddEntity(TreeGenerator.Birch(8 + (float)random.NextDouble() * 10f, .3f + (float)random.NextDouble() * .1f, random), transform); Tree t = null; switch (type) { case Tree.TreeType.Birch: t = TreeGenerator.OldTree(random, transform1, transform2, world); break; case Tree.TreeType.Cactus: t = TreeGenerator.Cactus(random, transform1, transform2, world); break; } t.Position = pos; world.AddEntity(t, transform1); trees.Add(t); }