public IEnumerator Generate() { m_Empty = true; m_ActiveParticleCount = 0; distanceConstraintsData = null; bendConstraintsData = null; skinConstraintsData = null; tetherConstraintsData = null; bendTwistConstraintsData = null; stretchShearConstraintsData = null; shapeMatchingConstraintsData = null; aerodynamicConstraintsData = null; chainConstraintsData = null; volumeConstraintsData = null; points = null; edges = null; triangles = null; IEnumerator g = Initialize(); while (g.MoveNext()) { yield return(g.Current); } RecalculateBounds(); m_Empty = false; m_InitialActiveParticleCount = m_ActiveParticleCount; foreach (IObiConstraints constraints in GetConstraints()) { for (int i = 0; i < constraints.GetBatchCount(); ++i) { constraints.GetBatch(i).initialActiveConstraintCount = constraints.GetBatch(i).activeConstraintCount; } } #if UNITY_EDITOR EditorUtility.SetDirty(this); #endif if (OnBlueprintGenerate != null) { OnBlueprintGenerate(this); } }
protected IEnumerator CreateSkinConstraints() { skinConstraintsData = new ObiSkinConstraintsData(); ObiSkinConstraintsBatch skinBatch = new ObiSkinConstraintsBatch(); skinConstraintsData.AddBatch(skinBatch); for (int i = 0; i < topology.vertices.Count; ++i) { skinBatch.AddConstraint(i, Vector3.Scale(scale, topology.vertices[i].position), Vector3.up, 0.05f, 0.1f, 0, 0); skinBatch.activeConstraintCount++; if (i % 500 == 0) { yield return(new CoroutineJob.ProgressInfo("ObiCloth: generating skin constraints...", i / (float)topology.vertices.Count)); } } Vector3[] normals = topology.inputMesh.normals; for (int i = 0; i < normals.Length; ++i) { skinBatch.skinNormals[topology.rawToWelded[i]] = normals[i]; } }
public ObiSkinConstraintsBatch(ObiSkinConstraintsData constraints = null) : base() { }
public ObiSkinConstraintsData(ObiActor actor = null, ObiSkinConstraintsData source = null) : base(actor, source) { }
public ObiSkinConstraintsBatch(ObiSkinConstraintsData constraints = null, ObiSkinConstraintsBatch source = null) : base(source) { m_Constraints = constraints; }