public IApplicationInstance Run(string path, string verb, string[] args) { ApplicationDesc app = null; try { app = databaseManager.Find <ApplicationDesc>(path).Object; } catch (Exception) { } if (app == null) { throw new Exception( String.Format( "There is no application present at: '{0}'", path)); } LocalApplication application = new LocalApplication( this.componentDirectory, app, Guid.NewGuid(), NewInstanceNumber(app)); application.Callback = this; applicationInstances.Add(application); application.Start(verb, args); return(application); }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { CubeApp cApp = (CubeApp)app; CubeAction action = new CubeAction(); if (p.depth >= app.tree.maximumDetail) voxelSize *= 0.5f; action.percentInside = 1; bool outside = false; bool inside = true; action.percentInside *= 1 - (2 - percentOverlapping(diff.x, cApp.halfDimension.x, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.x, cApp.halfDimension.x, voxelSize, ref outside, ref inside)); if (outside) return action; action.percentInside *= 1 - (2 - percentOverlapping(diff.y, cApp.halfDimension.y, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.y, cApp.halfDimension.y, voxelSize, ref outside, ref inside)); if (outside) return action; action.percentInside *= 1 - (2 - percentOverlapping(diff.z, cApp.halfDimension.z, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.z, cApp.halfDimension.z, voxelSize, ref outside, ref inside)); if (outside) return action; action.modify = true; if (!overwriteShape || !inside) action.doTraverse = true; return action; }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { LineApplication lApp = (LineApplication) app; Vector3 cp = closestPointToPath(lApp.points, diff); Vector3 virtualDiff = diff - cp; LocalAction action = child.checkMutation(((LineApplication)app).childApp, p, virtualDiff, voxelSize); action.diff = virtualDiff; return action; }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { LineApplication lApp = (LineApplication)app; Vector3 cp = closestPointToPath(lApp.points, diff); Vector3 virtualDiff = diff - cp; LocalAction action = child.checkMutation(((LineApplication)app).childApp, p, virtualDiff, voxelSize); action.diff = virtualDiff; return(action); }
protected override Action checkMutation(Application app, Index p) { LocalApplication lApp = (LocalApplication)app; float voxelSize = calculateVoxelSize(app, p); Vector3 diff = calculateDiff(lApp.position, p, voxelSize); LocalAction action = checkMutation(lApp, p, diff, voxelSize); action.voxelSize = voxelSize; return(action); }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { CubeAction cAction = (CubeAction)action; byte newOpacity = (byte)((original.averageOpacity() * (1 - cAction.percentInside) + value.averageOpacity() * (cAction.percentInside))); byte newSubstance = original.averageMaterialType(); if (overwriteSubstance && cAction.percentInside > 0.5) newSubstance = value.averageMaterialType(); if (!overwriteShape) newOpacity = original.averageOpacity(); return new Voxel(newSubstance, newOpacity); }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { SphereApp sApp = (SphereApp)app; SphereAction sAction = (SphereAction)action; float dis = Mathf.Sqrt(sAction.disSqr); float percentInside = Mathf.Min((sAction.maxRadius -dis) /(sAction.maxRadius -sAction.minRadius), 1); byte newOpacity = (byte)(original.averageOpacity() * (1 -percentInside) + value.averageOpacity() * percentInside); byte newSubstance = original.averageMaterialType(); if (overwriteSubstance && (dis < sApp.radius || percentInside > 0.5f)) newSubstance = value.averageMaterialType(); if (!overwriteShape) newOpacity = original.averageOpacity(); return new Voxel(newSubstance, newOpacity); }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { SphereApp sApp = (SphereApp)app; SphereAction action = new SphereAction(); action.disSqr = diff.sqrMagnitude; action.maxRadius = sApp.radius + voxelSize; float maxRadSqr = action.maxRadius * action.maxRadius; if (action.disSqr > maxRadSqr) return action; action.modify = true; action.minRadius = Mathf.Max(0, sApp.radius - voxelSize); float minRadSqr = action.minRadius * action.minRadius; if (!overwriteShape || action.disSqr >= minRadSqr) action.doTraverse = true; return action; }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { CubeAction cAction = (CubeAction)action; byte newOpacity = (byte)((original.averageOpacity() * (1 - cAction.percentInside) + value.averageOpacity() * (cAction.percentInside))); byte newSubstance = original.averageMaterialType(); if (newOpacity >= 2 * original.averageOpacity() || (overwriteSubstance && cAction.percentInside > 0.5)) { newSubstance = value.averageMaterialType(); } if (!overwriteShape) { newOpacity = original.averageOpacity(); } return(new Voxel(newSubstance, newOpacity)); }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { SphereApp sApp = (SphereApp)app; SphereAction sAction = (SphereAction)action; float dis = Mathf.Sqrt(sAction.disSqr); byte newOpacity = (dis <= sAction.minRadius) ? value.averageOpacity() : (byte)((original.averageOpacity() * (dis - sAction.minRadius) + value.averageOpacity() * (sAction.maxRadius - dis)) / 2); byte newSubstance = original.averageMaterialType(); if (newOpacity >= 2 * original.averageOpacity() || (overwriteSubstance && dis < sApp.radius)) newSubstance = value.averageMaterialType(); if (!overwriteShape) newOpacity = original.averageOpacity(); return new Voxel(newSubstance, newOpacity); }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { CubeApp cApp = (CubeApp)app; CubeAction action = new CubeAction(); if (p.depth >= app.tree.maxDetail) { voxelSize *= 0.5f; } action.percentInside = 1; bool outside = false; bool inside = true; action.percentInside *= 1 - (2 - percentOverlapping(diff.x, cApp.halfDimension.x, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.x, cApp.halfDimension.x, voxelSize, ref outside, ref inside)); if (outside) { return(action); } action.percentInside *= 1 - (2 - percentOverlapping(diff.y, cApp.halfDimension.y, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.y, cApp.halfDimension.y, voxelSize, ref outside, ref inside)); if (outside) { return(action); } action.percentInside *= 1 - (2 - percentOverlapping(diff.z, cApp.halfDimension.z, voxelSize, ref outside, ref inside) - percentOverlapping(-diff.z, cApp.halfDimension.z, voxelSize, ref outside, ref inside)); if (outside) { return(action); } action.modify = true; if (!inside) { action.doTraverse = true; } return(action); }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { SphereApp sApp = (SphereApp)app; SphereAction sAction = (SphereAction)action; float dis = Mathf.Sqrt(sAction.disSqr); byte newOpacity = (dis <= sAction.minRadius) ? value.averageOpacity() : (byte)((original.averageOpacity() * (dis - sAction.minRadius) + value.averageOpacity() * (sAction.maxRadius - dis)) / 2); byte newSubstance = original.averageMaterialType(); if (newOpacity >= 2 * original.averageOpacity() || (overwriteSubstance && dis < sApp.radius)) { newSubstance = value.averageMaterialType(); } if (!overwriteShape) { newOpacity = original.averageOpacity(); } return(new Voxel(newSubstance, newOpacity)); }
public override LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize) { SphereApp sApp = (SphereApp)app; SphereAction action = new SphereAction(); action.disSqr = diff.sqrMagnitude; action.maxRadius = sApp.radius + voxelSize; float maxRadSqr = action.maxRadius * action.maxRadius; if (action.disSqr > maxRadSqr) { return(action); } action.modify = true; action.minRadius = Mathf.Max(0, sApp.radius - voxelSize); float minRadSqr = action.minRadius * action.minRadius; if (action.disSqr >= minRadSqr) { action.doTraverse = true; } return(action); }
public IApplicationInstance Run(string path, string verb, string[] args, IComponentDirectory environ) { ApplicationDesc app = null; try { app = databaseManager.Find <ApplicationDesc>(path).Object; } catch (Exception) { } if (app == null) { throw new Exception( String.Format( "There is no application present at: '{0}'", path)); } ComponentDirectory localEnvironment = new ComponentDirectory(this.componentDirectory, path); foreach (IComponentProvider component in environ.RegisteredProviders) { localEnvironment.Register(component); } LocalApplication application = new LocalApplication( localEnvironment, app, Guid.NewGuid(), NewInstanceNumber(app)); application.Callback = this; applicationInstances.Add(application); application.Start(verb, args); return(application); }
public abstract Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original);
public abstract LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize);
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { return child.mutate(((LineApplication)app).childApp, p, action, original); }
public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original) { return(child.mutate(((LineApplication)app).childApp, p, action, original)); }