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(); }
private void Start() { _skinnedMesh.sharedMesh = AnimationTexture.AddExtraMeshData(_skinnedMesh.sharedMesh); _animationTexture.SetMaterialProperties(_material); }