Пример #1
0
    private void Start()
    {
        GameObject rabbitPrefab = Resources.Load <GameObject>("Rabbit");

        planet            = GameObject.Find("Planet").GetComponent <Planet>();
        planetNoiseScript =
            GameObject.Find("Planet").GetComponent <PBSNoiseScript>();

        GameObject[] food  = GameObject.FindGameObjectsWithTag("Food");
        GameObject[] water = GameObject.FindGameObjectsWithTag("Water");
        //GameObject rabbit = GameObject.Find("Rabbit");

        for (int i = 0; i < 100; ++i)
        {
            GameObject newFood = GameObject.Instantiate(food[0]);
            newFood.transform.position = Random.onUnitSphere;
        }

        for (int i = 0; i < 100; ++i)
        {
            GameObject newWater = GameObject.Instantiate(water[0]);
            newWater.transform.position = Random.onUnitSphere;
        }

        //for (int i = 0; i < 50; ++i) {
        //    EntityFactory.AddEntityInWorld("rabbit", Random.onUnitSphere);
        //    //GameObject newRabbit = GameObject.Instantiate(rabbitPrefab);
        //    //newRabbit.transform.position = Random.onUnitSphere;
        //}

        //for (int i = 0; i < 10; ++i) {
        //    EntityFactory.AddEntityInWorld("fox", Random.onUnitSphere);
        //}

        GameObject[] entities = GameObject.FindGameObjectsWithTag(entityTag);

        foreach (GameObject entity in entities)
        {
            Vector3 normalizedPosition = entity.transform.position.normalized;
            entity.transform.position =
                GetGroundPositionWithElevation(normalizedPosition, .5f);
        }

        food  = GameObject.FindGameObjectsWithTag("Food");
        water = GameObject.FindGameObjectsWithTag("Water");

        foreach (GameObject entity in food)
        {
            Vector3 normalizedPosition = entity.transform.position.normalized;
            entity.transform.position =
                GetGroundPositionWithElevation(normalizedPosition, .5f);
        }

        foreach (GameObject entity in water)
        {
            Vector3 normalizedPosition = entity.transform.position.normalized;
            entity.transform.position =
                GetGroundPositionWithElevation(normalizedPosition, .5f);
        }
    }
    public LuaAPI()
    {
        planet            = GameObject.Find("Planet").GetComponent <Planet>();
        planetNoiseScript =
            GameObject.Find("Planet").GetComponent <PBSNoiseScript>();

        EntityFactory.Initialize();
    }
Пример #3
0
    void Start()
    {
        planet      = GetComponent <Planet>();
        noiseScript = GetComponent <PBSNoiseScript>();
        if (!noiseScript)
        {
            return;
        }

        if (StaticSettings.useStaticSettings)
        {
            interval       = StaticSettings.planetIntervalBeforeNewGeneration;
            populationSize = StaticSettings.planetPopulationSize;
            selectedCount  = StaticSettings.planetSelectedCount;
            probaMutation  = StaticSettings.planetProbaMutation;
            NbSubdivision  = StaticSettings.planetIcosahedronSubDiv;
        }

        //Recupération de l'objet System.Type représentant le type sous-jacent de l'objet
        Type objectType = noiseScript.GetType();

        solutions = new List <List <GeneticValue> >();
        notes     = new List <float>();

        // Setup script lua
        script = null;
        if (File.Exists(StaticSettings.planetScript))
        {
            UserData.RegisterAssembly();
            UserData.RegisterType <Vector3>();
            UserData.RegisterType <Color>();

            script = new Script();
            script.Options.ScriptLoader = new MoonSharp.Interpreter.Loaders.FileSystemScriptLoader();
            ((MoonSharp.Interpreter.Loaders.ScriptLoaderBase)script.Options.ScriptLoader).ModulePaths = new string[] { Application.dataPath + "/?",
                                                                                                                       Application.dataPath + "/?.lua",
                                                                                                                       Application.dataPath + "/lua/?",
                                                                                                                       Application.dataPath + "/lua/?.lua" };
            script.Options.DebugPrint = Debug.Log;

            script.Globals["noiseScript"] = planet.pbsNoiseScript;
            script.Globals["bestScore"]   = float.MinValue;

            script.Globals["getPoints"]  = (Func <Vector3[]>)GetScorerPoints;
            script.Globals["isNaN"]      = (Func <float, bool>)IsNaN;
            script.Globals["isInfinity"] = (Func <float, bool>)IsInfinity;

            script.DoFile(StaticSettings.planetScript);
            populationSize = (int)script.Globals.Get("populationSize").Number;
        }

        StartCoroutine(RunAlgoGenetic());
    }
Пример #4
0
 private void Awake()
 {
     cameraTransform    = GameObject.FindGameObjectWithTag("MainCamera").transform;
     lastCameraPosition = cameraTransform.position;
     pbsNoiseScript     = GetComponent <PBSNoiseScript>();
     if (pbsNoiseScript)
     {
         noiseGenerator = pbsNoiseScript.GetNoiseGenerator();
     }
     else
     {
         noiseGenerator = new PBSNoiseGenerator();
     }
 }
Пример #5
0
 public override void ApplyValue(PBSNoiseScript noiseScript)
 {
     noiseScript.GetType().GetField(name).SetValue(noiseScript, value);
 }
Пример #6
0
 public virtual void ApplyValue(PBSNoiseScript noiseScript)
 {
 }