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; }
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); }
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); }
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; }
// 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); } }
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)); }