Esempio n. 1
0
        public BallsBucketBase(BallsRendererSettings settings, Transform parent)
        {
            holderObject = GameObject.Instantiate(settings.bucketPrototype, parent);

            thisTransform   = holderObject.transform;
            cameraTransform = Camera.main.transform;
            lightTransform  = (LightController.Instance == null || !LightController.Instance.mainLight.isActiveAndEnabled)
                    ? FindObjectOfType <Light>().transform
                    : LightController.Instance.mainLight.transform;
        }
Esempio n. 2
0
    private static BallsRenderer Create(int maxSize, Transform parent = null, BallsRendererSettings _settings = null)
    {
        _settings = _settings == null ? BallsRendererSettings.Batch : _settings;

        GameObject    go     = Instantiate(_settings.ballsRendererPrototype, parent);
        BallsRenderer result = go.GetComponent <BallsRenderer>();

        result.Init(maxSize, _settings);

        return(result);
    }
Esempio n. 3
0
        public BallsBatchBucket(BallsRendererSettings settings, Transform parent)
            : base(settings, parent)
        {
            var meshRenderer = this.holderObject.GetComponent <MeshRenderer>();

            meshFilter = this.holderObject.GetComponent <MeshFilter>();

            meshRenderer.material = Instantiate(settings.material);
            material = meshRenderer.material;

            material.SetFloat(billboardExtrudeFactorId, billboardScaleFactor);
        }
Esempio n. 4
0
    public void Init(int size, BallsRendererSettings _settings = null)
    {
        settings = (_settings == null) ? BallsRendererSettings.Batch : _settings;

        bucketData = new BallsData(size);
        balls      = new BallInfo[size];
        for (int i = 0; i < size; i++)
        {
            balls[i] = new BallInfo(bucketData, i);
        }

        // Switch-case settings?
        if (settings.mode == Mode.BATCH)
        {
            bucket = new BallsBatchBucket(settings, this.transform);
        }
        else if (settings.mode == Mode.SINGLE)
        {
            bucket = new BallsListBucket(settings, size, this.transform);
        }

        isInit = true;
    }
Esempio n. 5
0
        // TODO: Async init
        public BallsListBucket(BallsRendererSettings settings, int _size, Transform parent)
            : base(settings, parent)
        {
            size       = _size;
            transforms = new Transform[size];
            materials  = new Material[size];
            meshes     = new MeshFilter[size];

            Mesh atomMesh = MeshStorage.GetMesh(MeshStorage.MeshType.TrueSphere, 1);

            for (int i = 0; i < size; i++)
            {
                GameObject go = GameObject.Instantiate(settings.ballObjectPrototype, thisTransform);
                go.name = "ball_" + i;
                go.GetComponent <MeshFilter>().sharedMesh = atomMesh;

                transforms[i] = go.transform;
                materials[i]  = go.GetComponent <MeshRenderer>().material;
                meshes[i]     = go.GetComponent <MeshFilter>();

                materials[i].SetFloat(billboardExtrudeFactorId, billboardScaleFactor);
            }
        }
Esempio n. 6
0
    public static BallsRenderer Create(int maxSize, Transform parent = null, BallsRenderer.Mode mode = BallsRenderer.Mode.BATCH)
    {
        BallsRendererSettings settings = BallsRendererSettings.Get(mode);

        return(Create(maxSize, parent, settings));
    }