Ejemplo n.º 1
0
 void UpdateBoidsSettings(BoidSettings settings)
 {
     foreach (Boid b in boids)
     {
         b.UpdateSettings(settings);
     }
 }
Ejemplo n.º 2
0
 //Alle funktionen dienen nur zur Integration in das UI
 private void Awake()
 {
     if (!instance)
     {
         instance = this;
     }
 }
Ejemplo n.º 3
0
 public void Init(BoidSettings settings)
 {
     this.settings      = settings;
     transform.position = new Vector3((int)Random.Range(-settings.xBound, settings.xBound), (int)Random.Range(-settings.yBound, settings.yBound), (int)Random.Range(-settings.zBound, settings.zBound));
     vel = Vector3.zero;
     acc = Vector3.zero;
 }
Ejemplo n.º 4
0
    void Start()
    {
        m_depthManager      = Application.Instance.KinectDepthManager;
        m_beatInfoManager   = Application.Instance.BeatInfoManager;
        m_videoPlaneManager = Application.Instance.VideoPlaneManager;
        m_dataAccessor      = Application.Instance.CreatureDataAccessor;

        settings = new BoidSettings();
        settings.obstacleMask = 1 << LayerMask.NameToLayer("Bounds") | 1 << LayerMask.NameToLayer("ColliderMesh");
        settings.layer        = Layer;

        videoPlayer                 = gameObject.AddComponent <VideoPlayer>();
        videoPlayer.isLooping       = true;
        videoPlayer.audioOutputMode = VideoAudioOutputMode.None;
        videoPlayer.renderMode      = VideoRenderMode.RenderTexture;
        videoPlayer.clip            = m_dataAccessor.GetRandomClip();

        RT = new RenderTexture(VIDEO_RT_RES, VIDEO_RT_RES, 0, RenderTextureFormat.ARGB32);
        videoPlayer.targetTexture = RT;
        videoPlayer.Play();

        boids = new Boid[NumBoids];
        for (int i = 0; i < NumBoids; i++)
        {
            GameObject ob = Instantiate(Resources.Load("Prefabs/Boid") as GameObject);
            ob.name = $"Boid{i}";
            ob.transform.SetParent(Application.Instance.WorldParent);
            boids[i] = ob.GetComponent <Boid>();
            boids[i].Init(settings);
        }
        computeShader = Resources.Load("ComputeShaders/Boids") as ComputeShader;
    }
Ejemplo n.º 5
0
 public void UpdateBoidSettings(BoidSettings newSettings)
 {
     managerSettings = newSettings;
     for (int i = 0; i < flock.Count; i++)
     {
         flock[i].UpdateSettings(managerSettings);
     }
 }
Ejemplo n.º 6
0
    public void Initialize(BoidSettings settings, Transform target)
    {
        this.settings = settings;

        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2;

        velocity = transform.forward * startSpeed;
    }
 /// <summary>
 /// Changement de comportement des boids | Param : BoidSettings Nouveau comportement <> bool poids vers la target supèrieur pour le Koa
 /// </summary>
 /// <param name="newSettings"></param>
 /// <param name="KoaTargetWeight"></param>
 public void SetBehavior(BoidSettings newSettings)
 {
     for (int i = 0; i < _boidsTab.Length; i++)
     {
         _boidsTab[i].SetNewSettings(newSettings);
         curBoidSettings = newSettings;
     }
 }
