Example #1
0
            protected override void InitialiseIfNeeded()
            {
                base.InitialiseIfNeeded();

                if (_particleCustomData == null)
                {
                    for (int i = 0; i < _materials.Length; i++)
                    {
                        _animationTexture.SetMaterialProperties(_materials[i]);
                    }

                    _mesh = AnimationTexture.AddExtraMeshData(_mesh, 4);

                    _particleCurrentFrame = new float[_particles.Length];

                    _particleCustomData = new List <Vector4>(_particles.Length);

                    ParticleSystem.CustomDataModule customData = _particleSystem.customData;
                    customData.SetMode(_customDataChannel, ParticleSystemCustomDataMode.Vector);
                    customData.SetVector(_customDataChannel, 0, new ParticleSystem.MinMaxCurve(kDefaultData.x));
                    customData.SetVector(_customDataChannel, 1, new ParticleSystem.MinMaxCurve(kDefaultData.y));
                    customData.SetVector(_customDataChannel, 2, new ParticleSystem.MinMaxCurve(kDefaultData.z));
                    customData.SetVector(_customDataChannel, 3, new ParticleSystem.MinMaxCurve(kDefaultData.w));
                }
            }
            private void Awake()
            {
                //Find list of meshes and materials from prefab
                _referencePrefab = _prefab.LoadAndInstantiatePrefab(this.transform);
                _referencePrefab.SetActive(false);

                if (_referencePrefab != null)
                {
                    _skinnedMeshes = _referencePrefab.GetComponentsInChildren <SkinnedMeshRenderer>();

                    for (int i = 0; i < _skinnedMeshes.Length; i++)
                    {
                        _skinnedMeshes[i].sharedMesh = AnimationTexture.AddExtraMeshData(_skinnedMeshes[i].sharedMesh);

                        for (int j = 0; j < _skinnedMeshes[i].sharedMaterials.Length; j++)
                        {
                            _animationTexture.SetMaterialProperties(_skinnedMeshes[i].sharedMaterials[j]);
                        }
                    }
                }

                _renderedObjects = new List <RenderData>(kMaxMeshes);
                _instanceData    = new InstanceData[kMaxMeshes];
                _renderData      = new RenderData[kMaxMeshes];
                for (int i = 0; i < _renderData.Length; i++)
                {
                    _renderData[i] = new RenderData();
                }
                _renderedObjectTransforms = new Matrix4x4[kMaxMeshes];
                _currentFrame             = new float[kMaxMeshes];

                _propertyBlock = new MaterialPropertyBlock();
            }
Example #3
0
            private void Start()
            {
                _skinnedMesh.sharedMesh = AnimationTexture.AddExtraMeshData(_skinnedMesh.sharedMesh);

                _animationTexture.SetMaterialProperties(_material);
            }