Initial code for boids v2
Too many new features to list! But here are the biggies: - Boids can move on air and/or land, or climb a goal object. - Proper interaction with collision objects. * Closest collision object in negative z direction is considered as ground. * Other collision objects are obstacles and boids collide with them. - Boid behavior rules are now added to a dynamic list. * Many new rules and many still not implemented. * Different rule evaluation modes (fuzzy, random, average). - Only particle systems defined by per system "boid relations" are considered for simulation of that system. * This is in addition to the boids own system of course. * Relations define other systems as "neutral", "friend" or "enemy". - All effectors now effect boid physics, not boid brains. * This allows forcing boids somewhere. * Exception to this is new "boid" effector, which defines boid predators (positive strength) and goals (negative strength). Known issue: - Boid health isn't yet stored in pointcache so simulations with "fight" rule are not be read from cache properly. - Object/Group visualization object's animation is not played in "particle time". This is definately the wanted behavior, but isn't possible with the current state of dupliobject code. Other new features: - Particle systems can now be named separately from particle settings. * Default name for particle settings is now "ParticleSettings" instead of "PSys" - Per particle system list of particle effector weights. * Enables different effection strengths for particles from different particle systems with without messing around with effector group setting. Other code changes: - KDTree now supports range search as it's needed for new boids. - "Keyed particle targets" renamed as general "particle targets", as they're needed for boids too. (this might break some files saved with new keyed particles) Bug fixes: - Object & group visualizations didn't work. - Interpolating pointcache didn't do rotation.
This commit is contained in:
@@ -53,6 +53,11 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
|
||||
sub.itemR(field, "planar")
|
||||
sub.itemR(field, "surface")
|
||||
|
||||
if field.type == "BOID":
|
||||
sub.itemR(field, "strength")
|
||||
sub = split.column()
|
||||
sub.itemR(field, "surface")
|
||||
|
||||
if field.type == "MAGNET":
|
||||
sub.itemR(field, "strength")
|
||||
sub = split.column()
|
||||
@@ -75,7 +80,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
|
||||
sub.itemR(field, "root_coordinates")
|
||||
sub.itemR(field, "force_2d")
|
||||
|
||||
if field.type in ("HARMONIC", "SPHERICAL", "CHARGE", "WIND", "VORTEX", "TEXTURE", "MAGNET"):
|
||||
if field.type in ("HARMONIC", "SPHERICAL", "CHARGE", "WIND", "VORTEX", "TEXTURE", "MAGNET", "BOID"):
|
||||
|
||||
|
||||
layout.itemS()
|
||||
|
||||
Reference in New Issue
Block a user