Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_cloth.c
| Show First 20 Lines • Show All 117 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| static void updateDepgraph(ModifierData *md, DagForest *forest, | static void updateDepgraph(ModifierData *md, DagForest *forest, | ||||
| struct Main *UNUSED(bmain), | struct Main *UNUSED(bmain), | ||||
| Scene *scene, Object *ob, DagNode *obNode) | Scene *scene, Object *ob, DagNode *obNode) | ||||
| { | { | ||||
| ClothModifierData *clmd = (ClothModifierData *) md; | ClothModifierData *clmd = (ClothModifierData *) md; | ||||
| Base *base; | |||||
| if (clmd) { | if (clmd) { | ||||
| for (base = scene->base.first; base; base = base->next) { | /* Actual code uses get_collisionobjects */ | ||||
| Object *ob1 = base->object; | dag_add_collision_relations(forest, scene, ob, obNode, clmd->coll_parms->group, ob->lay|scene->lay, eModifierType_Collision, NULL, true, "Cloth Collision"); | ||||
| if (ob1 != ob) { | |||||
| CollisionModifierData *coll_clmd = (CollisionModifierData *)modifiers_findByType(ob1, eModifierType_Collision); | dag_add_forcefield_relations(forest, scene, ob, obNode, clmd->sim_parms->effector_weights, true, 0, "Cloth Field"); | ||||
| if (coll_clmd) { | |||||
| DagNode *curNode = dag_get_node(forest, ob1); | |||||
| dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Cloth Collision"); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| static void updateDepsgraph(ModifierData *md, | static void updateDepsgraph(ModifierData *md, | ||||
| struct Main *UNUSED(bmain), | struct Main *UNUSED(bmain), | ||||
| struct Scene *scene, | struct Scene *scene, | ||||
| Object *ob, | Object *ob, | ||||
| struct DepsNodeHandle *node) | struct DepsNodeHandle *node) | ||||
| { | { | ||||
| ClothModifierData *clmd = (ClothModifierData *)md; | ClothModifierData *clmd = (ClothModifierData *)md; | ||||
| if (clmd != NULL) { | if (clmd != NULL) { | ||||
| Base *base; | /* Actual code uses get_collisionobjects */ | ||||
| for (base = scene->base.first; base; base = base->next) { | DEG_add_collision_relations(node, scene, ob, clmd->coll_parms->group, ob->lay|scene->lay, eModifierType_Collision, NULL, true, "Cloth Collision"); | ||||
| Object *ob1 = base->object; | |||||
| if (ob1 != ob) { | DEG_add_forcefield_relations(node, scene, ob, clmd->sim_parms->effector_weights, true, 0, "Cloth Field"); | ||||
| CollisionModifierData *coll_clmd = (CollisionModifierData *)modifiers_findByType(ob1, eModifierType_Collision); | |||||
| if (coll_clmd) { | |||||
| DEG_add_object_relation(node, ob1, DEG_OB_COMP_TRANSFORM, "Cloth Modifier"); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) | static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) | ||||
| { | { | ||||
| CustomDataMask dataMask = 0; | CustomDataMask dataMask = 0; | ||||
| ClothModifierData *clmd = (ClothModifierData *)md; | ClothModifierData *clmd = (ClothModifierData *)md; | ||||
| ▲ Show 20 Lines • Show All 113 Lines • Show Last 20 Lines | |||||