示例#1
0
    protected override void OnIterationStart()
    {
        var taggedObjects = tagManager.Query <MyLightRandomizerTag>();

        foreach (var taggedObject in taggedObjects)
        {
            var light = taggedObject.GetComponent <Light>();
            if (light)
            {
                light.color = lightColorParameter.Sample();
            }

            var tag = taggedObject.GetComponent <MyLightRandomizerTag>();
            if (tag)
            {
                tag.SetIntensity(lightIntensityParameter.Sample());
            }
        }

        taggedObjects = tagManager.Query <MyLightSwitcherTag>();
        foreach (var taggedObject in taggedObjects)
        {
            var tag = taggedObject.GetComponent <MyLightSwitcherTag>();
            if (tag)
            {
                tag.Act(lightIntensityParameter.Sample());
            }
        }
    }
示例#2
0
    private Vector2 RandomPointInRect(Rect rect)
    {
        float x = random.Sample() * rect.width + rect.xMin;
        float y = random.Sample() * rect.height + rect.yMin;

        return(new Vector2(x, y));
    }
示例#3
0
    protected override void OnIterationStart()
    {
        var taggedObjects           = tagManager.Query <MyLightRandomizerTag>();
        var taggedBackgroundObjects = tagManager.Query <MyLightBackgroundRandomizerTag>();

        int k_BaseColor = Shader.PropertyToID("_BaseColor");

        float intensity = lightIntensityParameter.Sample();

        foreach (var taggedObject in taggedObjects)
        {
            var light     = taggedObject.GetComponent <Light>();
            var direction = taggedObject.GetComponent <Transform>();

            taggedObject.transform.rotation = Quaternion.Euler(rotation.Sample());
            light.intensity = intensity;
            light.color     = lightColorParameter.Sample();
        }

        float intensityMapped = intensity / 5 + 0.6f;

        foreach (var taggedBackgroundObject in taggedBackgroundObjects)
        {
            var meshRenderer = taggedBackgroundObject.GetComponent <MeshRenderer>();
            meshRenderer.material.SetColor(k_BaseColor, new Color(intensityMapped, intensityMapped, intensityMapped, 1));
        }
    }
    private float AdjustedValue(float rootValue, float range)
    {
        float change      = range * random.Sample();
        float adjustedVal = rootValue + change;

        return(adjustedVal);
    }
