コード例 #1
0
        private IEnumerable <Disturbance> DetectTransients(VIDataGroup viDataGroup)
        {
            IEnumerable <Disturbance> vaTransients  = DetectTransients(viDataGroup.VA, Phase.AN);
            IEnumerable <Disturbance> vbTransients  = DetectTransients(viDataGroup.VB, Phase.BN);
            IEnumerable <Disturbance> vcTransients  = DetectTransients(viDataGroup.VC, Phase.CN);
            IEnumerable <Disturbance> vabTransients = DetectTransients(viDataGroup.VAB, Phase.AB);
            IEnumerable <Disturbance> vbcTransients = DetectTransients(viDataGroup.VBC, Phase.BC);
            IEnumerable <Disturbance> vcaTransients = DetectTransients(viDataGroup.VCA, Phase.CA);

            List <Disturbance> transientList = vaTransients.Concat(vbTransients).Concat(vcTransients).Concat(vabTransients).Concat(vbcTransients).Concat(vcaTransients).ToList();

            Disturbance worst = null;

            foreach (Disturbance transiet in transientList)
            {
                if ((object)worst == null || transiet.PerUnitMagnitude > worst.PerUnitMagnitude)
                {
                    worst = transiet;
                }

                worst       = worst.Clone();
                worst.Phase = Phase.Worst;
            }

            if (worst != null)
            {
                transientList.Add(worst);
            }

            return(transientList);
        }
コード例 #2
0
    public void InitNewDisturbance(Disturbance disturbance, int nDifficulty)
    {
        bool  bPosNeg            = GetRandomPosNeg(nDifficulty);
        int   nIntensity         = GetRandomIntensity(nDifficulty);
        int   nMeter             = GetRandomMeter();
        float fTimeToReachCenter = GetRandomTimeToReachCenter(nDifficulty);

        disturbance.Init(bPosNeg, nIntensity, nMeter, fTimeToReachCenter);
    }
コード例 #3
0
    public void SpawnDisturbance(int nDifficulty)
    {
        //Spawn an appropriate random disturbance of given difficulty

        Vector3 v3PositionToSpawnAt = GetRandomStartingPoint();

        GameObject goNewlySpawned = GameObject.Instantiate(pfDisturbance, this.transform);

        goNewlySpawned.transform.localPosition = v3PositionToSpawnAt;

        Disturbance disturbance = goNewlySpawned.GetComponent <Disturbance>();

        InitNewDisturbance(disturbance, nDifficulty);
    }
コード例 #4
0
    public void OnDisturbanceCollision(Disturbance disturbance)
    {
        //React to colliding with a disturbance with given intensity (may be positive or negative)

        float fImpact = Configurables.inst.arfValIncrements[disturbance.nIntensity];

        if (disturbance.bPosNeg == false)
        {
            fImpact *= -1;
        }

        ChangeVelocity(fImpact);

        fTimeSinceLastInput = 0f;
    }
コード例 #5
0
        private void AddDisturbanceRow(EventKey eventKey, DataGroup dataGroup, Disturbance disturbance)
        {
            MeterData.DisturbanceRow row = m_disturbanceTable.NewDisturbanceRow();

            row.EventTypeID      = s_eventTypeLookup[disturbance.EventType];
            row.PhaseID          = GetPhaseID(disturbance.Phase);
            row.Magnitude        = disturbance.Magnitude;
            row.PerUnitMagnitude = ToDbFloat(disturbance.PerUnitMagnitude);
            row.StartTime        = disturbance.StartTime;
            row.EndTime          = disturbance.EndTime;
            row.DurationSeconds  = disturbance.DurationSeconds;
            row.DurationCycles   = disturbance.GetDurationCycles(m_systemFrequency);
            row.StartIndex       = disturbance.StartIndex;
            row.EndIndex         = disturbance.EndIndex;

            m_disturbanceList.Add(Tuple.Create(eventKey, row));
        }