Removed most particle system code from RNA.
This commit is contained in:
parent
bcd12bf64d
commit
cf6cb3dcaf
|
@ -111,7 +111,7 @@ typedef struct elbeemSimulationSettings {
|
|||
#define OB_FLUIDSIM_OBSTACLE 8
|
||||
#define OB_FLUIDSIM_INFLOW 16
|
||||
#define OB_FLUIDSIM_OUTFLOW 32
|
||||
#define OB_FLUIDSIM_PARTICLE 64
|
||||
#define OB_FLUIDSIM_PARTICLE 64 /* DEPRECATED */
|
||||
#define OB_FLUIDSIM_CONTROL 128
|
||||
|
||||
// defines for elbeemMesh->obstacleType below (low bits) high bits (>=64) are reserved for mFsSurfGenSetting flags which are defined in solver_class.h
|
||||
|
|
|
@ -105,7 +105,6 @@ enum {
|
|||
CTX_MODE_PAINT_WEIGHT,
|
||||
CTX_MODE_PAINT_VERTEX,
|
||||
CTX_MODE_PAINT_TEXTURE,
|
||||
CTX_MODE_PARTICLE,
|
||||
CTX_MODE_OBJECT
|
||||
};
|
||||
|
||||
|
|
|
@ -1506,7 +1506,8 @@ BoidRule *boid_new_rule(int type)
|
|||
|
||||
rule->type = type;
|
||||
rule->flag |= BOIDRULE_IN_AIR|BOIDRULE_ON_LAND;
|
||||
BLI_strncpy(rule->name, rna_enum_boidrule_type_items[type-1].name, sizeof(rule->name));
|
||||
// BLI_strncpy(rule->name, rna_enum_boidrule_type_items[type-1].name, sizeof(rule->name));
|
||||
rule->name[0] = '\0';
|
||||
|
||||
return rule;
|
||||
}
|
||||
|
|
|
@ -925,7 +925,6 @@ int CTX_data_mode_enum(const bContext *C)
|
|||
else if (ob->mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
|
||||
else if (ob->mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
|
||||
else if (ob->mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
|
||||
else if (ob->mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ typedef struct FluidsimSettings {
|
|||
#define OB_FLUIDSIM_OBSTACLE 8
|
||||
#define OB_FLUIDSIM_INFLOW 16
|
||||
#define OB_FLUIDSIM_OUTFLOW 32
|
||||
#define OB_FLUIDSIM_PARTICLE 64
|
||||
#define OB_FLUIDSIM_PARTICLE 64 /* DEPRECATED */
|
||||
#define OB_FLUIDSIM_CONTROL 128
|
||||
|
||||
#define OB_TYPEFLAG_START 7
|
||||
|
|
|
@ -745,7 +745,7 @@ typedef enum eDupli_ID_Flags {
|
|||
USER_DUP_TEX = (1 << 8),
|
||||
USER_DUP_ARM = (1 << 9),
|
||||
USER_DUP_ACT = (1 << 10),
|
||||
USER_DUP_PSYS = (1 << 11)
|
||||
/*USER_DUP_PSYS = (1 << 11),*/ /* DEPRECATED */
|
||||
} eDupli_ID_Flags;
|
||||
|
||||
/* gameflags */
|
||||
|
|
|
@ -98,7 +98,6 @@ extern StructRNA RNA_MeshCacheModifier;
|
|||
extern StructRNA RNA_Camera;
|
||||
extern StructRNA RNA_CastModifier;
|
||||
extern StructRNA RNA_ChildOfConstraint;
|
||||
extern StructRNA RNA_ChildParticle;
|
||||
extern StructRNA RNA_ClampToConstraint;
|
||||
extern StructRNA RNA_ClothCollisionSettings;
|
||||
extern StructRNA RNA_ClothModifier;
|
||||
|
@ -454,19 +453,6 @@ extern StructRNA RNA_PaintCurve;
|
|||
extern StructRNA RNA_Palette;
|
||||
extern StructRNA RNA_PaletteColor;
|
||||
extern StructRNA RNA_Panel;
|
||||
extern StructRNA RNA_Particle;
|
||||
extern StructRNA RNA_ParticleBrush;
|
||||
extern StructRNA RNA_ParticleDupliWeight;
|
||||
extern StructRNA RNA_ParticleEdit;
|
||||
extern StructRNA RNA_ParticleFluidSettings;
|
||||
extern StructRNA RNA_ParticleHairKey;
|
||||
extern StructRNA RNA_ParticleInstanceModifier;
|
||||
extern StructRNA RNA_ParticleKey;
|
||||
extern StructRNA RNA_ParticleSettings;
|
||||
extern StructRNA RNA_ParticleSettingsTextureSlot;
|
||||
extern StructRNA RNA_ParticleSystem;
|
||||
extern StructRNA RNA_ParticleSystemModifier;
|
||||
extern StructRNA RNA_ParticleTarget;
|
||||
extern StructRNA RNA_PivotConstraint;
|
||||
extern StructRNA RNA_PointCache;
|
||||
extern StructRNA RNA_PointDensity;
|
||||
|
|
|
@ -36,7 +36,6 @@ set(DEFSRC
|
|||
rna_animation.c
|
||||
rna_animviz.c
|
||||
rna_armature.c
|
||||
rna_boid.c
|
||||
rna_brush.c
|
||||
rna_camera.c
|
||||
rna_cloth.c
|
||||
|
@ -69,7 +68,6 @@ set(DEFSRC
|
|||
rna_object_force.c
|
||||
rna_packedfile.c
|
||||
rna_palette.c
|
||||
rna_particle.c
|
||||
rna_pose.c
|
||||
rna_property.c
|
||||
rna_render.c
|
||||
|
|
|
@ -3295,7 +3295,6 @@ static RNAProcessItem PROCESS_ITEMS[] = {
|
|||
{"rna_animviz.c", NULL, RNA_def_animviz},
|
||||
{"rna_actuator.c", "rna_actuator_api.c", RNA_def_actuator},
|
||||
{"rna_armature.c", "rna_armature_api.c", RNA_def_armature},
|
||||
{"rna_boid.c", NULL, RNA_def_boid},
|
||||
{"rna_brush.c", NULL, RNA_def_brush},
|
||||
{"rna_camera.c", "rna_camera_api.c", RNA_def_camera},
|
||||
{"rna_cloth.c", NULL, RNA_def_cloth},
|
||||
|
@ -3326,7 +3325,6 @@ static RNAProcessItem PROCESS_ITEMS[] = {
|
|||
{"rna_object_force.c", NULL, RNA_def_object_force},
|
||||
{"rna_packedfile.c", NULL, RNA_def_packedfile},
|
||||
{"rna_palette.c", NULL, RNA_def_palette},
|
||||
{"rna_particle.c", NULL, RNA_def_particle},
|
||||
{"rna_pose.c", "rna_pose_api.c", RNA_def_pose},
|
||||
{"rna_property.c", NULL, RNA_def_gameproperty},
|
||||
{"rna_render.c", NULL, RNA_def_render},
|
||||
|
|
|
@ -71,7 +71,6 @@ EnumPropertyItem rna_enum_id_type_items[] = {
|
|||
{ID_OB, "OBJECT", ICON_OBJECT_DATA, "Object", ""},
|
||||
{ID_PC, "PAINTCURVE", ICON_CURVE_BEZCURVE, "Paint Curve", ""},
|
||||
{ID_PAL, "PALETTE", ICON_COLOR, "Palette", ""},
|
||||
{ID_PA, "PARTICLE", ICON_PARTICLE_DATA, "Particle", ""},
|
||||
{ID_SCE, "SCENE", ICON_SCENE_DATA, "Scene", ""},
|
||||
{ID_SCR, "SCREEN", ICON_SPLITSCREEN, "Screen", ""},
|
||||
{ID_SO, "SOUND", ICON_PLAY_AUDIO, "Sound", ""},
|
||||
|
@ -153,7 +152,6 @@ short RNA_type_to_ID_code(StructRNA *type)
|
|||
if (RNA_struct_is_a(type, &RNA_Mask)) return ID_MSK;
|
||||
if (RNA_struct_is_a(type, &RNA_NodeTree)) return ID_NT;
|
||||
if (RNA_struct_is_a(type, &RNA_Object)) return ID_OB;
|
||||
if (RNA_struct_is_a(type, &RNA_ParticleSettings)) return ID_PA;
|
||||
if (RNA_struct_is_a(type, &RNA_Palette)) return ID_PAL;
|
||||
if (RNA_struct_is_a(type, &RNA_PaintCurve)) return ID_PC;
|
||||
if (RNA_struct_is_a(type, &RNA_Scene)) return ID_SCE;
|
||||
|
@ -192,7 +190,6 @@ StructRNA *ID_code_to_RNA_type(short idcode)
|
|||
case ID_MSK: return &RNA_Mask;
|
||||
case ID_NT: return &RNA_NodeTree;
|
||||
case ID_OB: return &RNA_Object;
|
||||
case ID_PA: return &RNA_ParticleSettings;
|
||||
case ID_PAL: return &RNA_Palette;
|
||||
case ID_PC: return &RNA_PaintCurve;
|
||||
case ID_SCE: return &RNA_Scene;
|
||||
|
@ -309,15 +306,6 @@ static void rna_ID_update_tag(ID *id, ReportList *reports, int flag)
|
|||
return;
|
||||
}
|
||||
break;
|
||||
/* Could add particle updates later */
|
||||
#if 0
|
||||
case ID_PA:
|
||||
if (flag & ~(OB_RECALC_ALL | PSYS_RECALC)) {
|
||||
BKE_report(reports, RPT_ERROR, "'Refresh' incompatible with ParticleSettings ID type");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
BKE_report(reports, RPT_ERROR, "This ID type is not compatible with any 'refresh' options");
|
||||
return;
|
||||
|
|
|
@ -468,12 +468,6 @@ static void rna_def_dopesheet(BlenderRNA *brna)
|
|||
RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0);
|
||||
RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART);
|
||||
RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of particle related animation data");
|
||||
RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0);
|
||||
RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "show_metaballs", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA);
|
||||
RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of metaball related animation data");
|
||||
|
|
|
@ -1,674 +0,0 @@
|
|||
/*
|
||||
* ***** 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) 2009 by Janne Karhu.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/makesrna/intern/rna_boid.c
|
||||
* \ingroup RNA
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_boid_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "RNA_define.h"
|
||||
#include "RNA_enum_types.h"
|
||||
|
||||
#include "rna_internal.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
EnumPropertyItem rna_enum_boidrule_type_items[] = {
|
||||
{eBoidRuleType_Goal, "GOAL", 0, "Goal", "Go to assigned object or loudest assigned signal source"},
|
||||
{eBoidRuleType_Avoid, "AVOID", 0, "Avoid", "Get away from assigned object or loudest assigned signal source"},
|
||||
{eBoidRuleType_AvoidCollision, "AVOID_COLLISION", 0, "Avoid Collision",
|
||||
"Maneuver to avoid collisions with other boids and deflector objects in "
|
||||
"near future"},
|
||||
{eBoidRuleType_Separate, "SEPARATE", 0, "Separate", "Keep from going through other boids"},
|
||||
{eBoidRuleType_Flock, "FLOCK", 0, "Flock", "Move to center of neighbors and match their velocity"},
|
||||
{eBoidRuleType_FollowLeader, "FOLLOW_LEADER", 0, "Follow Leader", "Follow a boid or assigned object"},
|
||||
{eBoidRuleType_AverageSpeed, "AVERAGE_SPEED", 0, "Average Speed", "Maintain speed, flight level or wander"},
|
||||
{eBoidRuleType_Fight, "FIGHT", 0, "Fight", "Go to closest enemy and attack when in range"},
|
||||
#if 0
|
||||
{eBoidRuleType_Protect, "PROTECT", 0, "Protect", "Go to enemy closest to target and attack when in range"},
|
||||
{eBoidRuleType_Hide, "HIDE", 0, "Hide", "Find a deflector move to it's other side from closest enemy"},
|
||||
{eBoidRuleType_FollowPath, "FOLLOW_PATH", 0, "Follow Path",
|
||||
"Move along a assigned curve or closest curve in a group"},
|
||||
{eBoidRuleType_FollowWall, "FOLLOW_WALL", 0, "Follow Wall",
|
||||
"Move next to a deflector object's in direction of it's tangent"},
|
||||
#endif
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
#ifndef RNA_RUNTIME
|
||||
static EnumPropertyItem boidruleset_type_items[] = {
|
||||
{eBoidRulesetType_Fuzzy, "FUZZY", 0, "Fuzzy",
|
||||
"Rules are gone through top to bottom (only the first rule which effect is above "
|
||||
"fuzziness threshold is evaluated)"},
|
||||
{eBoidRulesetType_Random, "RANDOM", 0, "Random", "A random rule is selected for each boid"},
|
||||
{eBoidRulesetType_Average, "AVERAGE", 0, "Average", "All rules are averaged"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RNA_RUNTIME
|
||||
|
||||
#include "BLI_math_base.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
static void rna_Boids_reset(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
|
||||
{
|
||||
if (ptr->type == &RNA_ParticleSystem) {
|
||||
ParticleSystem *psys = (ParticleSystem *)ptr->data;
|
||||
|
||||
psys->recalc = PSYS_RECALC_RESET;
|
||||
|
||||
DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA);
|
||||
}
|
||||
else
|
||||
DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA | PSYS_RECALC_RESET);
|
||||
|
||||
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
|
||||
}
|
||||
static void rna_Boids_reset_deps(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
|
||||
{
|
||||
if (ptr->type == &RNA_ParticleSystem) {
|
||||
ParticleSystem *psys = (ParticleSystem *)ptr->data;
|
||||
|
||||
psys->recalc = PSYS_RECALC_RESET;
|
||||
|
||||
DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA);
|
||||
}
|
||||
else
|
||||
DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA | PSYS_RECALC_RESET);
|
||||
|
||||
DAG_relations_tag_update(bmain);
|
||||
|
||||
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
|
||||
}
|
||||
|
||||
static StructRNA *rna_BoidRule_refine(struct PointerRNA *ptr)
|
||||
{
|
||||
BoidRule *rule = (BoidRule *)ptr->data;
|
||||
|
||||
switch (rule->type) {
|
||||
case eBoidRuleType_Goal:
|
||||
return &RNA_BoidRuleGoal;
|
||||
case eBoidRuleType_Avoid:
|
||||
return &RNA_BoidRuleAvoid;
|
||||
case eBoidRuleType_AvoidCollision:
|
||||
return &RNA_BoidRuleAvoidCollision;
|
||||
case eBoidRuleType_FollowLeader:
|
||||
return &RNA_BoidRuleFollowLeader;
|
||||
case eBoidRuleType_AverageSpeed:
|
||||
return &RNA_BoidRuleAverageSpeed;
|
||||
case eBoidRuleType_Fight:
|
||||
return &RNA_BoidRuleFight;
|
||||
default:
|
||||
return &RNA_BoidRule;
|
||||
}
|
||||
}
|
||||
|
||||
static char *rna_BoidRule_path(PointerRNA *ptr)
|
||||
{
|
||||
BoidRule *rule = (BoidRule *)ptr->data;
|
||||
char name_esc[sizeof(rule->name) * 2];
|
||||
|
||||
BLI_strescape(name_esc, rule->name, sizeof(name_esc));
|
||||
|
||||
return BLI_sprintfN("rules[\"%s\"]", name_esc); /* XXX not unique */
|
||||
}
|
||||
|
||||
static PointerRNA rna_BoidState_active_boid_rule_get(PointerRNA *ptr)
|
||||
{
|
||||
BoidState *state = (BoidState *)ptr->data;
|
||||
BoidRule *rule = (BoidRule *)state->rules.first;
|
||||
|
||||
for (; rule; rule = rule->next) {
|
||||
if (rule->flag & BOIDRULE_CURRENT)
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_BoidRule, rule);
|
||||
}
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_BoidRule, NULL);
|
||||
}
|
||||
static void rna_BoidState_active_boid_rule_index_range(PointerRNA *ptr, int *min, int *max,
|
||||
int *UNUSED(softmin), int *UNUSED(softmax))
|
||||
{
|
||||
BoidState *state = (BoidState *)ptr->data;
|
||||
*min = 0;
|
||||
*max = max_ii(0, BLI_listbase_count(&state->rules) - 1);
|
||||
}
|
||||
|
||||
static int rna_BoidState_active_boid_rule_index_get(PointerRNA *ptr)
|
||||
{
|
||||
BoidState *state = (BoidState *)ptr->data;
|
||||
BoidRule *rule = (BoidRule *)state->rules.first;
|
||||
int i = 0;
|
||||
|
||||
for (; rule; rule = rule->next, i++) {
|
||||
if (rule->flag & BOIDRULE_CURRENT)
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rna_BoidState_active_boid_rule_index_set(struct PointerRNA *ptr, int value)
|
||||
{
|
||||
BoidState *state = (BoidState *)ptr->data;
|
||||
BoidRule *rule = (BoidRule *)state->rules.first;
|
||||
int i = 0;
|
||||
|
||||
for (; rule; rule = rule->next, i++) {
|
||||
if (i == value)
|
||||
rule->flag |= BOIDRULE_CURRENT;
|
||||
else
|
||||
rule->flag &= ~BOIDRULE_CURRENT;
|
||||
}
|
||||
}
|
||||
|
||||
static int particle_id_check(PointerRNA *ptr)
|
||||
{
|
||||
ID *id = ptr->id.data;
|
||||
|
||||
return (GS(id->name) == ID_PA);
|
||||
}
|
||||
|
||||
static char *rna_BoidSettings_path(PointerRNA *ptr)
|
||||
{
|
||||
BoidSettings *boids = (BoidSettings *)ptr->data;
|
||||
|
||||
if (particle_id_check(ptr)) {
|
||||
ParticleSettings *part = (ParticleSettings *)ptr->id.data;
|
||||
|
||||
if (part->boids == boids)
|
||||
return BLI_sprintfN("boids");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PointerRNA rna_BoidSettings_active_boid_state_get(PointerRNA *ptr)
|
||||
{
|
||||
BoidSettings *boids = (BoidSettings *)ptr->data;
|
||||
BoidState *state = (BoidState *)boids->states.first;
|
||||
|
||||
for (; state; state = state->next) {
|
||||
if (state->flag & BOIDSTATE_CURRENT)
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_BoidState, state);
|
||||
}
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_BoidState, NULL);
|
||||
}
|
||||
static void rna_BoidSettings_active_boid_state_index_range(PointerRNA *ptr, int *min, int *max,
|
||||
int *UNUSED(softmin), int *UNUSED(softmax))
|
||||
{
|
||||
BoidSettings *boids = (BoidSettings *)ptr->data;
|
||||
*min = 0;
|
||||
*max = max_ii(0, BLI_listbase_count(&boids->states) - 1);
|
||||
}
|
||||
|
||||
static int rna_BoidSettings_active_boid_state_index_get(PointerRNA *ptr)
|
||||
{
|
||||
BoidSettings *boids = (BoidSettings *)ptr->data;
|
||||
BoidState *state = (BoidState *)boids->states.first;
|
||||
int i = 0;
|
||||
|
||||
for (; state; state = state->next, i++) {
|
||||
if (state->flag & BOIDSTATE_CURRENT)
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rna_BoidSettings_active_boid_state_index_set(struct PointerRNA *ptr, int value)
|
||||
{
|
||||
BoidSettings *boids = (BoidSettings *)ptr->data;
|
||||
BoidState *state = (BoidState *)boids->states.first;
|
||||
int i = 0;
|
||||
|
||||
for (; state; state = state->next, i++) {
|
||||
if (i == value)
|
||||
state->flag |= BOIDSTATE_CURRENT;
|
||||
else
|
||||
state->flag &= ~BOIDSTATE_CURRENT;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void rna_def_boidrule_goal(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleGoal", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Goal", "");
|
||||
RNA_def_struct_sdna(srna, "BoidRuleGoalAvoid");
|
||||
|
||||
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "ob");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Object", "Goal object");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset_deps");
|
||||
|
||||
prop = RNA_def_property(srna, "use_predict", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT);
|
||||
RNA_def_property_ui_text(prop, "Predict", "Predict target movement");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule_avoid(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleAvoid", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Avoid", "");
|
||||
RNA_def_struct_sdna(srna, "BoidRuleGoalAvoid");
|
||||
|
||||
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "ob");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Object", "Object to avoid");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset_deps");
|
||||
|
||||
prop = RNA_def_property(srna, "use_predict", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT);
|
||||
RNA_def_property_ui_text(prop, "Predict", "Predict target movement");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "fear_factor", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Fear factor", "Avoid object if danger from it is above this threshold");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule_avoid_collision(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleAvoidCollision", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Avoid Collision", "");
|
||||
|
||||
prop = RNA_def_property(srna, "use_avoid", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_BOIDS);
|
||||
RNA_def_property_ui_text(prop, "Boids", "Avoid collision with other boids");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_avoid_collision", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_DEFLECTORS);
|
||||
RNA_def_property_ui_text(prop, "Deflectors", "Avoid collision with deflector objects");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "look_ahead", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Look ahead", "Time to look ahead in seconds");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule_follow_leader(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleFollowLeader", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Follow Leader", "");
|
||||
|
||||
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "ob");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Object", "Follow this object instead of a boid");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset_deps");
|
||||
|
||||
prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Distance", "Distance behind leader to follow");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "queue_count", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "queue_size");
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Queue Size", "How many boids in a line");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_line", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_LEADER_IN_LINE);
|
||||
RNA_def_property_ui_text(prop, "Line", "Follow leader in a line");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule_average_speed(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleAverageSpeed", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Average Speed", "");
|
||||
|
||||
prop = RNA_def_property(srna, "wander", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_ui_text(prop, "Wander", "How fast velocity's direction is randomized");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "level", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_ui_text(prop, "Level", "How much velocity's z-component is kept constant");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "speed", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_ui_text(prop, "Speed", "Percentage of maximum speed");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule_fight(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidRuleFight", "BoidRule");
|
||||
RNA_def_struct_ui_text(srna, "Fight", "");
|
||||
|
||||
prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Fight Distance", "Attack boids at max this distance");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "flee_distance", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||
RNA_def_property_ui_text(prop, "Flee Distance", "Flee to this distance");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
static void rna_def_boidrule(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
/* data */
|
||||
srna = RNA_def_struct(brna, "BoidRule", NULL);
|
||||
RNA_def_struct_ui_text(srna, "Boid Rule", "");
|
||||
RNA_def_struct_refine_func(srna, "rna_BoidRule_refine");
|
||||
RNA_def_struct_path_func(srna, "rna_BoidRule_path");
|
||||
|
||||
/* strings */
|
||||
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Name", "Boid rule name");
|
||||
RNA_def_struct_name_property(srna, prop);
|
||||
|
||||
/* enums */
|
||||
prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "type");
|
||||
RNA_def_property_enum_items(prop, rna_enum_boidrule_type_items);
|
||||
RNA_def_property_ui_text(prop, "Type", "");
|
||||
|
||||
/* flags */
|
||||
prop = RNA_def_property(srna, "use_in_air", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_IN_AIR);
|
||||
RNA_def_property_ui_text(prop, "In Air", "Use rule when boid is flying");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_on_land", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_ON_LAND);
|
||||
RNA_def_property_ui_text(prop, "On Land", "Use rule when boid is on land");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
/*prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); */
|
||||
/*RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); */
|
||||
/*RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface"); */
|
||||
|
||||
/* types */
|
||||
rna_def_boidrule_goal(brna);
|
||||
rna_def_boidrule_avoid(brna);
|
||||
rna_def_boidrule_avoid_collision(brna);
|
||||
rna_def_boidrule_follow_leader(brna);
|
||||
rna_def_boidrule_average_speed(brna);
|
||||
rna_def_boidrule_fight(brna);
|
||||
}
|
||||
|
||||
static void rna_def_boidstate(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidState", NULL);
|
||||
RNA_def_struct_ui_text(srna, "Boid State", "Boid state for boid physics");
|
||||
|
||||
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Name", "Boid state name");
|
||||
RNA_def_struct_name_property(srna, prop);
|
||||
|
||||
prop = RNA_def_property(srna, "ruleset_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, boidruleset_type_items);
|
||||
RNA_def_property_ui_text(prop, "Rule Evaluation", "How the rules in the list are evaluated");
|
||||
|
||||
prop = RNA_def_property(srna, "rules", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "BoidRule");
|
||||
RNA_def_property_ui_text(prop, "Boid Rules", "");
|
||||
|
||||
prop = RNA_def_property(srna, "active_boid_rule", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "BoidRule");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_BoidState_active_boid_rule_get", NULL, NULL, NULL);
|
||||
RNA_def_property_ui_text(prop, "Active Boid Rule", "");
|
||||
|
||||
prop = RNA_def_property(srna, "active_boid_rule_index", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_int_funcs(prop, "rna_BoidState_active_boid_rule_index_get",
|
||||
"rna_BoidState_active_boid_rule_index_set",
|
||||
"rna_BoidState_active_boid_rule_index_range");
|
||||
RNA_def_property_ui_text(prop, "Active Boid Rule Index", "");
|
||||
|
||||
prop = RNA_def_property(srna, "rule_fuzzy", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "rule_fuzziness");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Rule Fuzziness", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Volume", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 10.0);
|
||||
RNA_def_property_ui_text(prop, "Falloff", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
static void rna_def_boid_settings(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "BoidSettings", NULL);
|
||||
RNA_def_struct_path_func(srna, "rna_BoidSettings_path");
|
||||
RNA_def_struct_ui_text(srna, "Boid Settings", "Settings for boid physics");
|
||||
|
||||
prop = RNA_def_property(srna, "land_smooth", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "landing_smoothness");
|
||||
RNA_def_property_range(prop, 0.0, 10.0);
|
||||
RNA_def_property_ui_text(prop, "Landing Smoothness", "How smoothly the boids land");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "bank", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "banking");
|
||||
RNA_def_property_range(prop, 0.0, 2.0);
|
||||
RNA_def_property_ui_text(prop, "Banking", "Amount of rotation around velocity vector on turns");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "pitch", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "pitch");
|
||||
RNA_def_property_range(prop, 0.0, 2.0);
|
||||
RNA_def_property_ui_text(prop, "Pitch", "Amount of rotation around side vector");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 2.0);
|
||||
RNA_def_property_ui_text(prop, "Height", "Boid height relative to particle size");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
/* states */
|
||||
prop = RNA_def_property(srna, "states", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "BoidState");
|
||||
RNA_def_property_ui_text(prop, "Boid States", "");
|
||||
|
||||
prop = RNA_def_property(srna, "active_boid_state", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "BoidRule");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_BoidSettings_active_boid_state_get", NULL, NULL, NULL);
|
||||
RNA_def_property_ui_text(prop, "Active Boid Rule", "");
|
||||
|
||||
prop = RNA_def_property(srna, "active_boid_state_index", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_int_funcs(prop, "rna_BoidSettings_active_boid_state_index_get",
|
||||
"rna_BoidSettings_active_boid_state_index_set",
|
||||
"rna_BoidSettings_active_boid_state_index_range");
|
||||
RNA_def_property_ui_text(prop, "Active Boid State Index", "");
|
||||
|
||||
/* character properties */
|
||||
prop = RNA_def_property(srna, "health", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Health", "Initial boid health when born");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Strength", "Maximum caused damage on attack per second");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "aggression", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Aggression", "Boid will fight this times stronger enemy");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "accuracy", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Accuracy", "Accuracy of attack");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "range", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Range", "Maximum distance from which a boid can attack");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
/* physical properties */
|
||||
prop = RNA_def_property(srna, "air_speed_min", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "air_min_speed");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Min Air Speed", "Minimum speed in air (relative to maximum speed)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "air_speed_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "air_max_speed");
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Max Air Speed", "Maximum speed in air");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "air_acc_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "air_max_acc");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Max Air Acceleration", "Maximum acceleration in air (relative to maximum speed)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "air_ave_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "air_max_ave");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Max Air Angular Velocity",
|
||||
"Maximum angular velocity in air (relative to 180 degrees)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "air_personal_space", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 10.0);
|
||||
RNA_def_property_ui_text(prop, "Air Personal Space", "Radius of boids personal space in air (% of particle size)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_jump_speed", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Jump Speed", "Maximum speed for jumping");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_speed_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "land_max_speed");
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Max Land Speed", "Maximum speed on land");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_acc_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "land_max_acc");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Max Land Acceleration",
|
||||
"Maximum acceleration on land (relative to maximum speed)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_ave_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "land_max_ave");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Max Land Angular Velocity",
|
||||
"Maximum angular velocity on land (relative to 180 degrees)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_personal_space", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 10.0);
|
||||
RNA_def_property_ui_text(prop, "Land Personal Space",
|
||||
"Radius of boids personal space on land (% of particle size)");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "land_stick_force", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 1000.0);
|
||||
RNA_def_property_ui_text(prop, "Land Stick Force", "How strong a force must be to start effecting a boid on land");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
/* options */
|
||||
prop = RNA_def_property(srna, "use_flight", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_FLIGHT);
|
||||
RNA_def_property_ui_text(prop, "Allow Flight", "Allow boids to move in air");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_land", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_LAND);
|
||||
RNA_def_property_ui_text(prop, "Allow Land", "Allow boids to move on land");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_climb", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_CLIMB);
|
||||
RNA_def_property_ui_text(prop, "Allow Climbing", "Allow boids to climb goal objects");
|
||||
RNA_def_property_update(prop, 0, "rna_Boids_reset");
|
||||
}
|
||||
|
||||
void RNA_def_boid(BlenderRNA *brna)
|
||||
{
|
||||
rna_def_boidrule(brna);
|
||||
rna_def_boidstate(brna);
|
||||
rna_def_boid_settings(brna);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -47,7 +47,6 @@
|
|||
#include "DNA_movieclip_types.h"
|
||||
#include "DNA_node_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_sequence_types.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
@ -346,13 +345,6 @@ static void rna_ColorRamp_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *
|
|||
WM_main_add_notifier(NC_LINESTYLE, linestyle);
|
||||
break;
|
||||
}
|
||||
case ID_PA:
|
||||
{
|
||||
ParticleSettings *part = ptr->id.data;
|
||||
|
||||
DAG_id_tag_update(&part->id, OB_RECALC_DATA | PSYS_RECALC_REDO);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, part);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -147,7 +147,6 @@ void RNA_def_context(BlenderRNA *brna)
|
|||
{CTX_MODE_PAINT_WEIGHT, "PAINT_WEIGHT", 0, "Weight Paint", ""},
|
||||
{CTX_MODE_PAINT_VERTEX, "PAINT_VERTEX", 0, "Vertex Paint", ""},
|
||||
{CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""},
|
||||
{CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""},
|
||||
{CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
|
|
@ -56,7 +56,6 @@ EnumPropertyItem rna_enum_prop_dynamicpaint_type_items[] = {
|
|||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
|
||||
static char *rna_DynamicPaintCanvasSettings_path(PointerRNA *ptr)
|
||||
|
@ -955,38 +954,6 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
|
|||
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_NEGATE_VOLUME);
|
||||
RNA_def_property_ui_text(prop, "Negate Volume", "Negate influence inside the volume");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_DynamicPaint_redoModifier");
|
||||
|
||||
|
||||
/*
|
||||
* Particle
|
||||
*/
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "psys");
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Particle Systems", "The particle system to paint with");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_DynamicPaint_reset_dependency");
|
||||
|
||||
|
||||
prop = RNA_def_property(srna, "use_particle_radius", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_PART_RAD);
|
||||
RNA_def_property_ui_text(prop, "Use Particle Radius", "Use radius from particle settings");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_DynamicPaint_redoModifier");
|
||||
|
||||
prop = RNA_def_property(srna, "solid_radius", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "particle_radius");
|
||||
RNA_def_property_range(prop, 0.01, 10.0);
|
||||
RNA_def_property_ui_range(prop, 0.01, 2.0, 5, 3);
|
||||
RNA_def_property_ui_text(prop, "Solid Radius", "Radius that will be painted solid");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_DynamicPaint_redoModifier");
|
||||
|
||||
prop = RNA_def_property(srna, "smooth_radius", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "particle_smooth");
|
||||
RNA_def_property_range(prop, 0.0, 10.0);
|
||||
RNA_def_property_ui_range(prop, 0.0, 1.0, 5, -1);
|
||||
RNA_def_property_ui_text(prop, "Smooth Radius", "Smooth falloff added after solid radius");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_DynamicPaint_redoModifier");
|
||||
|
||||
|
||||
/*
|
||||
* Color ramps
|
||||
|
|
|
@ -43,15 +43,14 @@
|
|||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_fluidsim.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_modifier.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_pointcache.h"
|
||||
|
||||
static StructRNA *rna_FluidSettings_refine(struct PointerRNA *ptr)
|
||||
|
@ -121,54 +120,10 @@ static void rna_FluidSettings_update_type(Main *bmain, Scene *scene, PointerRNA
|
|||
{
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
FluidsimModifierData *fluidmd;
|
||||
ParticleSystemModifierData *psmd;
|
||||
ParticleSystem *psys, *next_psys;
|
||||
ParticleSettings *part;
|
||||
|
||||
fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim);
|
||||
fluidmd->fss->flag &= ~OB_FLUIDSIM_REVERSE; /* clear flag */
|
||||
|
||||
/* remove fluidsim particle system */
|
||||
if (fluidmd->fss->type & OB_FLUIDSIM_PARTICLE) {
|
||||
for (psys = ob->particlesystem.first; psys; psys = psys->next)
|
||||
if (psys->part->type == PART_FLUID)
|
||||
break;
|
||||
|
||||
if (ob->type == OB_MESH && !psys) {
|
||||
/* add particle system */
|
||||
part = psys_new_settings("ParticleSettings", bmain);
|
||||
psys = MEM_callocN(sizeof(ParticleSystem), "particle_system");
|
||||
|
||||
part->type = PART_FLUID;
|
||||
psys->part = part;
|
||||
psys->pointcache = BKE_ptcache_add(&psys->ptcaches);
|
||||
BLI_strncpy(psys->name, "FluidParticles", sizeof(psys->name));
|
||||
BLI_addtail(&ob->particlesystem, psys);
|
||||
|
||||
/* add modifier */
|
||||
psmd = (ParticleSystemModifierData *)modifier_new(eModifierType_ParticleSystem);
|
||||
BLI_strncpy(psmd->modifier.name, "FluidParticleSystem", sizeof(psmd->modifier.name));
|
||||
psmd->psys = psys;
|
||||
BLI_addtail(&ob->modifiers, psmd);
|
||||
modifier_unique_name(&ob->modifiers, (ModifierData *)psmd);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (psys = ob->particlesystem.first; psys; psys = next_psys) {
|
||||
next_psys = psys->next;
|
||||
if (psys->part->type == PART_FLUID) {
|
||||
/* clear modifier */
|
||||
psmd = psys_get_modifier(ob, psys);
|
||||
BLI_remlink(&ob->modifiers, psmd);
|
||||
modifier_free((ModifierData *)psmd);
|
||||
|
||||
/* clear particle system */
|
||||
BLI_remlink(&ob->particlesystem, psys);
|
||||
psys_free(ob, psys);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rna_fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
|
|
|
@ -163,7 +163,6 @@ void RNA_def_object(struct BlenderRNA *brna);
|
|||
void RNA_def_object_force(struct BlenderRNA *brna);
|
||||
void RNA_def_packedfile(struct BlenderRNA *brna);
|
||||
void RNA_def_palette(struct BlenderRNA *brna);
|
||||
void RNA_def_particle(struct BlenderRNA *brna);
|
||||
void RNA_def_pose(struct BlenderRNA *brna);
|
||||
void RNA_def_render(struct BlenderRNA *brna);
|
||||
void RNA_def_rigidbody(struct BlenderRNA *brna);
|
||||
|
@ -325,7 +324,6 @@ void RNA_def_main_speakers(BlenderRNA *brna, PropertyRNA *cprop);
|
|||
void RNA_def_main_sounds(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_armatures(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_actions(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_particles(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_palettes(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_gpencil(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
void RNA_def_main_movieclips(BlenderRNA *brna, PropertyRNA *cprop);
|
||||
|
|
|
@ -239,12 +239,6 @@ static void rna_Main_brush_begin(CollectionPropertyIterator *iter, PointerRNA *p
|
|||
rna_iterator_listbase_begin(iter, &bmain->brush, NULL);
|
||||
}
|
||||
|
||||
static void rna_Main_particle_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
||||
{
|
||||
Main *bmain = (Main *)ptr->data;
|
||||
rna_iterator_listbase_begin(iter, &bmain->particle, NULL);
|
||||
}
|
||||
|
||||
static void rna_Main_palettes_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
||||
{
|
||||
Main *bmain = (Main *)ptr->data;
|
||||
|
@ -348,7 +342,6 @@ void RNA_def_main(BlenderRNA *brna)
|
|||
{"sounds", "Sound", "rna_Main_sound_begin", "Sounds", "Sound datablocks", RNA_def_main_sounds},
|
||||
{"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks", RNA_def_main_armatures},
|
||||
{"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks", RNA_def_main_actions},
|
||||
{"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks", RNA_def_main_particles},
|
||||
{"palettes", "Palette", "rna_Main_palettes_begin", "Palettes", "Palette datablocks", RNA_def_main_palettes},
|
||||
{"grease_pencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks", RNA_def_main_gpencil},
|
||||
{"movieclips", "MovieClip", "rna_Main_movieclips_begin", "Movie Clips", "Movie Clip datablocks", RNA_def_main_movieclips},
|
||||
|
|
|
@ -72,7 +72,6 @@
|
|||
#include "BKE_lattice.h"
|
||||
#include "BKE_mball.h"
|
||||
#include "BKE_world.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_paint.h"
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_node.h"
|
||||
|
@ -98,7 +97,6 @@
|
|||
#include "DNA_lattice_types.h"
|
||||
#include "DNA_meta_types.h"
|
||||
#include "DNA_world_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_vfont_types.h"
|
||||
#include "DNA_node_types.h"
|
||||
#include "DNA_movieclip_types.h"
|
||||
|
@ -657,25 +655,6 @@ static void rna_Main_actions_remove(Main *bmain, ReportList *reports, PointerRNA
|
|||
}
|
||||
}
|
||||
|
||||
static ParticleSettings *rna_Main_particles_new(Main *bmain, const char *name)
|
||||
{
|
||||
ParticleSettings *part = psys_new_settings(name, bmain);
|
||||
id_us_min(&part->id);
|
||||
return part;
|
||||
}
|
||||
static void rna_Main_particles_remove(Main *bmain, ReportList *reports, PointerRNA *part_ptr)
|
||||
{
|
||||
ParticleSettings *part = part_ptr->data;
|
||||
if (ID_REAL_USERS(part) <= 0) {
|
||||
BKE_libblock_free(bmain, part);
|
||||
RNA_POINTER_INVALIDATE(part_ptr);
|
||||
}
|
||||
else {
|
||||
BKE_reportf(reports, RPT_ERROR, "Particle settings '%s' must have zero users to be removed, found %d",
|
||||
part->id.name + 2, ID_REAL_USERS(part));
|
||||
}
|
||||
}
|
||||
|
||||
static Palette *rna_Main_palettes_new(Main *bmain, const char *name)
|
||||
{
|
||||
Palette *palette = BKE_palette_add(bmain, name);
|
||||
|
@ -806,7 +785,6 @@ RNA_MAIN_ID_TAG_FUNCS_DEF(speakers, speaker, ID_SPK)
|
|||
RNA_MAIN_ID_TAG_FUNCS_DEF(sounds, sound, ID_SO)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(armatures, armature, ID_AR)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(actions, action, ID_AC)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(particles, particle, ID_PA)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(palettes, palettes, ID_PAL)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(gpencil, gpencil, ID_GD)
|
||||
RNA_MAIN_ID_TAG_FUNCS_DEF(movieclips, movieclip, ID_MC)
|
||||
|
@ -1714,41 +1692,6 @@ void RNA_def_main_actions(BlenderRNA *brna, PropertyRNA *cprop)
|
|||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_boolean_funcs(prop, "rna_Main_actions_is_updated_get", NULL);
|
||||
}
|
||||
void RNA_def_main_particles(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
{
|
||||
StructRNA *srna;
|
||||
FunctionRNA *func;
|
||||
PropertyRNA *parm;
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_property_srna(cprop, "BlendDataParticles");
|
||||
srna = RNA_def_struct(brna, "BlendDataParticles", NULL);
|
||||
RNA_def_struct_sdna(srna, "Main");
|
||||
RNA_def_struct_ui_text(srna, "Main Particle Settings", "Collection of particle settings");
|
||||
|
||||
func = RNA_def_function(srna, "new", "rna_Main_particles_new");
|
||||
RNA_def_function_ui_description(func, "Add a new particle settings instance to the main database");
|
||||
parm = RNA_def_string(func, "name", "ParticleSettings", 0, "", "New name for the data-block");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "particle", "ParticleSettings", "", "New particle settings data-block");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "remove", "rna_Main_particles_remove");
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
||||
RNA_def_function_ui_description(func, "Remove a particle settings instance from the current blendfile");
|
||||
parm = RNA_def_pointer(func, "particle", "ParticleSettings", "", "Particle Settings to remove");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL | PROP_RNAPTR);
|
||||
RNA_def_property_clear_flag(parm, PROP_THICK_WRAP);
|
||||
|
||||
func = RNA_def_function(srna, "tag", "rna_Main_particles_tag");
|
||||
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED);
|
||||
|
||||
prop = RNA_def_property(srna, "is_updated", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_boolean_funcs(prop, "rna_Main_particles_is_updated_get", NULL);
|
||||
}
|
||||
void RNA_def_main_palettes(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
|
|
@ -112,8 +112,6 @@ EnumPropertyItem rna_enum_object_modifier_type_items[] = {
|
|||
{eModifierType_Explode, "EXPLODE", ICON_MOD_EXPLODE, "Explode", ""},
|
||||
{eModifierType_Fluidsim, "FLUID_SIMULATION", ICON_MOD_FLUIDSIM, "Fluid Simulation", ""},
|
||||
{eModifierType_Ocean, "OCEAN", ICON_MOD_OCEAN, "Ocean", ""},
|
||||
{eModifierType_ParticleInstance, "PARTICLE_INSTANCE", ICON_MOD_PARTICLES, "Particle Instance", ""},
|
||||
{eModifierType_ParticleSystem, "PARTICLE_SYSTEM", ICON_MOD_PARTICLES, "Particle System", ""},
|
||||
{eModifierType_Smoke, "SMOKE", ICON_MOD_SMOKE, "Smoke", ""},
|
||||
{eModifierType_Softbody, "SOFT_BODY", ICON_MOD_SOFT, "Soft Body", ""},
|
||||
{eModifierType_Surface, "SURFACE", ICON_MOD_PHYSICS, "Surface", ""},
|
||||
|
@ -277,7 +275,6 @@ EnumPropertyItem rna_enum_axis_flag_xyz_items[] = {
|
|||
|
||||
#ifdef RNA_RUNTIME
|
||||
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_curve_types.h"
|
||||
#include "DNA_smoke_types.h"
|
||||
|
||||
|
@ -286,7 +283,6 @@ EnumPropertyItem rna_enum_axis_flag_xyz_items[] = {
|
|||
#include "BKE_library.h"
|
||||
#include "BKE_modifier.h"
|
||||
#include "BKE_object.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
||||
{
|
||||
|
@ -335,10 +331,6 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr)
|
|||
return &RNA_CastModifier;
|
||||
case eModifierType_MeshDeform:
|
||||
return &RNA_MeshDeformModifier;
|
||||
case eModifierType_ParticleSystem:
|
||||
return &RNA_ParticleSystemModifier;
|
||||
case eModifierType_ParticleInstance:
|
||||
return &RNA_ParticleInstanceModifier;
|
||||
case eModifierType_Explode:
|
||||
return &RNA_ExplodeModifier;
|
||||
case eModifierType_Cloth:
|
||||
|
@ -2544,104 +2536,6 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void rna_def_modifier_particlesystem(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "ParticleSystemModifier", "Modifier");
|
||||
RNA_def_struct_ui_text(srna, "ParticleSystem Modifier", "Particle system simulation modifier");
|
||||
RNA_def_struct_sdna(srna, "ParticleSystemModifierData");
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES);
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_NEVER_NULL);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "psys");
|
||||
RNA_def_property_ui_text(prop, "Particle System", "Particle System that this modifier controls");
|
||||
}
|
||||
|
||||
static void rna_def_modifier_particleinstance(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "ParticleInstanceModifier", "Modifier");
|
||||
RNA_def_struct_ui_text(srna, "ParticleInstance Modifier", "Particle system instancing modifier");
|
||||
RNA_def_struct_sdna(srna, "ParticleInstanceModifierData");
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES);
|
||||
|
||||
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "ob");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Mesh_object_poll");
|
||||
RNA_def_property_ui_text(prop, "Object", "Object that has the particle system");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system_index", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "psys");
|
||||
RNA_def_property_range(prop, 1, 10);
|
||||
RNA_def_property_ui_text(prop, "Particle System Number", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "axis");
|
||||
RNA_def_property_enum_items(prop, rna_enum_axis_xyz_items);
|
||||
RNA_def_property_ui_text(prop, "Axis", "Pole axis for rotation");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_normal", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Parents);
|
||||
RNA_def_property_ui_text(prop, "Normal", "Create instances from normal particles");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_children", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Children);
|
||||
RNA_def_property_ui_text(prop, "Children", "Create instances from child particles");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_path", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Path);
|
||||
RNA_def_property_ui_text(prop, "Path", "Create instances along particle paths");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Unborn);
|
||||
RNA_def_property_ui_text(prop, "Unborn", "Show instances when particles are unborn");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "show_alive", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Alive);
|
||||
RNA_def_property_ui_text(prop, "Alive", "Show instances when particles are alive");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "show_dead", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Dead);
|
||||
RNA_def_property_ui_text(prop, "Dead", "Show instances when particles are dead");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_preserve_shape", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_KeepShape);
|
||||
RNA_def_property_ui_text(prop, "Keep Shape", "Don't stretch the object");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_size", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_UseSize);
|
||||
RNA_def_property_ui_text(prop, "Size", "Use particle size to scale the instances");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "position", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "position");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Position", "Position along path");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "random_position", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "random_position");
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Random Position", "Randomize position along path");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
}
|
||||
|
||||
static void rna_def_modifier_explode(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
@ -4713,8 +4607,6 @@ void RNA_def_modifier(BlenderRNA *brna)
|
|||
rna_def_modifier_correctivesmooth(brna);
|
||||
rna_def_modifier_cast(brna);
|
||||
rna_def_modifier_meshdeform(brna);
|
||||
rna_def_modifier_particlesystem(brna);
|
||||
rna_def_modifier_particleinstance(brna);
|
||||
rna_def_modifier_explode(brna);
|
||||
rna_def_modifier_cloth(brna);
|
||||
rna_def_modifier_collision(brna);
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
#include "DNA_mesh_types.h"
|
||||
#include "DNA_node_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_text_types.h"
|
||||
#include "DNA_texture_types.h"
|
||||
|
||||
|
@ -3000,36 +2999,6 @@ static void rna_CompositorNodeScale_update(Main *bmain, Scene *scene, PointerRNA
|
|||
rna_Node_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static PointerRNA rna_ShaderNodePointDensity_psys_get(PointerRNA *ptr)
|
||||
{
|
||||
bNode *node = ptr->data;
|
||||
NodeShaderTexPointDensity *shader_point_density = node->storage;
|
||||
Object *ob = (Object *)node->id;
|
||||
ParticleSystem *psys = NULL;
|
||||
PointerRNA value;
|
||||
|
||||
if (ob && shader_point_density->particle_system) {
|
||||
psys = BLI_findlink(&ob->particlesystem, shader_point_density->particle_system - 1);
|
||||
}
|
||||
|
||||
RNA_pointer_create(&ob->id, &RNA_ParticleSystem, psys, &value);
|
||||
return value;
|
||||
}
|
||||
|
||||
static void rna_ShaderNodePointDensity_psys_set(PointerRNA *ptr, PointerRNA value)
|
||||
{
|
||||
bNode *node = ptr->data;
|
||||
NodeShaderTexPointDensity *shader_point_density = node->storage;
|
||||
Object *ob = (Object *)node->id;
|
||||
|
||||
if (ob && value.id.data == ob) {
|
||||
shader_point_density->particle_system = BLI_findindex(&ob->particlesystem, value.data) + 1;
|
||||
}
|
||||
else {
|
||||
shader_point_density->particle_system = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int point_density_particle_color_source_from_shader(NodeShaderTexPointDensity *shader_point_density)
|
||||
{
|
||||
switch (shader_point_density->color_source) {
|
||||
|
@ -4063,14 +4032,6 @@ static void def_sh_tex_pointdensity(StructRNA *srna)
|
|||
RNA_def_property_ui_text(prop, "Point Source", "Point data to use as renderable point density");
|
||||
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Particle System", "Particle System to render as points");
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_ShaderNodePointDensity_psys_get",
|
||||
"rna_ShaderNodePointDensity_psys_set", NULL, NULL);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
|
||||
|
||||
prop = RNA_def_property(srna, "resolution", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 1, 32768);
|
||||
RNA_def_property_ui_text(prop, "Resolution", "Resolution used by the texture holding the point density");
|
||||
|
|
|
@ -68,7 +68,6 @@ EnumPropertyItem rna_enum_object_mode_items[] = {
|
|||
{OB_MODE_VERTEX_PAINT, "VERTEX_PAINT", ICON_VPAINT_HLT, "Vertex Paint", ""},
|
||||
{OB_MODE_WEIGHT_PAINT, "WEIGHT_PAINT", ICON_WPAINT_HLT, "Weight Paint", ""},
|
||||
{OB_MODE_TEXTURE_PAINT, "TEXTURE_PAINT", ICON_TPAINT_HLT, "Texture Paint", ""},
|
||||
{OB_MODE_PARTICLE_EDIT, "PARTICLE_EDIT", ICON_PARTICLEMODE, "Particle Edit", ""},
|
||||
{OB_MODE_GPENCIL, "GPENCIL_EDIT", ICON_GREASEPENCIL, "Edit Strokes", "Edit Grease Pencil Strokes"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
@ -188,7 +187,6 @@ EnumPropertyItem rna_enum_object_axis_items[] = {
|
|||
#include "BKE_object.h"
|
||||
#include "BKE_material.h"
|
||||
#include "BKE_mesh.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_deform.h"
|
||||
|
||||
|
@ -726,35 +724,6 @@ static int rna_Object_active_material_editable(PointerRNA *ptr)
|
|||
return is_editable ? PROP_EDITABLE : 0;
|
||||
}
|
||||
|
||||
|
||||
static void rna_Object_active_particle_system_index_range(PointerRNA *ptr, int *min, int *max,
|
||||
int *UNUSED(softmin), int *UNUSED(softmax))
|
||||
{
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
*min = 0;
|
||||
*max = max_ii(0, BLI_listbase_count(&ob->particlesystem) - 1);
|
||||
}
|
||||
|
||||
static int rna_Object_active_particle_system_index_get(PointerRNA *ptr)
|
||||
{
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
return psys_get_current_num(ob);
|
||||
}
|
||||
|
||||
static void rna_Object_active_particle_system_index_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
psys_set_current_num(ob, value);
|
||||
}
|
||||
|
||||
static void rna_Object_particle_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
UNUSED_VARS(scene, ptr);
|
||||
// Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
// PE_current_changed(scene, ob);
|
||||
}
|
||||
|
||||
/* rotation - axis-angle */
|
||||
static void rna_Object_rotation_axis_angle_get(PointerRNA *ptr, float *value)
|
||||
{
|
||||
|
@ -1075,13 +1044,6 @@ static void rna_GameObjectSettings_physics_type_set(PointerRNA *ptr, int value)
|
|||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ptr->id.data);
|
||||
}
|
||||
|
||||
static PointerRNA rna_Object_active_particle_system_get(PointerRNA *ptr)
|
||||
{
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ParticleSystem *psys = psys_get_current(ob);
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_ParticleSystem, psys);
|
||||
}
|
||||
|
||||
static PointerRNA rna_Object_game_settings_get(PointerRNA *ptr)
|
||||
{
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_GameObjectSettings, ptr->id.data);
|
||||
|
@ -2026,37 +1988,6 @@ static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
|
|||
RNA_def_function_ui_description(func, "Remove all modifiers from the object");
|
||||
}
|
||||
|
||||
/* object.particle_systems */
|
||||
static void rna_def_object_particle_systems(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
/* FunctionRNA *func; */
|
||||
/* PropertyRNA *parm; */
|
||||
|
||||
RNA_def_property_srna(cprop, "ParticleSystems");
|
||||
srna = RNA_def_struct(brna, "ParticleSystems", NULL);
|
||||
RNA_def_struct_sdna(srna, "Object");
|
||||
RNA_def_struct_ui_text(srna, "Particle Systems", "Collection of particle systems");
|
||||
|
||||
prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_Object_active_particle_system_get", NULL, NULL, NULL);
|
||||
RNA_def_property_ui_text(prop, "Active Particle System", "Active particle system being displayed");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_int_funcs(prop, "rna_Object_active_particle_system_index_get",
|
||||
"rna_Object_active_particle_system_index_set",
|
||||
"rna_Object_active_particle_system_index_range");
|
||||
RNA_def_property_ui_text(prop, "Active Particle System Index", "Index of active particle system slot");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Object_particle_update");
|
||||
}
|
||||
|
||||
|
||||
/* object.vertex_groups */
|
||||
static void rna_def_object_vertex_groups(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
{
|
||||
|
@ -2584,13 +2515,6 @@ static void rna_def_object(BlenderRNA *brna)
|
|||
RNA_def_property_struct_type(prop, "SoftBodySettings");
|
||||
RNA_def_property_ui_text(prop, "Soft Body Settings", "Settings for soft body simulation");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_systems", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, NULL, "particlesystem", NULL);
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_ui_text(prop, "Particle Systems", "Particle systems emitted from the object");
|
||||
rna_def_object_particle_systems(brna, prop);
|
||||
|
||||
|
||||
prop = RNA_def_property(srna, "rigid_body", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "rigidbody_object");
|
||||
RNA_def_property_struct_type(prop, "RigidBodyObject");
|
||||
|
@ -2873,10 +2797,6 @@ static void rna_def_dupli_object(BlenderRNA *brna)
|
|||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Persistent ID", "Persistent identifier for inter-frame matching of objects with motion blur");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Particle System", "Particle system that this dupli object was instanced from");
|
||||
|
||||
prop = RNA_def_property(srna, "orco", PROP_FLOAT, PROP_TRANSLATION);
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Generated Coordinates", "Generated coordinates in parent object space");
|
||||
|
|
|
@ -146,54 +146,9 @@ static Mesh *rna_Object_to_mesh(
|
|||
return rna_Main_meshes_new_from_object(G.main, reports, sce, ob, apply_modifiers, settings, calc_tessface, calc_undeformed);
|
||||
}
|
||||
|
||||
/* mostly a copy from convertblender.c */
|
||||
static void dupli_render_particle_set(Scene *scene, Object *ob, int level, int enable)
|
||||
{
|
||||
/* ugly function, but we need to set particle systems to their render
|
||||
* settings before calling object_duplilist, to get render level duplis */
|
||||
Group *group;
|
||||
GroupObject *go;
|
||||
ParticleSystem *psys;
|
||||
DerivedMesh *dm;
|
||||
float mat[4][4];
|
||||
|
||||
unit_m4(mat);
|
||||
|
||||
if (level >= MAX_DUPLI_RECUR)
|
||||
return;
|
||||
|
||||
if (ob->transflag & OB_DUPLIPARTS) {
|
||||
for (psys = ob->particlesystem.first; psys; psys = psys->next) {
|
||||
if (ELEM(psys->part->ren_as, PART_DRAW_OB, PART_DRAW_GR)) {
|
||||
if (enable)
|
||||
psys_render_set(ob, psys, mat, mat, 1, 1, 0.f);
|
||||
else
|
||||
psys_render_restore(ob, psys);
|
||||
}
|
||||
}
|
||||
|
||||
if (enable) {
|
||||
/* this is to make sure we get render level duplis in groups:
|
||||
* the derivedmesh must be created before init_render_mesh,
|
||||
* since object_duplilist does dupliparticles before that */
|
||||
dm = mesh_create_derived_render(scene, ob, CD_MASK_BAREMESH | CD_MASK_MLOOPUV | CD_MASK_MLOOPCOL);
|
||||
dm->release(dm);
|
||||
|
||||
for (psys = ob->particlesystem.first; psys; psys = psys->next)
|
||||
psys_get_modifier(ob, psys)->flag &= ~eParticleSystemFlag_psys_updated;
|
||||
}
|
||||
}
|
||||
|
||||
if (ob->dup_group == NULL) return;
|
||||
group = ob->dup_group;
|
||||
|
||||
for (go = group->gobject.first; go; go = go->next)
|
||||
dupli_render_particle_set(scene, go->ob, level + 1, enable);
|
||||
}
|
||||
/* When no longer needed, duplilist should be freed with Object.free_duplilist */
|
||||
static void rna_Object_create_duplilist(Object *ob, ReportList *reports, Scene *sce, int settings)
|
||||
{
|
||||
bool for_render = (settings == DAG_EVAL_RENDER);
|
||||
EvaluationContext eval_ctx;
|
||||
DEG_evaluation_context_init(&eval_ctx, settings);
|
||||
|
||||
|
@ -209,11 +164,7 @@ static void rna_Object_create_duplilist(Object *ob, ReportList *reports, Scene *
|
|||
free_object_duplilist(ob->duplilist);
|
||||
ob->duplilist = NULL;
|
||||
}
|
||||
if (for_render)
|
||||
dupli_render_particle_set(sce, ob, 0, 1);
|
||||
ob->duplilist = object_duplilist(&eval_ctx, sce, ob);
|
||||
if (for_render)
|
||||
dupli_render_particle_set(sce, ob, 0, 0);
|
||||
/* ob->duplilist should now be freed with Object.free_duplilist */
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include "DNA_cloth_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_object_force.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_smoke_types.h"
|
||||
|
||||
|
@ -475,53 +474,25 @@ static char *rna_SoftBodySettings_path(PointerRNA *ptr)
|
|||
return BLI_sprintfN("modifiers[\"%s\"].settings", name_esc);
|
||||
}
|
||||
|
||||
static int particle_id_check(PointerRNA *ptr)
|
||||
{
|
||||
ID *id = ptr->id.data;
|
||||
|
||||
return (GS(id->name) == ID_PA);
|
||||
}
|
||||
|
||||
static void rna_FieldSettings_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
|
||||
{
|
||||
if (particle_id_check(ptr)) {
|
||||
ParticleSettings *part = (ParticleSettings *)ptr->id.data;
|
||||
|
||||
if (part->pd->forcefield != PFIELD_TEXTURE && part->pd->tex) {
|
||||
id_us_min(&part->pd->tex->id);
|
||||
part->pd->tex = NULL;
|
||||
}
|
||||
|
||||
if (part->pd2 && part->pd2->forcefield != PFIELD_TEXTURE && part->pd2->tex) {
|
||||
id_us_min(&part->pd2->tex->id);
|
||||
part->pd2->tex = NULL;
|
||||
}
|
||||
|
||||
DAG_id_tag_update(&part->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME | PSYS_RECALC_RESET);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, NULL);
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
if (ob->pd->forcefield != PFIELD_TEXTURE && ob->pd->tex) {
|
||||
id_us_min(&ob->pd->tex->id);
|
||||
ob->pd->tex = NULL;
|
||||
}
|
||||
else {
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
if (ob->pd->forcefield != PFIELD_TEXTURE && ob->pd->tex) {
|
||||
id_us_min(&ob->pd->tex->id);
|
||||
ob->pd->tex = NULL;
|
||||
}
|
||||
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
}
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
}
|
||||
|
||||
static void rna_FieldSettings_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
if (!particle_id_check(ptr)) {
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ED_object_check_force_modifiers(bmain, scene, ob);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ob);
|
||||
}
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ED_object_check_force_modifiers(bmain, scene, ob);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ob);
|
||||
}
|
||||
|
||||
static void rna_FieldSettings_type_set(PointerRNA *ptr, int value)
|
||||
|
@ -530,46 +501,39 @@ static void rna_FieldSettings_type_set(PointerRNA *ptr, int value)
|
|||
|
||||
part_deflect->forcefield = value;
|
||||
|
||||
if (!particle_id_check(ptr)) {
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ob->pd->forcefield = value;
|
||||
if (ELEM(value, PFIELD_WIND, PFIELD_VORTEX)) {
|
||||
ob->empty_drawtype = OB_SINGLE_ARROW;
|
||||
}
|
||||
else {
|
||||
ob->empty_drawtype = OB_PLAINAXES;
|
||||
}
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ob->pd->forcefield = value;
|
||||
if (ELEM(value, PFIELD_WIND, PFIELD_VORTEX)) {
|
||||
ob->empty_drawtype = OB_SINGLE_ARROW;
|
||||
}
|
||||
else {
|
||||
ob->empty_drawtype = OB_PLAINAXES;
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_FieldSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
if (particle_id_check(ptr)) {
|
||||
DAG_id_tag_update((ID *)ptr->id.data, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME | PSYS_RECALC_RESET);
|
||||
}
|
||||
else {
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
/* do this before scene sort, that one checks for CU_PATH */
|
||||
/* do this before scene sort, that one checks for CU_PATH */
|
||||
#if 0 /* XXX */
|
||||
if (ob->type == OB_CURVE && ob->pd->forcefield == PFIELD_GUIDE) {
|
||||
Curve *cu = ob->data;
|
||||
cu->flag |= (CU_PATH | CU_3D);
|
||||
do_curvebuts(B_CU3D); /* all curves too */
|
||||
}
|
||||
if (ob->type == OB_CURVE && ob->pd->forcefield == PFIELD_GUIDE) {
|
||||
Curve *cu = ob->data;
|
||||
cu->flag |= (CU_PATH | CU_3D);
|
||||
do_curvebuts(B_CU3D); /* all curves too */
|
||||
}
|
||||
#endif
|
||||
|
||||
rna_FieldSettings_shape_update(bmain, scene, ptr);
|
||||
rna_FieldSettings_shape_update(bmain, scene, ptr);
|
||||
|
||||
DAG_relations_tag_update(bmain);
|
||||
DAG_relations_tag_update(bmain);
|
||||
|
||||
if (ob->type == OB_CURVE && ob->pd->forcefield == PFIELD_GUIDE)
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
|
||||
else
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
if (ob->type == OB_CURVE && ob->pd->forcefield == PFIELD_GUIDE)
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
|
||||
else
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
}
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob);
|
||||
}
|
||||
|
||||
static char *rna_FieldSettings_path(PointerRNA *ptr)
|
||||
|
@ -578,22 +542,12 @@ static char *rna_FieldSettings_path(PointerRNA *ptr)
|
|||
|
||||
/* Check through all possible places the settings can be to find the right one */
|
||||
|
||||
if (particle_id_check(ptr)) {
|
||||
/* particle system force field */
|
||||
ParticleSettings *part = (ParticleSettings *)ptr->id.data;
|
||||
|
||||
if (part->pd == pd)
|
||||
return BLI_sprintfN("force_field_1");
|
||||
else if (part->pd2 == pd)
|
||||
return BLI_sprintfN("force_field_2");
|
||||
}
|
||||
else {
|
||||
/* object force field */
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
if (ob->pd == pd)
|
||||
return BLI_sprintfN("field");
|
||||
}
|
||||
/* object force field */
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
|
||||
if (ob->pd == pd)
|
||||
return BLI_sprintfN("field");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -610,7 +564,7 @@ static void rna_EffectorWeight_update(Main *UNUSED(bmain), Scene *UNUSED(scene),
|
|||
}
|
||||
}
|
||||
else {
|
||||
DAG_id_tag_update(id, OB_RECALC_DATA | PSYS_RECALC_RESET);
|
||||
DAG_id_tag_update(id, OB_RECALC_DATA);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -619,7 +573,7 @@ static void rna_EffectorWeight_dependency_update(Main *bmain, Scene *UNUSED(scen
|
|||
{
|
||||
DAG_relations_tag_update(bmain);
|
||||
|
||||
DAG_id_tag_update((ID *)ptr->id.data, OB_RECALC_DATA | PSYS_RECALC_RESET);
|
||||
DAG_id_tag_update((ID *)ptr->id.data, OB_RECALC_DATA);
|
||||
|
||||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, NULL);
|
||||
}
|
||||
|
@ -629,68 +583,59 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
|
|||
EffectorWeights *ew = (EffectorWeights *)ptr->data;
|
||||
/* Check through all possible places the settings can be to find the right one */
|
||||
|
||||
if (particle_id_check(ptr)) {
|
||||
/* particle effector weights */
|
||||
ParticleSettings *part = (ParticleSettings *)ptr->id.data;
|
||||
|
||||
if (part->effector_weights == ew)
|
||||
return BLI_sprintfN("effector_weights");
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ModifierData *md;
|
||||
|
||||
/* check softbody modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody);
|
||||
if (md) {
|
||||
/* no pointer from modifier data to actual softbody storage, would be good to add */
|
||||
if (ob->soft->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Object *ob = (Object *)ptr->id.data;
|
||||
ModifierData *md;
|
||||
|
||||
/* check softbody modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody);
|
||||
if (md) {
|
||||
/* no pointer from modifier data to actual softbody storage, would be good to add */
|
||||
if (ob->soft->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
|
||||
/* check cloth modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
if (md) {
|
||||
ClothModifierData *cmd = (ClothModifierData *)md;
|
||||
if (cmd->sim_parms->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
|
||||
/* check cloth modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
if (md) {
|
||||
ClothModifierData *cmd = (ClothModifierData *)md;
|
||||
if (cmd->sim_parms->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
}
|
||||
|
||||
/* check smoke modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Smoke);
|
||||
if (md) {
|
||||
SmokeModifierData *smd = (SmokeModifierData *)md;
|
||||
if (smd->domain->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
}
|
||||
|
||||
/* check smoke modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Smoke);
|
||||
if (md) {
|
||||
SmokeModifierData *smd = (SmokeModifierData *)md;
|
||||
if (smd->domain->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
|
||||
}
|
||||
}
|
||||
|
||||
/* check dynamic paint modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_DynamicPaint);
|
||||
if (md) {
|
||||
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
|
||||
/* check dynamic paint modifier */
|
||||
md = (ModifierData *)modifiers_findByType(ob, eModifierType_DynamicPaint);
|
||||
if (md) {
|
||||
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
|
||||
|
||||
if (pmd->canvas) {
|
||||
DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
|
||||
if (pmd->canvas) {
|
||||
DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
|
||||
|
||||
for (; surface; surface = surface->next) {
|
||||
if (surface->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
char name_esc_surface[sizeof(surface->name) * 2];
|
||||
for (; surface; surface = surface->next) {
|
||||
if (surface->effector_weights == ew) {
|
||||
char name_esc[sizeof(md->name) * 2];
|
||||
char name_esc_surface[sizeof(surface->name) * 2];
|
||||
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
BLI_strescape(name_esc_surface, surface->name, sizeof(name_esc_surface));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].canvas_settings.canvas_surfaces[\"%s\"]"
|
||||
".effector_weights", name_esc, name_esc_surface);
|
||||
}
|
||||
BLI_strescape(name_esc, md->name, sizeof(name_esc));
|
||||
BLI_strescape(name_esc_surface, surface->name, sizeof(name_esc_surface));
|
||||
return BLI_sprintfN("modifiers[\"%s\"].canvas_settings.canvas_surfaces[\"%s\"]"
|
||||
".effector_weights", name_esc, name_esc_surface);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -734,9 +679,6 @@ static EnumPropertyItem *rna_Effector_shape_itemf(bContext *UNUSED(C), PointerRN
|
|||
{
|
||||
Object *ob = NULL;
|
||||
|
||||
if (particle_id_check(ptr))
|
||||
return empty_shape_items;
|
||||
|
||||
ob = (Object *)ptr->id.data;
|
||||
|
||||
if (ob->type == OB_CURVE) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1557,7 +1557,6 @@ static void rna_Scene_editmesh_select_mode_update(Main *UNUSED(bmain), Scene *sc
|
|||
static void object_simplify_update(Object *ob)
|
||||
{
|
||||
ModifierData *md;
|
||||
ParticleSystem *psys;
|
||||
|
||||
if ((ob->id.tag & LIB_TAG_DOIT) == 0) {
|
||||
return;
|
||||
|
@ -1571,9 +1570,6 @@ static void object_simplify_update(Object *ob)
|
|||
}
|
||||
}
|
||||
|
||||
for (psys = ob->particlesystem.first; psys; psys = psys->next)
|
||||
psys->recalc |= PSYS_RECALC_CHILD;
|
||||
|
||||
if (ob->dup_group) {
|
||||
GroupObject *gob;
|
||||
|
||||
|
@ -2139,10 +2135,6 @@ static void rna_def_tool_settings(BlenderRNA *brna)
|
|||
RNA_def_property_pointer_sdna(prop, NULL, "uvsculpt");
|
||||
RNA_def_property_ui_text(prop, "UV Sculpt", "");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_edit", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "particle");
|
||||
RNA_def_property_ui_text(prop, "Particle Edit", "");
|
||||
|
||||
prop = RNA_def_property(srna, "use_uv_sculpt", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "use_uv_sculpt", 1);
|
||||
RNA_def_property_ui_text(prop, "UV Sculpt", "Enable brush for UV sculpting");
|
||||
|
@ -5993,22 +5985,12 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Simplify Subdivision", "Global maximum subdivision level");
|
||||
RNA_def_property_update(prop, 0, "rna_Scene_simplify_update");
|
||||
|
||||
prop = RNA_def_property(srna, "simplify_child_particles", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_float_sdna(prop, NULL, "simplify_particles");
|
||||
RNA_def_property_ui_text(prop, "Simplify Child Particles", "Global child particles percentage");
|
||||
RNA_def_property_update(prop, 0, "rna_Scene_simplify_update");
|
||||
|
||||
prop = RNA_def_property(srna, "simplify_subdivision_render", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_int_sdna(prop, NULL, "simplify_subsurf_render");
|
||||
RNA_def_property_ui_range(prop, 0, 6, 1, -1);
|
||||
RNA_def_property_ui_text(prop, "Simplify Subdivision", "Global maximum subdivision level during rendering");
|
||||
RNA_def_property_update(prop, 0, "rna_Scene_simplify_update");
|
||||
|
||||
prop = RNA_def_property(srna, "simplify_child_particles_render", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_float_sdna(prop, NULL, "simplify_particles_render");
|
||||
RNA_def_property_ui_text(prop, "Simplify Child Particles", "Global child particles percentage during rendering");
|
||||
RNA_def_property_update(prop, 0, "rna_Scene_simplify_update");
|
||||
|
||||
prop = RNA_def_property(srna, "simplify_shadow_samples", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_int_sdna(prop, NULL, "simplify_shadowsamples");
|
||||
RNA_def_property_ui_range(prop, 1, 16, 1, -1);
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "DNA_ID.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_brush_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
|
||||
|
@ -48,18 +49,6 @@
|
|||
#include "BLI_utildefines.h"
|
||||
#include "bmesh.h"
|
||||
|
||||
static EnumPropertyItem particle_edit_hair_brush_items[] = {
|
||||
{PE_BRUSH_NONE, "NONE", 0, "None", "Don't use any brush"},
|
||||
{PE_BRUSH_COMB, "COMB", 0, "Comb", "Comb hairs"},
|
||||
{PE_BRUSH_SMOOTH, "SMOOTH", 0, "Smooth", "Smooth hairs"},
|
||||
{PE_BRUSH_ADD, "ADD", 0, "Add", "Add hairs"},
|
||||
{PE_BRUSH_LENGTH, "LENGTH", 0, "Length", "Make hairs longer or shorter"},
|
||||
{PE_BRUSH_PUFF, "PUFF", 0, "Puff", "Make hairs stand up"},
|
||||
{PE_BRUSH_CUT, "CUT", 0, "Cut", "Cut hairs"},
|
||||
{PE_BRUSH_WEIGHT, "WEIGHT", 0, "Weight", "Weight hair particles"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
EnumPropertyItem rna_enum_gpencil_sculpt_brush_items[] = {
|
||||
{GP_EDITBRUSH_TYPE_SMOOTH, "SMOOTH", 0, "Smooth", "Smooth stroke points"},
|
||||
{GP_EDITBRUSH_TYPE_THICKNESS, "THICKNESS", 0, "Thickness", "Adjust thickness of strokes"},
|
||||
|
@ -92,114 +81,11 @@ EnumPropertyItem rna_enum_symmetrize_direction_items[] = {
|
|||
#include "BKE_context.h"
|
||||
#include "BKE_DerivedMesh.h"
|
||||
#include "BKE_pointcache.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_pbvh.h"
|
||||
|
||||
#include "GPU_buffers.h"
|
||||
|
||||
static EnumPropertyItem particle_edit_disconnected_hair_brush_items[] = {
|
||||
{PE_BRUSH_NONE, "NONE", 0, "None", "Don't use any brush"},
|
||||
{PE_BRUSH_COMB, "COMB", 0, "Comb", "Comb hairs"},
|
||||
{PE_BRUSH_SMOOTH, "SMOOTH", 0, "Smooth", "Smooth hairs"},
|
||||
{PE_BRUSH_LENGTH, "LENGTH", 0, "Length", "Make hairs longer or shorter"},
|
||||
{PE_BRUSH_CUT, "CUT", 0, "Cut", "Cut hairs"},
|
||||
{PE_BRUSH_WEIGHT, "WEIGHT", 0, "Weight", "Weight hair particles"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static EnumPropertyItem particle_edit_cache_brush_items[] = {
|
||||
{PE_BRUSH_NONE, "NONE", 0, "None", "Don't use any brush"},
|
||||
{PE_BRUSH_COMB, "COMB", 0, "Comb", "Comb paths"},
|
||||
{PE_BRUSH_SMOOTH, "SMOOTH", 0, "Smooth", "Smooth paths"},
|
||||
{PE_BRUSH_LENGTH, "LENGTH", 0, "Length", "Make paths longer or shorter"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static PointerRNA rna_ParticleEdit_brush_get(PointerRNA *ptr)
|
||||
{
|
||||
ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;
|
||||
ParticleBrushData *brush = NULL;
|
||||
|
||||
if (pset->brushtype != PE_BRUSH_NONE)
|
||||
brush = &pset->brush[pset->brushtype];
|
||||
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_ParticleBrush, brush);
|
||||
}
|
||||
|
||||
static PointerRNA rna_ParticleBrush_curve_get(PointerRNA *ptr)
|
||||
{
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_CurveMapping, NULL);
|
||||
}
|
||||
|
||||
static void rna_ParticleEdit_redo(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
UNUSED_VARS(scene);
|
||||
}
|
||||
|
||||
static void rna_ParticleEdit_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
Object *ob = (scene->basact) ? scene->basact->object : NULL;
|
||||
|
||||
if (ob) DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
}
|
||||
static void rna_ParticleEdit_tool_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;
|
||||
|
||||
/* redraw hair completely if weight brush is/was used */
|
||||
if ((pset->brushtype == PE_BRUSH_WEIGHT || value == PE_BRUSH_WEIGHT) && pset->scene) {
|
||||
Object *ob = (pset->scene->basact) ? pset->scene->basact->object : NULL;
|
||||
if (ob) {
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
pset->brushtype = value;
|
||||
}
|
||||
static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr),
|
||||
PropertyRNA *UNUSED(prop), bool *UNUSED(r_free))
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Object *ob = (scene->basact) ? scene->basact->object : NULL;
|
||||
#if 0
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
ParticleSystem *psys = edit ? edit->psys : NULL;
|
||||
#else
|
||||
/* use this rather than PE_get_current() - because the editing cache is
|
||||
* dependent on the cache being updated which can happen after this UI
|
||||
* draws causing a glitch [#28883] */
|
||||
ParticleSystem *psys = psys_get_current(ob);
|
||||
#endif
|
||||
|
||||
if (psys) {
|
||||
if (psys->flag & PSYS_GLOBAL_HAIR) {
|
||||
return particle_edit_disconnected_hair_brush_items;
|
||||
}
|
||||
else {
|
||||
return particle_edit_hair_brush_items;
|
||||
}
|
||||
}
|
||||
|
||||
return particle_edit_cache_brush_items;
|
||||
}
|
||||
|
||||
static int rna_ParticleEdit_editable_get(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static int rna_ParticleEdit_hair_get(PointerRNA *ptr)
|
||||
{
|
||||
UNUSED_VARS(ptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *rna_ParticleEdit_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("tool_settings.particle_edit");
|
||||
}
|
||||
|
||||
static int rna_Brush_mode_poll(PointerRNA *ptr, PointerRNA value)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->id.data;
|
||||
|
@ -279,11 +165,6 @@ static char *rna_UvSculpt_path(PointerRNA *UNUSED(ptr))
|
|||
return BLI_strdup("tool_settings.uv_sculpt");
|
||||
}
|
||||
|
||||
static char *rna_ParticleBrush_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("tool_settings.particle_edit.brush");
|
||||
}
|
||||
|
||||
static void rna_Paint_brush_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
|
||||
{
|
||||
Paint *paint = ptr->data;
|
||||
|
@ -784,188 +665,6 @@ static void rna_def_image_paint(BlenderRNA *brna)
|
|||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
}
|
||||
|
||||
static void rna_def_particle_edit(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
static EnumPropertyItem select_mode_items[] = {
|
||||
{SCE_SELECT_PATH, "PATH", ICON_PARTICLE_PATH, "Path", "Path edit mode"},
|
||||
{SCE_SELECT_POINT, "POINT", ICON_PARTICLE_POINT, "Point", "Point select mode"},
|
||||
{SCE_SELECT_END, "TIP", ICON_PARTICLE_TIP, "Tip", "Tip select mode"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static EnumPropertyItem puff_mode[] = {
|
||||
{0, "ADD", 0, "Add", "Make hairs more puffy"},
|
||||
{1, "SUB", 0, "Sub", "Make hairs less puffy"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static EnumPropertyItem length_mode[] = {
|
||||
{0, "GROW", 0, "Grow", "Make hairs longer"},
|
||||
{1, "SHRINK", 0, "Shrink", "Make hairs shorter"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static EnumPropertyItem edit_type_items[] = {
|
||||
{PE_TYPE_PARTICLES, "PARTICLES", 0, "Particles", ""},
|
||||
{PE_TYPE_SOFTBODY, "SOFT_BODY", 0, "Soft body", ""},
|
||||
{PE_TYPE_CLOTH, "CLOTH", 0, "Cloth", ""},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
/* edit */
|
||||
|
||||
srna = RNA_def_struct(brna, "ParticleEdit", NULL);
|
||||
RNA_def_struct_sdna(srna, "ParticleEditSettings");
|
||||
RNA_def_struct_path_func(srna, "rna_ParticleEdit_path");
|
||||
RNA_def_struct_ui_text(srna, "Particle Edit", "Properties of particle editing mode");
|
||||
|
||||
prop = RNA_def_property(srna, "tool", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "brushtype");
|
||||
RNA_def_property_enum_items(prop, particle_edit_hair_brush_items);
|
||||
RNA_def_property_enum_funcs(prop, NULL, "rna_ParticleEdit_tool_set", "rna_ParticleEdit_tool_itemf");
|
||||
RNA_def_property_ui_text(prop, "Tool", "");
|
||||
|
||||
prop = RNA_def_property(srna, "select_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
|
||||
RNA_def_property_enum_items(prop, select_mode_items);
|
||||
RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_preserve_length", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS);
|
||||
RNA_def_property_ui_text(prop, "Keep Lengths", "Keep path lengths constant");
|
||||
|
||||
prop = RNA_def_property(srna, "use_preserve_root", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_LOCK_FIRST);
|
||||
RNA_def_property_ui_text(prop, "Keep Root", "Keep root keys unmodified");
|
||||
|
||||
prop = RNA_def_property(srna, "use_emitter_deflect", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_DEFLECT_EMITTER);
|
||||
RNA_def_property_ui_text(prop, "Deflect Emitter", "Keep paths from intersecting the emitter");
|
||||
|
||||
prop = RNA_def_property(srna, "emitter_distance", PROP_FLOAT, PROP_UNSIGNED);
|
||||
RNA_def_property_float_sdna(prop, NULL, "emitterdist");
|
||||
RNA_def_property_ui_range(prop, 0.0f, 10.0f, 10, 3);
|
||||
RNA_def_property_ui_text(prop, "Emitter Distance", "Distance to keep particles away from the emitter");
|
||||
|
||||
prop = RNA_def_property(srna, "use_fade_time", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_FADE_TIME);
|
||||
RNA_def_property_ui_text(prop, "Fade Time", "Fade paths and keys further away from current frame");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_auto_velocity", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_AUTO_VELOCITY);
|
||||
RNA_def_property_ui_text(prop, "Auto Velocity", "Calculate point velocities automatically");
|
||||
|
||||
prop = RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_DRAW_PART);
|
||||
RNA_def_property_ui_text(prop, "Draw Particles", "Draw actual particles");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
||||
prop = RNA_def_property(srna, "use_default_interpolate", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_INTERPOLATE_ADDED);
|
||||
RNA_def_property_ui_text(prop, "Interpolate", "Interpolate new particles from the existing ones");
|
||||
|
||||
prop = RNA_def_property(srna, "default_key_count", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "totaddkey");
|
||||
RNA_def_property_range(prop, 2, SHRT_MAX);
|
||||
RNA_def_property_ui_range(prop, 2, 20, 10, 3);
|
||||
RNA_def_property_ui_text(prop, "Keys", "How many keys to make new particles with");
|
||||
|
||||
prop = RNA_def_property(srna, "brush", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "ParticleBrush");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_ParticleEdit_brush_get", NULL, NULL, NULL);
|
||||
RNA_def_property_ui_text(prop, "Brush", "");
|
||||
|
||||
prop = RNA_def_property(srna, "draw_step", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 1, 10);
|
||||
RNA_def_property_ui_text(prop, "Steps", "How many steps to draw the path with");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
||||
prop = RNA_def_property(srna, "fade_frames", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 1, 100);
|
||||
RNA_def_property_ui_text(prop, "Frames", "How many frames to fade");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_update");
|
||||
|
||||
prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "edittype");
|
||||
RNA_def_property_enum_items(prop, edit_type_items);
|
||||
RNA_def_property_ui_text(prop, "Type", "");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
||||
prop = RNA_def_property(srna, "is_editable", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_funcs(prop, "rna_ParticleEdit_editable_get", NULL);
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Editable", "A valid edit mode exists");
|
||||
|
||||
prop = RNA_def_property(srna, "is_hair", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_funcs(prop, "rna_ParticleEdit_hair_get", NULL);
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Hair", "Editing hair");
|
||||
|
||||
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Object", "The edited object");
|
||||
|
||||
prop = RNA_def_property(srna, "shape_object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Shape Object", "Outer shape to use for tools");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Mesh_object_poll");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
||||
/* brush */
|
||||
|
||||
srna = RNA_def_struct(brna, "ParticleBrush", NULL);
|
||||
RNA_def_struct_sdna(srna, "ParticleBrushData");
|
||||
RNA_def_struct_path_func(srna, "rna_ParticleBrush_path");
|
||||
RNA_def_struct_ui_text(srna, "Particle Brush", "Particle editing brush");
|
||||
|
||||
prop = RNA_def_property(srna, "size", PROP_INT, PROP_PIXEL);
|
||||
RNA_def_property_range(prop, 1, SHRT_MAX);
|
||||
RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 10, 3);
|
||||
RNA_def_property_ui_text(prop, "Radius", "Radius of the brush in pixels");
|
||||
|
||||
prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_range(prop, 0.001, 1.0);
|
||||
RNA_def_property_ui_text(prop, "Strength", "Brush strength");
|
||||
|
||||
prop = RNA_def_property(srna, "count", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 1, 1000);
|
||||
RNA_def_property_ui_range(prop, 1, 100, 10, 3);
|
||||
RNA_def_property_ui_text(prop, "Count", "Particle count");
|
||||
|
||||
prop = RNA_def_property(srna, "steps", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "step");
|
||||
RNA_def_property_range(prop, 1, SHRT_MAX);
|
||||
RNA_def_property_ui_range(prop, 1, 50, 10, 3);
|
||||
RNA_def_property_ui_text(prop, "Steps", "Brush steps");
|
||||
|
||||
prop = RNA_def_property(srna, "puff_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "invert");
|
||||
RNA_def_property_enum_items(prop, puff_mode);
|
||||
RNA_def_property_ui_text(prop, "Puff Mode", "");
|
||||
|
||||
prop = RNA_def_property(srna, "use_puff_volume", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_BRUSH_DATA_PUFF_VOLUME);
|
||||
RNA_def_property_ui_text(prop, "Puff Volume",
|
||||
"Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
|
||||
|
||||
prop = RNA_def_property(srna, "length_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "invert");
|
||||
RNA_def_property_enum_items(prop, length_mode);
|
||||
RNA_def_property_ui_text(prop, "Length Mode", "");
|
||||
|
||||
/* dummy */
|
||||
prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "CurveMapping");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_ParticleBrush_curve_get", NULL, NULL, NULL);
|
||||
RNA_def_property_ui_text(prop, "Curve", "");
|
||||
}
|
||||
|
||||
static void rna_def_gpencil_sculpt(BlenderRNA *brna)
|
||||
{
|
||||
static EnumPropertyItem prop_direction_items[] = {
|
||||
|
@ -1049,7 +748,6 @@ void RNA_def_sculpt_paint(BlenderRNA *brna)
|
|||
rna_def_uv_sculpt(brna);
|
||||
rna_def_vertex_paint(brna);
|
||||
rna_def_image_paint(brna);
|
||||
rna_def_particle_edit(brna);
|
||||
rna_def_gpencil_sculpt(brna);
|
||||
RNA_define_animate_sdna(true);
|
||||
}
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
#include "smoke_API.h"
|
||||
|
||||
|
@ -702,13 +701,6 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Temp. Diff.", "Temperature difference to ambient temperature");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "psys");
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Particle Systems", "Particle systems emitted from the object");
|
||||
RNA_def_property_update(prop, 0, "rna_Smoke_reset_dependency");
|
||||
|
||||
prop = RNA_def_property(srna, "smoke_flow_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "type");
|
||||
RNA_def_property_enum_items(prop, smoke_flow_types);
|
||||
|
|
|
@ -206,7 +206,6 @@ static EnumPropertyItem buttons_context_items[] = {
|
|||
{BCONTEXT_BONE_CONSTRAINT, "BONE_CONSTRAINT", ICON_CONSTRAINT_BONE, "Bone Constraints", "Bone constraints"},
|
||||
{BCONTEXT_MATERIAL, "MATERIAL", ICON_MATERIAL, "Material", "Material"},
|
||||
{BCONTEXT_TEXTURE, "TEXTURE", ICON_TEXTURE, "Texture", "Texture"},
|
||||
{BCONTEXT_PARTICLE, "PARTICLES", ICON_PARTICLES, "Particles", "Particle"},
|
||||
{BCONTEXT_PHYSICS, "PHYSICS", ICON_PHYSICS, "Physics", "Physics"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
@ -216,7 +215,6 @@ static EnumPropertyItem buttons_texture_context_items[] = {
|
|||
{SB_TEXC_MATERIAL, "MATERIAL", ICON_MATERIAL, "", "Show material textures"},
|
||||
{SB_TEXC_WORLD, "WORLD", ICON_WORLD, "", "Show world textures"},
|
||||
{SB_TEXC_LAMP, "LAMP", ICON_LAMP, "", "Show lamp textures"},
|
||||
{SB_TEXC_PARTICLES, "PARTICLES", ICON_PARTICLES, "", "Show particles textures"},
|
||||
{SB_TEXC_LINESTYLE, "LINESTYLE", ICON_LINE_DATA, "", "Show linestyle textures"},
|
||||
{SB_TEXC_OTHER, "OTHER", ICON_TEXTURE, "", "Show other data textures"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
|
@ -1088,10 +1086,6 @@ static EnumPropertyItem *rna_SpaceProperties_context_itemf(bContext *UNUSED(C),
|
|||
RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_TEXTURE);
|
||||
}
|
||||
|
||||
if (sbuts->pathflag & (1 << BCONTEXT_PARTICLE)) {
|
||||
RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_PARTICLE);
|
||||
}
|
||||
|
||||
if (sbuts->pathflag & (1 << BCONTEXT_PHYSICS)) {
|
||||
RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_PHYSICS);
|
||||
}
|
||||
|
@ -1135,10 +1129,6 @@ static EnumPropertyItem *rna_SpaceProperties_texture_context_itemf(bContext *C,
|
|||
RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_MATERIAL);
|
||||
}
|
||||
|
||||
if (ED_texture_context_check_particles(C)) {
|
||||
RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_PARTICLES);
|
||||
}
|
||||
|
||||
if (ED_texture_context_check_linestyle(C)) {
|
||||
RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_LINESTYLE);
|
||||
}
|
||||
|
@ -3655,11 +3645,6 @@ static void rna_def_space_time(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Softbody", "Show the active object's softbody point cache");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "cache_particles", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_PARTICLES);
|
||||
RNA_def_property_ui_text(prop, "Particles", "Show the active object's particle point cache");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "cache_cloth", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_CLOTH);
|
||||
RNA_def_property_ui_text(prop, "Cloth", "Show the active object's cloth point cache");
|
||||
|
@ -3797,8 +3782,6 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
|
|||
{FILTER_ID_MSK, "MASK", ICON_MOD_MASK, "Masks", "Show/hide Mask data-blocks"},
|
||||
{FILTER_ID_NT, "NODE_TREE", ICON_NODETREE, "Node Trees", "Show/hide Node Tree data-blocks"},
|
||||
{FILTER_ID_OB, "OBJECT", ICON_OBJECT_DATA, "Objects", "Show/hide Object data-blocks"},
|
||||
{FILTER_ID_PA, "PARTICLE_SETTINGS", ICON_PARTICLE_DATA,
|
||||
"Particles Settings", "Show/hide Particle Settings data-blocks"},
|
||||
{FILTER_ID_PAL, "PALETTE", ICON_COLOR, "Palettes", "Show/hide Palette data-blocks"},
|
||||
{FILTER_ID_PC, "PAINT_CURVE", ICON_CURVE_BEZCURVE, "Paint Curves", "Show/hide Paint Curve data-blocks"},
|
||||
{FILTER_ID_SCE, "SCENE", ICON_SCENE_DATA, "Scenes", "Show/hide Scene data-blocks"},
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include "DNA_texture_types.h"
|
||||
#include "DNA_world_types.h"
|
||||
#include "DNA_node_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_scene_types.h" /* MAXFRAME only */
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
@ -249,20 +248,6 @@ void rna_TextureSlot_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRN
|
|||
case ID_LS:
|
||||
WM_main_add_notifier(NC_LINESTYLE, id);
|
||||
break;
|
||||
case ID_PA:
|
||||
{
|
||||
MTex *mtex = ptr->data;
|
||||
int recalc = OB_RECALC_DATA;
|
||||
|
||||
if (mtex->mapto & PAMAP_INIT)
|
||||
recalc |= PSYS_RECALC_RESET;
|
||||
if (mtex->mapto & PAMAP_CHILD)
|
||||
recalc |= PSYS_RECALC_CHILD;
|
||||
|
||||
DAG_id_tag_update(id, recalc);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -450,29 +435,6 @@ static void rna_Envmap_update_generic(Main *bmain, Scene *scene, PointerRNA *ptr
|
|||
rna_Texture_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static PointerRNA rna_PointDensity_psys_get(PointerRNA *ptr)
|
||||
{
|
||||
PointDensity *pd = ptr->data;
|
||||
Object *ob = pd->object;
|
||||
ParticleSystem *psys = NULL;
|
||||
PointerRNA value;
|
||||
|
||||
if (ob && pd->psys)
|
||||
psys = BLI_findlink(&ob->particlesystem, pd->psys - 1);
|
||||
|
||||
RNA_pointer_create(&ob->id, &RNA_ParticleSystem, psys, &value);
|
||||
return value;
|
||||
}
|
||||
|
||||
static void rna_PointDensity_psys_set(PointerRNA *ptr, PointerRNA value)
|
||||
{
|
||||
PointDensity *pd = ptr->data;
|
||||
Object *ob = pd->object;
|
||||
|
||||
if (ob && value.id.data == ob)
|
||||
pd->psys = BLI_findindex(&ob->particlesystem, value.data) + 1;
|
||||
}
|
||||
|
||||
static char *rna_PointDensity_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_sprintfN("point_density");
|
||||
|
@ -1713,13 +1675,6 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
|
|||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Particle System", "Particle System to render as points");
|
||||
RNA_def_property_struct_type(prop, "ParticleSystem");
|
||||
RNA_def_property_pointer_funcs(prop, "rna_PointDensity_psys_get", "rna_PointDensity_psys_set", NULL, NULL);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
||||
|
||||
prop = RNA_def_property(srna, "particle_cache_space", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "psys_cache_space");
|
||||
RNA_def_property_enum_items(prop, particle_cache_items);
|
||||
|
|
|
@ -3857,10 +3857,6 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
|
|||
prop = RNA_def_property(srna, "use_duplicate_action", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_ACT);
|
||||
RNA_def_property_ui_text(prop, "Duplicate Action", "Causes actions to be duplicated with the object");
|
||||
|
||||
prop = RNA_def_property(srna, "use_duplicate_particle", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_PSYS);
|
||||
RNA_def_property_ui_text(prop, "Duplicate Particle", "Causes particle systems to be duplicated with the object");
|
||||
|
||||
/* currently only used for insert offset (aka auto-offset), maybe also be useful for later stuff though */
|
||||
prop = RNA_def_property(srna, "node_margin", PROP_INT, PROP_NONE);
|
||||
|
|
Loading…
Reference in New Issue