示例#5
0
    protected override void OnIterationStart()
    {
        var taggedObjects = tagManager.Query <MyForegroundScaleRandomizerTag>();

        foreach (var taggedObject in taggedObjects)
        {
            taggedObject.transform.localScale = Vector3.one * scale.Sample();
        }
    }
        protected override void OnIterationStart()
        {
            var tags = tagManager.Query <ForegroundOccluderScaleRandomizerTag>();

            foreach (var tag in tags)
            {
                tag.transform.localScale = Vector3.one * scale.Sample();
            }
        }
        /// <summary>
        /// Randomizes the hue offset of tagged objects at the start of each scenario iteration
        /// </summary>
        protected override void OnIterationStart()
        {
            var tags = tagManager.Query <HueOffsetRandomizerTag>();

            foreach (var tag in tags)
            {
                var renderer = tag.GetComponent <MeshRenderer>();
                renderer.material.SetFloat(k_HueOffsetShaderProperty, hueOffset.Sample());
            }
        }
    };                                                                                                // in range (0, 1)

    protected override void OnIterationStart()
    {
        IEnumerable <YRotationRandomizerTag> tags = tagManager.Query <YRotationRandomizerTag>();

        foreach (YRotationRandomizerTag tag in tags)
        {
            float yRotation = rotationRange.Sample();

            // sets rotation
            tag.SetYRotation(yRotation);
        }
    }
        /// <summary>
        /// Randomizes the rotation of tagged directional lights at the start of each scenario iteration
        /// </summary>
        protected override void OnIterationStart()
        {
            var lightObjects = tagManager.Query <SunAngleRandomizerTag>();

            foreach (var lightObject in lightObjects)
            {
                var earthSpin      = Quaternion.AngleAxis((hour.Sample() + 12f) / 24f * 360f, Vector3.down);
                var timeOfYearRads = dayOfTheYear.Sample() / 365f * Mathf.PI * 2f;
                var earthTilt      = Quaternion.Euler(Mathf.Cos(timeOfYearRads) * 23.5f, 0, Mathf.Sin(timeOfYearRads) * 23.5f);
                var earthLat       = Quaternion.AngleAxis(latitude.Sample(), Vector3.right);
                var lightRotation  = earthTilt * earthSpin * earthLat;
                lightObject.transform.rotation = Quaternion.Euler(90, 0, 0) * Quaternion.Inverse(lightRotation);
            }
        }
        /// <summary>
        /// Generates a foreground layer of objects at the start of each scenario iteration
        /// </summary>
        protected override void OnIterationStart()
        {
            var seed             = SamplerState.NextRandomState();
            var placementSamples = PoissonDiskSampling.GenerateSamples(
                placementArea.x, placementArea.y, occluderSeparationDistance.Sample(), seed);
            var offset = new Vector3(placementArea.x, placementArea.y, 0f) * -0.5f;

            foreach (var sample in placementSamples)
            {
                var instance = m_GameObjectOneWayCache.GetOrInstantiate(prefabs.Sample());
                instance.transform.position = new Vector3(sample.x, sample.y, depth) + offset;
            }
            placementSamples.Dispose();
        }
        void RandomizeAnimation(AnimationRandomizerTag tag)
        {
            var animator = tag.gameObject.GetComponent <Animator>();

            animator.applyRootMotion = tag.applyRootMotion;

            var overrider = tag.animatorOverrideController;

            if (overrider != null && tag.animationClips.GetCategoryCount() > 0)
            {
                overrider[k_ClipName] = tag.animationClips.Sample();
                animator.Play(k_StateName, 0, m_FloatParameter.Sample());
            }
        }
    protected override void OnIterationStart()
    {
        /*Runs at the start of every iteration*/
        IEnumerable <LightRandomizerTag> tags = tagManager.Query <LightRandomizerTag>();

        foreach (LightRandomizerTag tag in tags)
        {
            var light = tag.gameObject.GetComponent <Light>();
            light.intensity = lightIntensityParameter.Sample();
            light.color     = lightColorParameter.Sample();

            Vector3 rotation = new Vector3(rotationX.Sample(), rotationY.Sample(), tag.gameObject.transform.eulerAngles.z);
            tag.gameObject.transform.rotation = Quaternion.Euler(rotation);
        }
    }
        protected override void OnIterationStart()
        {
            var randomizerTags = tagManager.Query <LightRandomizerTag>();

            foreach (var tag in randomizerTags)
            {
                var light = tag.GetComponent <Light>();
                light.color = lightColorParameter.Sample();
                tag.SetIntensity(lightIntensityParameter.Sample());
            }

            var switcherTags = tagManager.Query <LightSwitcherTag>();

            foreach (var tag in switcherTags)
            {
                tag.Act(auxParameter.Sample());
            }
        }
    void PlaceLayerTwoObjects()
    {
        if (m_LayerTwoSpawnedObjects == null)
        {
            m_LayerTwoSpawnedObjects = new List <GameObject>();
        }

        var seed             = scenario.GenerateRandomSeed();
        var placementSamples = PoissonDiskSampling.GenerateSamples(
            layerTwoPlacementArea.x, layerTwoPlacementArea.y, layerTwoSeparationDistance.Sample(), seed);
        var offset = new Vector3(layerTwoPlacementArea.x, layerTwoPlacementArea.y, 0) * -0.5f;
        var parent = scenario.transform;

        foreach (var sample in placementSamples)
        {
            var instance = Object.Instantiate(layerTwoPrefabs.Sample(), parent);
            instance.transform.position = new Vector3(sample.x, sample.y, layerTwoDepth + layerTwoDepthDisplacement.Sample()) + offset;
            m_LayerTwoSpawnedObjects.Add(instance);
        }
        placementSamples.Dispose();
    }
    /// <summary>
    /// Generates a foreground layer of objects at the start of each scenario iteration
    /// </summary>
    protected override void OnIterationStart()
    {
        if (m_SpawnedObjects == null)
        {
            m_SpawnedObjects = new List <GameObject>();
        }

        var seed             = scenario.GenerateRandomSeed();
        var placementSamples = PoissonDiskSampling.GenerateSamples(
            placementArea.x, placementArea.y, separationDistance.Sample(), seed);
        var offset = new Vector3(placementArea.x, placementArea.y, 0f) * -0.5f;
        var parent = scenario.transform;

        foreach (var sample in placementSamples)
        {
            var instance = UnityEngine.Object.Instantiate(prefabs.Sample(), parent);
            instance.transform.position = new Vector3(sample.x, sample.y, depth) + offset;
            m_SpawnedObjects.Add(instance);
        }
        placementSamples.Dispose();
    }
        void PlaceObjects()
        {
            m_SpawnedCount = 0;

            var seed             = SamplerState.NextRandomState();
            var placementSamples = PoissonDiskSampling.GenerateSamples(
                placementArea.x, placementArea.y, separationDistance.Sample(), seed);
            var offset = new Vector3(placementArea.x, placementArea.y, 0) * -0.5f;

            foreach (var sample in placementSamples)
            {
                var instance = m_GameObjectOneWayCache.GetOrInstantiate(prefabs.Sample());
                instance.transform.position = new Vector3(sample.x, sample.y, depth) + offset;
                m_SpawnedObjects.Add(instance);

                if (++m_SpawnedCount == maxObjectCount)
                {
                    break;
                }
            }
            placementSamples.Dispose();
        }