Files
test/source/blender/makesdna/DNA_object_fluidsim.h
Lukas Tönne 6ecab6dd8e Revert particle system and point cache removal in blender2.8 branch.
This reverts commit 5aa19be912 and b4a721af69.

Due to postponement of particle system rewrite it was decided to put particle code
back into the 2.8 branch for the time being.
2016-12-28 17:30:58 +01:00

194 lines
5.5 KiB
C

/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* The Original Code is Copyright (C) 2004-2005 by Blender Foundation
* All rights reserved.
*
* The Original Code is: all of this file.
*
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file DNA_object_fluidsim.h
* \ingroup DNA
*/
#ifndef __DNA_OBJECT_FLUIDSIM_H__
#define __DNA_OBJECT_FLUIDSIM_H__
#include "DNA_ID.h"
#include "DNA_defs.h"
#ifdef __cplusplus
extern "C" {
#endif
struct Mesh;
struct Ipo;
typedef struct FluidVertexVelocity {
float vel[3];
} FluidVertexVelocity;
typedef struct FluidsimSettings {
struct FluidsimModifierData *fmd; /* for fast RNA access */
/* threadcont the calculation is done with */
int threads;
int pad1;
/* domain, fluid or obstacle */
short type;
/* display advanced options in fluid sim tab (on=1, off=0)*/
short show_advancedoptions;
/* domain object settings */
/* resolutions */
short resolutionxyz;
short previewresxyz;
/* size of the domain in real units (meters along largest resolution x, y, z extent) */
float realsize;
/* show original meshes, preview or final sim */
short guiDisplayMode;
short renderDisplayMode;
/* fluid properties */
float viscosityValue;
short viscosityMode DNA_DEPRECATED;
short viscosityExponent;
/* gravity strength */
float grav[3];
/* anim start end time (in seconds) */
float animStart, animEnd;
/* bake start end time (in blender frames) */
int bakeStart, bakeEnd;
/* offset for baked frames */
int frameOffset;
int pad2;
/* g star param (LBM compressibility) */
float gstar;
/* activate refinement? */
int maxRefine;
/* fluid object type settings */
/* gravity strength */
float iniVelx, iniVely, iniVelz;
/* store output path, and file prefix for baked fluid surface */
/* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */
char surfdataPath[1024];
/* store start coords of axis aligned bounding box together with size */
/* values are inited during derived mesh display */
float bbStart[3], bbSize[3];
/* animated params */
struct Ipo *ipo;
/* additional flags depending on the type, lower short contains flags
* to check validity, higher short additional flags */
short typeFlags;
/* switch off velocity genration, volume init type for fluid/obstacles (volume=1, shell=2, both=3) */
char domainNovecgen, volumeInitType;
/* boundary "stickiness" for part slip values */
float partSlipValue;
/* number of tracers to generate */
int generateTracers;
/* particle generation - on if >0, then determines amount (experimental...) */
float generateParticles;
/* smooth fluid surface? */
float surfaceSmoothing;
/* number of surface subdivisions*/
int surfaceSubdivs;
int flag; /* GUI flags */
/* particle display - size scaling, and alpha influence */
float particleInfSize, particleInfAlpha;
/* testing vars */
float farFieldSize;
/* vertex velocities of simulated fluid mesh */
struct FluidVertexVelocity *meshVelocities;
/* number of vertices in simulated fluid mesh */
int totvert;
/* Fluid control settings */
float cpsTimeStart;
float cpsTimeEnd;
float cpsQuality;
float attractforceStrength;
float attractforceRadius;
float velocityforceStrength;
float velocityforceRadius;
int lastgoodframe;
/* Simulation/flow rate control (i.e. old "Fac-Time") */
float animRate;
} FluidsimSettings;
/* ob->fluidsimSettings defines */
#define OB_FLUIDSIM_ENABLE 1
#define OB_FLUIDSIM_DOMAIN 2
#define OB_FLUIDSIM_FLUID 4
#define OB_FLUIDSIM_OBSTACLE 8
#define OB_FLUIDSIM_INFLOW 16
#define OB_FLUIDSIM_OUTFLOW 32
#define OB_FLUIDSIM_PARTICLE 64
#define OB_FLUIDSIM_CONTROL 128
#define OB_TYPEFLAG_START 7
#define OB_FSGEO_THIN (1<<(OB_TYPEFLAG_START+1))
#define OB_FSBND_NOSLIP (1<<(OB_TYPEFLAG_START+2))
#define OB_FSBND_PARTSLIP (1<<(OB_TYPEFLAG_START+3))
#define OB_FSBND_FREESLIP (1<<(OB_TYPEFLAG_START+4))
#define OB_FSINFLOW_LOCALCOORD (1<<(OB_TYPEFLAG_START+5))
/* surface generation flag (part of enabling chapter 6 of "Free Surface Flows with Moving and Deforming Objects for LBM") */
#define OB_FSSG_NOOBS (1<<(OB_TYPEFLAG_START+6))
// guiDisplayMode particle flags
#define OB_FSDOM_GEOM 1
#define OB_FSDOM_PREVIEW 2
#define OB_FSDOM_FINAL 3
#define OB_FSPART_BUBBLE (1<<1)
#define OB_FSPART_DROP (1<<2)
#define OB_FSPART_NEWPART (1<<3)
#define OB_FSPART_FLOAT (1<<4)
#define OB_FSPART_TRACER (1<<5)
// new fluid bit flags for fss->flags
#define OB_FLUIDSIM_REVERSE (1 << 0)
#define OB_FLUIDSIM_ACTIVE (1 << 1)
#define OB_FLUIDSIM_OVERRIDE_TIME (1 << 2)
#define OB_FLUIDSIM_SURF_PREVIEW_OBJ_FNAME "fluidsurface_preview_####.bobj.gz"
#define OB_FLUIDSIM_SURF_FINAL_OBJ_FNAME "fluidsurface_final_####.bobj.gz"
#define OB_FLUIDSIM_SURF_FINAL_VEL_FNAME "fluidsurface_final_####.bvel.gz"
#define OB_FLUIDSIM_SURF_PARTICLES_FNAME "fluidsurface_particles_####.gz"
#ifdef __cplusplus
}
#endif
#endif