ClangFormat: apply to source, most of intern
[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/util_array.h"
21 #include "util/util_types.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   array<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,
63                                DeviceScene *dscene,
64                                Scene *scene,
65                                Progress &progress);
66   void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress);
67   void device_free(Device *device, DeviceScene *dscene);
68
69   void tag_update(Scene *scene);
70 };
71
72 CCL_NAMESPACE_END
73
74 #endif /* __PARTICLES_H__ */