Ejemplo n.º 8
0
 public void setSettings(BoidSettings settings)
 {
     this.settings = settings;
     foreach (Boid b in _boids)
     {
         b.setSettings(this.settings);
     }
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Changement de comportement des boids | Param : BoidSettings Nouveau comportement <> bool poids vers la target supèrieur pour le Koa
 /// </summary>
 /// <param name="newSettings"></param>
 /// <param name="KoaTargetWeight"></param>
 public void SetBehavior(BoidSettings newSettings, bool KoaTargetWeight = false)
 {
     for (int i = 0; i < _boidsTab.Length; i++)
     {
         _boidsTab[i].SetNewSettings(newSettings);
         curBoidSettings = newSettings;;
     }
 }
Ejemplo n.º 10
0
    public void RegisterUpdateAction(UnityAction action, BoidSettings settings)
    {
        updateAction  = action;
        this.settings = settings;

        if (spawnOnAwake)
        {
            InitializeSchool();
        }
    }
Ejemplo n.º 11
0
    public void Initialize(BoidSettings settings, Transform target)
    {
        this.target   = target;
        this.settings = settings;

        float startSpeed = (settings.MinSpeed + settings.MaxSpeed) / 2;

        //velocity = transform.forward * startSpeed;
        velocity = Vector3.zero;
    }
Ejemplo n.º 12
0
    void Start()
    {
        settings = initalSettings;

        boids = FindObjectsOfType <Boid> ();
        foreach (Boid b in boids)
        {
            b.Initialize(settings, targets);
            agentsPositions.Add(Vector3.zero);
        }
    }
Ejemplo n.º 13
0
    public void Initialize(BoidSettings settings)
    {
        this.settings = settings;

        position = Random.insideUnitCircle * settings.spawnRadius;
        forward  = Random.insideUnitCircle;

        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2;

        velocity = forward * startSpeed;
    }
Ejemplo n.º 14
0
    public void Initialize(BoidSettings settings, Transform target)
    {
        this.target   = target;
        this.settings = settings;

        position = cachedTransform.position;
        forward  = cachedTransform.forward;

        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2;

        velocity = transform.forward * startSpeed;
    }
Ejemplo n.º 15
0
        public Dictionary <BoidSettings, List <BoidData> > RelevantBoidData(BoidData self)
        {
            Dictionary <BoidSettings, List <BoidData> > relevants = new Dictionary <BoidSettings, List <BoidData> >();

            foreach (var pair in _boidDatum)
            {
                BoidSettings    settings = pair.Key;
                List <BoidData> datum    = pair.Value;
                relevants[settings] = RelevantBoidData(self, settings, datum);
            }
            return(relevants);
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Changement de comportement des boids | Param : BoidSettings Nouveau comportement <> bool poids vers la target supèrieur pour le Koa
 /// </summary>
 /// <param name="newSettings"></param>
 /// <param name="KoaTargetWeight"></param>
 public void SetBehavior(BoidSettings newSettings)
 {
     curBoidSettings = newSettings;
     for (int i = 0; i < _boidsTab.Length; i++)
     {
         _boidsTab[i].SetNewSettings(curBoidSettings);
     }
     if (SC_FixedData.Instance.GetBoidIndex(newSettings) != 14)
     {
         syncVarKoa.SetNewBehavior(SC_FixedData.Instance.GetBoidIndex(newSettings));
     }
 }
Ejemplo n.º 17
0
    /// <summary>
    /// Avant le start, instanciation
    /// </summary>
    public void Initialize(Transform newGuide, int newSpawnCount, BoidSettings newSettings, FlockSettings flockSettings)
    {
        regeneration     = true;
        curRecoveryTimer = 0;
        recoveryDuration = 1.5f;
        flockManager     = newGuide.GetComponent <SC_FlockDisplay>();
        curFlockSettings = flockSettings;
        spawnCount       = newSpawnCount;

        Player = GameObject.FindGameObjectWithTag("Player");
        switch (flockSettings.attackType)
        {
        case FlockSettings.AttackType.none:

            koaCharID = 'A';

            break;

        case FlockSettings.AttackType.Bullet:

            koaCharID = 'B';

            break;

        case FlockSettings.AttackType.Laser:

            koaCharID = 'C';

            break;
        }
        koaNumID = SC_BoidPool.Instance.GetFlockID();
        koaID    = koaCharID + "#" + koaNumID;

        //Instanciation des list de Boid et de Guide
        _boidsTab = SC_BoidPool.Instance.GetBoid(curFlockSettings.maxBoid);

        _guideList = new List <Transform>();

        //Récupération du comportement initial
        curBoidSettings = newSettings;


        sensitivity = new Vector3Int(3, 5, 4);
        //Ajout du premier guide a la liste
        _guideList.Add(newGuide);

        respawnTimer            = 0;
        _koa                    = Instantiate(_koaPrefab);
        _koa.transform.position = transform.position;

        Invoke("InitBoids", 1f);
    }
Ejemplo n.º 18
0
    public virtual void BoidInitialize(BoidSettings settings, Boid boidTarget)
    {
        this.boidTarget = boidTarget;
        target          = boidTarget.transform;
        this.settings   = settings;

        pos   = cachedTransform.position;
        ahead = cachedTransform.forward;

        float startSpeed = Random.Range(settings.minSpeed, settings.maxSpeed);

        velocity = transform.forward * startSpeed;
    }
Ejemplo n.º 19
0
    public int GetBoidIndex(BoidSettings curboidSettings)
    {
        int index = 0;

        for (int i = 0; i < boidSettings.Length; i++)
        {
            if (curboidSettings == boidSettings[i])
            {
                index = i;
            }
        }

        return(index);
    }
Ejemplo n.º 20
0
    public void StartNewBehavior(BoidSettings newSettings)
    {
        transform.rotation = flockInitialRot;
        _curBoidSetting    = newSettings;
        Reassemble();

        if (_curBoidSetting.split)
        {
            SplitDivision(_curBoidSetting.splitNumber);
        }

        _SCKoaManager.SetBehavior(_curBoidSetting);
        bezierWalkerSpeed.speed = _curBoidSetting.speedOnSpline;
    }
Ejemplo n.º 21
0
    public void Initialize(BoidSettings settings, Transform[] targets)
    {
        this.targets  = targets;
        this.settings = settings;

        position = cachedTransform.position;
        forward  = cachedTransform.forward;

        //Two different start speed mode
        float startSpeed       = (settings.minSpeed + settings.maxSpeed) / 2;
        float randomStartSpeed = Random.Range(settings.minSpeed, settings.maxSpeed);

        velocity = transform.forward * randomStartSpeed;
    }
Ejemplo n.º 22
0
    public void Initialize(BoidSettings settings, Transform target)
    {
        this.target     = target;
        this.pathTarget = null;
        pathIndex       = 0;
        this.settings   = settings;
        position        = cachedTransform.position;
        forward         = cachedTransform.forward;

        float startSpeed = settings.maxSpeed / 2;

        velocity            = transform.forward * startSpeed;
        avgAvoidanceHeading = Vector3.zero;
        avgFlockHeading     = Vector3.zero;
    }
Ejemplo n.º 23
0
    // Called by the BoidManager at the beginning of the simulation
    public void Initialize(BoidSettings settings, Transform target)
    {
        // target to follow if not null
        this.target = target;

        // settings of the boids
        this.settings = settings;

        position = cachedTransform.position;
        forward  = cachedTransform.forward;

        // set the startSpeed of the boid to the mean of min and max speed
        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2;

        velocity = transform.forward * startSpeed;
    }
Ejemplo n.º 24
0
    //Inicializamos settings, posicion, direccion, speed, velocidad y region del Boid
    public void Inicializar(BoidSettings set, Vector3 pos)
    {
        settings = set;
        this.transform.position = pos;
        //Direccion inicial: adelante
        direccion = transform.forward;
        //Velocidad de movimiento inicial
        speed = UnityEngine.Random.Range(settings.maxSpeed, settings.minSpeed);
        //Velocidad inicial
        velocidad = direccion * speed;

        region             = RegionManager.EncontrarRegion(transform.position);
        regionesAdyacentes = RegionManager.RegionesAdyacentes(region);
        regionAnterior     = region;
        tVuelo             = 0f;
    }
Ejemplo n.º 25
0
    public void Initialize(BoidSettings settings, List <Target> targets, BoidManager manager)
    {
        // this.target = target;
        this.targets  = targets;
        this.settings = settings;

        position = cachedTransform.position;
        forward  = cachedTransform.forward;

        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2;

        velocity = transform.forward * startSpeed;

        this.manager = manager;
        SetColour(manager.color);
    }
    /// <summary>
    /// Avant le start, instanciation
    /// </summary>
    public void Initialize(Transform newGuide, int spawnCount, BoidSettings newSettings)
    {
        this.spawnCount = spawnCount;
        flockManager    = SC_UI_Display_Flock.Instance;

        //Instanciation des list de Boid et de Guide
        _boidsTab = flockManager.GetBoid();

        _guideList = new List <Transform>();

        //Récupération du comportement initial
        curBoidSettings = newSettings;

        //Ajout du premier guide a la liste
        _guideList.Add(newGuide);

        _koa = Instantiate(_koaPrefab);
        _koa.transform.position = transform.position;
    }
Ejemplo n.º 27
0
    /// <summary>
    /// Initialisation
    /// </summary>
    /// <param name="settings"></param>
    /// <param name="target"></param>
    public void Initialize(BoidSettings settings, Transform target, Vector3Int sensitivity, SC_KoaManager koaManager, int type)
    {
        this.koaManager      = koaManager;
        destructionType      = DestructionType.none;
        curFlick             = 0;
        transform.localScale = initScale;
        this.target          = target;                                  //Peut être null
        this.settings        = settings;                                //Scriptable object
        this.sensitivity     = sensitivity;
        position             = cachedTransform.position;                //Déplacement à la position tampon
        forward = cachedTransform.forward;                              //Direction selon axe X

        float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2; //Vitesse d'initialisation

        velocity              = transform.forward * startSpeed;         //Stockage de la vélocité selon la vitesse de départ
        destructionTimer      = 1f;
        curTimer              = 0;
        meshRenderer.material = baseMat;
        isActive              = true;
    }
Ejemplo n.º 28
0
    IEnumerator SwitchSettings(BoidSettings[] settings)
    {
        while (true)
        {
            _curBoidSetting = settings[curSettingsIndex];

            int rnd = Random.Range(0, 2);
            if (rnd == 0)
            {
                bezierWalkerSpeed.speed = _curBoidSetting.speedOnSpline;
            }
            else
            {
                bezierWalkerSpeed.speed = -_curBoidSetting.speedOnSpline;
            }

            Reassemble();
            if (_curBoidSetting.split)
            {
                SplitDivision(_curBoidSetting.splitNumber);
            }
            _SCKoaManager.SetBehavior(_curBoidSetting);
            //https://www.youtube.com/watch?v=bOZT-UpRA2Y

            if (settings.Length == 1)
            {
                StopAllCoroutines();
                break;
            }

            yield return(new WaitForSeconds(_curBoidSetting.settingDuration));

            curSettingsIndex++;
            if (curSettingsIndex >= settings.Length)
            {
                curSettingsIndex = 0;
            }
        }
    }
Ejemplo n.º 29
0
        private List <BoidData> RelevantBoidData(BoidData self, BoidSettings settings, List <BoidData> boidDatum)
        {
            // Get those inside range
            var relevants = boidDatum.FindAll(x =>
            {
                float d = Vector3.Distance(x.position, self.position); // d can't be negative
                // if x not at self.position and weight at this distance is not null
                return(d > 0 && settings.GetWeight(d) != 0);
            });

            if (settings.m_myBackCulling || settings.m_itsBackCulling)
            {
                // Back Culling
                relevants = relevants.FindAll(x =>
                {
                    Vector3 selfToX = x.position - self.position;
                    return((!settings.m_myBackCulling || Vector3.Dot(self.forward, selfToX) > 0) && // cull if x is in self's back
                           (!settings.m_itsBackCulling || Vector3.Dot(x.forward, -selfToX) > 0)); // cull if self is in x's back
                });
            }
            return(relevants);
        }
Ejemplo n.º 30
0
 void Start()
 {
     settings = BoidSettings.instance;
     settings.boids.Add(this);
 }