/// <summary>
/// Apply properties in text box to currently selected object.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void b_ApplyProperties_Click(object sender, EventArgs e)
{
// apply these new settings
if (currentlySelectedObject != null && AreObjPropertiesValid())
{
float newScale = float.Parse(tb_Scale.Text);
currentlySelectedObject.Width = (currentlySelectedObject.Width / currentlySelectedObject.scale) * newScale;
if ((currentlySelectedObject is InstasteelCircleObject || (currentlySelectedObject is CircleObject && !(currentlySelectedObject is PaintedObject))))
{
currentlySelectedObject.Height = currentlySelectedObject.Width;
float radius = (float)currentlySelectedObject.Width / (2 * CASSWorld.SCALE);
// circle objects only
currentlySelectedObject.RemoveFromWorld();
CircleDef shape = new CircleDef();
shape.Radius = radius;
// HACK HACK HACK - this won't work for objects that have more than one shape!
shape.Density = currentlySelectedObject.shapes[0].Density;
shape.Friction = currentlySelectedObject.shapes[0].Friction;
shape.Restitution = currentlySelectedObject.shapes[0].Restitution;
currentlySelectedObject.shapes.Clear(); // get rid of the old, unscaled shape
currentlySelectedObject.shapes.Add(shape); // add the new one
currentlySelectedObject.AddToWorld();
}
else if (currentlySelectedObject.TextureFilename == "Art\\Objects\\BoxObjects\\bottomTexture2273")
{
float halfWidth = (float)currentlySelectedObject.Width / (2 * CASSWorld.SCALE);
float halfHeight = (float)currentlySelectedObject.Height / (2 * CASSWorld.SCALE);
// box object only...
currentlySelectedObject.RemoveFromWorld();
// Create the collision shape
PolygonDef shape = new PolygonDef();
shape.SetAsBox(halfWidth, halfHeight);
// HACK HACK HACK - this won't work for objects that have more than one shape!
shape.Density = currentlySelectedObject.shapes[0].Density;
shape.Friction = currentlySelectedObject.shapes[0].Friction;
shape.Restitution = currentlySelectedObject.shapes[0].Restitution;
currentlySelectedObject.shapes.Clear(); // get rid of the old, unscaled shape
currentlySelectedObject.shapes.Add(shape); // add the new one
currentlySelectedObject.AddToWorld();
}
else if (currentlySelectedObject is InstasteelObject || !(currentlySelectedObject is PaintedObject))
{
currentlySelectedObject.Height = (currentlySelectedObject.Height / currentlySelectedObject.scale) * newScale;
// Determine dimensions
float halfWidth = (float)currentlySelectedObject.Width / (2 * CASSWorld.SCALE);
float halfHeight = (float)currentlySelectedObject.Height / (2 * CASSWorld.SCALE);
// box object only...
currentlySelectedObject.RemoveFromWorld();
// Create the collision shape
PolygonDef shape = new PolygonDef();
shape.SetAsBox(halfWidth, halfHeight);
// HACK HACK HACK - this won't work for objects that have more than one shape!
shape.Density = currentlySelectedObject.shapes[0].Density;
shape.Friction = currentlySelectedObject.shapes[0].Friction;
shape.Restitution = currentlySelectedObject.shapes[0].Restitution;
currentlySelectedObject.shapes.Clear(); // get rid of the old, unscaled shape
currentlySelectedObject.shapes.Add(shape); // add the new one
currentlySelectedObject.AddToWorld();
}
if ((bool)cBox_StaticObject.Checked)
{
MassData mass = new MassData();
mass.Mass = 0f;
currentlySelectedObject.Body.SetMass(mass);
}
else if (currentlySelectedObject.Body.GetMass()==0)
{
MassData mass = new MassData();
mass.Mass = 1f;
currentlySelectedObject.Body.SetMass(mass);
currentlySelectedObject.Body.GetShapeList().Density = 1f;
currentlySelectedObject.Body.SetMassFromShapes();
}
float newRotation = float.Parse(tb_Rotation.Text);
currentlySelectedObject.Angle = MathHelper.ToRadians(newRotation);
currentlySelectedObject.scale = newScale;
float newbound1 = float.Parse(tb_bound1.Text);
float newbound2 = float.Parse(tb_bound2.Text);
if (currentlySelectedObject is MovingObject)
{
MovingObject temp = (MovingObject)currentlySelectedObject;
temp.bound1 = temp.Position.Y - newbound1;
temp.bound2 = temp.Position.Y + newbound2;
Console.WriteLine(temp.bound1 + " " + temp.bound2);
currentlySelectedObject = temp;
}
else if (currentlySelectedObject is HorizontalMovingObject)
{
HorizontalMovingObject temp = (HorizontalMovingObject)currentlySelectedObject;
temp.bound1 = temp.Position.X - newbound1;
temp.bound2 = temp.Position.X + newbound2;
currentlySelectedObject = temp;
}
}
pb_Level.Refresh();
}