141 lines
2.7 KiB
C
141 lines
2.7 KiB
C
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup DNA
|
|
*
|
|
* Types defined in this file are deprecated, converted into modifiers on load.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/* Don't forget, new effects also in `writefile.cc` for DNA! */
|
|
|
|
/** #PartEff::flag. */
|
|
enum {
|
|
// PAF_UNUSED_0 = 1 << 0, /* DEPRECATED, dirty. */
|
|
PAF_BSPLINE = 1 << 1,
|
|
PAF_STATIC = 1 << 2,
|
|
PAF_FACE = 1 << 3,
|
|
PAF_ANIMATED = 1 << 4,
|
|
/** Show particles before they're emitted. */
|
|
PAF_UNBORN = 1 << 5,
|
|
/** Emit only from faces. */
|
|
PAF_OFACE = 1 << 6,
|
|
/** show emitter (don't hide actual mesh). */
|
|
PAF_SHOWE = 1 << 7,
|
|
/** True random emit from faces (not just ordered jitter). */
|
|
PAF_TRAND = 1 << 8,
|
|
/** even distribution in face emission based on face areas. */
|
|
PAF_EDISTR = 1 << 9,
|
|
/** Show particles after they've died. */
|
|
PAF_DIED = 1 << 11,
|
|
};
|
|
|
|
/** #PartEff::flag2, for pos/neg #PartEff::flag2neg. */
|
|
enum {
|
|
PAF_TEXTIME = 1, /* Texture timing. */
|
|
};
|
|
|
|
/** #PartEff::type. */
|
|
enum {
|
|
EFF_BUILD = 0,
|
|
EFF_PARTICLE = 1,
|
|
EFF_WAVE = 2,
|
|
};
|
|
|
|
/** #PartEff::flag. */
|
|
enum {
|
|
EFF_SELECT = 1,
|
|
};
|
|
|
|
/** #PartEff::stype. */
|
|
enum {
|
|
PAF_NORMAL = 0,
|
|
PAF_VECT = 1,
|
|
};
|
|
|
|
/** #PartEff::texmap. */
|
|
enum {
|
|
PAF_TEXINT = 0,
|
|
PAF_TEXRGB = 1,
|
|
PAF_TEXGRAD = 2,
|
|
};
|
|
|
|
typedef struct Effect {
|
|
struct Effect *next, *prev;
|
|
short type, flag, buttype;
|
|
char _pad0[2];
|
|
} Effect;
|
|
|
|
typedef struct BuildEff {
|
|
/* NOTE: match #Effect. */
|
|
struct BuildEff *next, *prev;
|
|
short type, flag, buttype;
|
|
/* End header. */
|
|
|
|
char _pad0[2];
|
|
|
|
float len, sfra;
|
|
|
|
} BuildEff;
|
|
|
|
#
|
|
#
|
|
typedef struct Particle {
|
|
float co[3], no[3];
|
|
float time, lifetime;
|
|
short mat_nr;
|
|
char _pad0[2];
|
|
} Particle;
|
|
|
|
struct Collection;
|
|
|
|
typedef struct PartEff {
|
|
/* NOTE: match #Effect. */
|
|
struct PartEff *next, *prev;
|
|
short type, flag, buttype;
|
|
/* End header. */
|
|
|
|
short stype, vertgroup, userjit;
|
|
|
|
float sta, end, lifetime;
|
|
int totpart, totkey, seed;
|
|
|
|
float normfac, obfac, randfac, texfac, randlife;
|
|
float force[3];
|
|
float damp;
|
|
|
|
float nabla, vectsize, maxlen, defvec[3];
|
|
char _pad[4];
|
|
|
|
float mult[4], life[4];
|
|
short child[4], mat[4];
|
|
short texmap, curmult;
|
|
short staticstep, omat, timetex, speedtex, flag2, flag2neg;
|
|
short disp, vertgroup_v;
|
|
|
|
/** MAX_VGROUP_NAME. */
|
|
char vgroupname[64], vgroupname_v[64];
|
|
/** Inverse matrix of parent Object. */
|
|
float imat[4][4];
|
|
|
|
Particle *keys;
|
|
struct Collection *group;
|
|
|
|
} PartEff;
|
|
|
|
typedef struct WaveEff {
|
|
/* NOTE: match #Effect. */
|
|
struct WaveEff *next, *prev;
|
|
short type, flag, buttype, stype;
|
|
/* End header. */
|
|
|
|
float startx, starty, height, width;
|
|
float narrow, speed, minfac, damp;
|
|
|
|
float timeoffs, lifetime;
|
|
|
|
} WaveEff;
|