public void ApplyRandomAtlasFrame(BillboardInstance[] sel) { string name = string.Format("Apply random atlas frame"); ModifyBillboardsAction action = new ModifyBillboardsAction(this, sel, name); BillboardInstance[] inst = action.NewInstances; foreach (BillboardInstance b in inst) b._fAtlasValue = (float)Rnd.NextDouble(); EditorManager.Actions.Add(action); }
public void ApplyRandomScale(BillboardInstance[] sel, float fPercentage) { string name = string.Format("Apply billboard scaling +/-{0}%", fPercentage); ModifyBillboardsAction action = new ModifyBillboardsAction(this, sel, name); BillboardInstance[] scaled = action.NewInstances; foreach (BillboardInstance b in scaled) { float f = 1.0f + (float)(Rnd.NextDouble()-0.5) * 0.02f * fPercentage; b.ScaleX *= f; b.ScaleY *= f; } EditorManager.Actions.Add(action); }
public void RelaxPositions(BillboardInstance[] sel) { ModifyBillboardsAction action = new ModifyBillboardsAction(this,sel,"Relax billboard positions"); float m = Math.Max(this.PivotCenterX, 1.0f - PivotCenterX); m *= 2.0f; // wanted distance EngineMesh.RelaxPositions(action.NewInstances, m, 20); EditorManager.Actions.Add(action); }