Cleanup: Fix Cycles Apache header.
[blender.git] / intern / cycles / render / particles.h
1 /*
2  * Copyright 2011-2013 Blender Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __PARTICLES_H__
18 #define __PARTICLES_H__
19
20 #include "util_types.h"
21 #include "util_vector.h"
22
23 CCL_NAMESPACE_BEGIN
24
25 class Device;
26 class DeviceScene;
27 class Progress;
28 class Scene;
29
30 /* Particle System */
31
32 struct Particle {
33         int index;
34         float age;
35         float lifetime;
36         float3 location;
37         float4 rotation;
38         float size;
39         float3 velocity;
40         float3 angular_velocity;
41 };
42
43 class ParticleSystem {
44 public:
45         ParticleSystem();
46         ~ParticleSystem();
47
48         void tag_update(Scene *scene);
49
50         vector<Particle> particles;
51 };
52
53 /* ParticleSystem Manager */
54
55 class ParticleSystemManager {
56 public:
57         bool need_update;
58
59         ParticleSystemManager();
60         ~ParticleSystemManager();
61
62         void device_update_particles(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
63         void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
64         void device_free(Device *device, DeviceScene *dscene);
65
66         void tag_update(Scene *scene);
67 };
68
69 CCL_NAMESPACE_END
70
71 #endif /* __PARTICLES_H__ */
72