コード例 #1
0
    private MovableProp GetUsablePropFromPool(MovablePropType type)
    {
        List <MovableProp> propPool = _movablePropDictionary[type];

        for (int i = 0; i < propPool.Count; i++)
        {
            if (!propPool[i].gameObject.activeInHierarchy)
            {
                return(propPool[i]);
            }
        }

        MovableProp poolPrefab = null;

        foreach (var movablePropPefab in TerrainStripFactory.SharedInstance.movablePropPefabs)
        {
            if (movablePropPefab.Type == type)
            {
                poolPrefab = movablePropPefab;
                break;
            }
        }

        if (poolPrefab == null)
        {
            return(null);
        }

        MovableProp newPropRef = MonoBehaviour.Instantiate(poolPrefab, Vector3.zero, poolPrefab.transform.rotation);

        propPool.Add(newPropRef);

        return(newPropRef);
    }
コード例 #2
0
    public static void CreateManagerPools()
    {
        _movablePropDictionary = new Dictionary <MovablePropType, List <MovableProp> >();
        foreach (var movablePropPefab in TerrainStripFactory.SharedInstance.movablePropPefabs)
        {
            List <MovableProp> tempPool = new List <MovableProp>(30);
            for (int i = 0; i < 30; i++)
            {
                MovableProp temMovableProp = MonoBehaviour.Instantiate(movablePropPefab, Vector3.zero, movablePropPefab.transform.rotation);
                temMovableProp.gameObject.SetActive(false);
                tempPool.Add(temMovableProp);
            }
            _movablePropDictionary.Add(movablePropPefab.Type, tempPool);
        }

        _usableRoadTypes = new[]
        { MovablePropType.CAR_1, MovablePropType.CAR_2, MovablePropType.TRUCK };
    }
コード例 #3
0
    private void SetupRiverType()
    {
        //All these values need balancing
        float speed      = TerrainStripFactory.RandomRangeExcept(1, 3, _lastStripSpeed);
        int   propOffset = TerrainStripFactory.RandomRangeExcept(4, 6, _lastPropOffset);
        int   numProps   = Random.Range(3, 5);

        for (int i = 0; i < numProps; i++)
        {
            MovableProp tempMovableProp = GetUsablePropFromPool(MovablePropType.LOG);
            tempMovableProp.transform.position = new Vector3((-9f * _logDirection) + (i * propOffset * _logDirection), 0.5f, zPos);
            tempMovableProp.transform.rotation =
                Quaternion.Euler(tempMovableProp.transform.eulerAngles.x, 90 * _logDirection, 0);
            tempMovableProp.Speed     = speed;
            tempMovableProp.Direction = new Vector3(_logDirection, 0, 0);
            tempMovableProp.gameObject.SetActive(true);
            tempMovableProp.Type = MovablePropType.LOG;

            _movableProps.Add(tempMovableProp);
        }
    }
コード例 #4
0
    private void SetupRoadType()
    {
        //All these values need balancing
        float speed      = TerrainStripFactory.RandomRangeExcept(1.5f, 3, _lastStripSpeed);
        int   propOffset = TerrainStripFactory.RandomRangeExcept(3, 6, _lastPropOffset);
        int   numProps   = TerrainStripFactory.RandomRangeExcept(3, 5, _lastNumProps);
        int   randomSign = Random.Range(0, 2) * 2 - 1;
        int   carChoice  = TerrainStripFactory.RandomRangeExcept(0, _usableRoadTypes.Length, _lastCarChoice);

        for (int i = 0; i < numProps; i++)
        {
            MovableProp tempMovableProp = GetUsablePropFromPool(_usableRoadTypes[carChoice]);
            tempMovableProp.transform.position = new Vector3((-9f * randomSign) + (i * propOffset * randomSign), 0.7f, zPos);
            tempMovableProp.transform.rotation =
                Quaternion.Euler(tempMovableProp.transform.eulerAngles.x, 90 * randomSign, 0);
            tempMovableProp.Speed     = speed;
            tempMovableProp.Direction = new Vector3(randomSign, 0, 0);
            tempMovableProp.gameObject.SetActive(true);

            _movableProps.Add(tempMovableProp);
        }
    }
コード例 #5
0
 void Awake()
 {
     mMovableProp   = transform.parent.GetComponent <MovableProp>();
     mRecordingProp = transform.parent.GetComponent <RecordingProp>();
 }