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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
		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;
		}
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
		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);
		}
Ejemplo n.º 7
0
		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);
		}
Ejemplo n.º 8
0
		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;
		}
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 15
0
		public abstract Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original);
Ejemplo n.º 16
0
		public abstract LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize);
Ejemplo n.º 17
0
 public abstract LocalAction checkMutation(LocalApplication app, Index p, Vector3 diff, float voxelSize);
Ejemplo n.º 18
0
 public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original)
 {
     return child.mutate(((LineApplication)app).childApp, p, action, original);
 }
Ejemplo n.º 19
0
 public abstract Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original);
Ejemplo n.º 20
0
 public override Voxel mutate(LocalApplication app, Index p, LocalAction action, Voxel original)
 {
     return(child.mutate(((LineApplication)app).childApp, p, action, original));
 }