Exemplo n.º 1
0
    public static void GeneratePlanet(Planet.Type type, Transform planetTransform)
    {
        List <PlanetElement> _availablePlanetElements = GetElementsForType(type);

        float totalSize = 0;

        // Get a random planet shape
        GameObject[] availableCores = Resources.LoadAll <GameObject>("Art/Planet Elements/Core");
        GameObject   planetCore     = availableCores[Random.Range(0, availableCores.Length)];
        GameObject   planetInstance = Object.Instantiate(planetCore, planetTransform.position, Quaternion.identity, planetTransform);

        planetInstance.GetComponent <MeshRenderer>().material = GetMaterialForType(type);

        while (totalSize <= 360.0f)
        {
            // Get a random planet element from the available list
            PlanetElement e = _availablePlanetElements[Random.Range(0, _availablePlanetElements.Count)];

            if (totalSize + e.angularSize > 360.0f)
            {
                return;
            }

            PlanetElement.InstanceInfos objectInstance = new PlanetElement.InstanceInfos(totalSize, e.angularSize, e.Visual, e.materialType, e.color1, e.color2);

            // Instantiate planetObject
            GameObject instance = Object.Instantiate(objectInstance.Prop, planetTransform.position, objectInstance.GetOrientation(), planetInstance.transform);

            //string materialType = e.materialType == PlanetElement.MaterialType.Musgrave ? "Mat_Musgrave" : "Mat_Wave";
            instance.GetComponent <MeshRenderer>().material = e.mat;

            _elements.Add(objectInstance);
            totalSize += e.angularSize;
        }
    }
Exemplo n.º 2
0
    private static List <PlanetElement> GetElementsForType(Planet.Type type)
    {
        PlanetElement[]      e = Resources.LoadAll <PlanetElement>("Art/Planet Elements/Forest Planet");
        List <PlanetElement> finalElementList = new List <PlanetElement>();

        foreach (PlanetElement p in e.Where((a) => a.AvailableOnPlanetType.HasFlag(type)))
        {
            finalElementList.Add(p);
        }

        return(finalElementList);
    }
Exemplo n.º 3
0
 private static Material GetMaterialForType(Planet.Type type)
 {
     // hack for now
     return(Resources.Load <Material>("Materials/Core/Mat_Musgrave"));
 }