public void Translate(Vector3D vector) { Matrix3D matrix = Matrix3D.Identity; matrix.Translate(vector); //TODO: maybe create a modifier collision if one doesn't exist. foreach (ConvexCollisionMask collision in this.Collisions) { ConvextCollisionModifier modifier = (collision as ConvextCollisionModifier); if (modifier != null) { modifier.ModifierMatrix = modifier.ModifierMatrix * matrix; } } }
private static void AddPoints(ConvexCollisionMask collision, List <Point3D> points) { if (collision is IMesh) { IList <Point3D> newPoints = ((IMesh)collision).GetPoints(); if (newPoints != null) { points.AddRange(newPoints); } } else { ConvextCollisionModifier modifier = (collision as ConvextCollisionModifier); if (modifier != null) { int i = points.Count; // starting index of new points AddPoints(modifier.CollisionMask, points); for (int count = points.Count; i < count; i++) { points[i] = modifier.ModifierMatrix.Transform(points[i]); } } } }