/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Surface s = null; int n = 10; int v = 10; double d = 10.0; double l = 0.00; DA.GetData(0, ref s); DA.GetData(1, ref n); DA.GetData(2, ref v); DA.GetData(3, ref d); DA.GetData(4, ref l); List <Polyline> polylines0 = new List <Polyline>(); List <Polyline> polylines1 = new List <Polyline>(); Mesh mesh = SurfaceUtil.SubdivideSurfaceEqualDist(s, n, v, d, l, ref polylines0, ref polylines1); polylines0.AddRange(polylines1); this.PreparePreview(mesh, DA.Iteration); DA.SetData(0, mesh); DA.SetDataList(1, polylines1); }
protected override List <Item> BuildItems(ref Item defaultItem) { if (!SurfaceUtil.SupportsSurfaces(Prefab)) { return(new List <Item>()); } var items = new List <Item> { new SimpleItem(Surface.Pavement.ToString("G"), Surface.Pavement), new SimpleItem(Surface.Gravel.ToString("G"), Surface.Gravel), new SimpleItem(Surface.Ruined.ToString("G"), Surface.Ruined), }; if (SurfaceUtil.SupportsNoneSurface(Prefab)) { items.Add(new SimpleItem(Surface.None.ToString("G"), Surface.None)); } var defaultSurface = SurfaceUtil.GetDefaultSurface(Prefab); defaultItem = items.FirstOrDefault(item => ((SimpleItem)item).Value == defaultSurface); return(items); }
public override bool Run() { Counter parent = base.Target.Parent as Counter; if (parent == null) { return(false); } if (!SurfaceUtil.RouteToObjectOnSurface(parent, base.Actor, base.Target)) { return(false); } base.StandardEntry(); HotBeverageMachine.Cup actor = GlobalFunctions.CreateObject("CoffeeCup", base.Target.Parent.Position, base.Target.Level, Vector3.UnitZ) as HotBeverageMachine.Cup; try { actor.AddToUseList(base.Actor); actor.Contents = (base.InteractionDefinition as Definition).Drink; actor.SetHiddenFlags(HiddenFlags.Model); HotBeverageMachine.EnterStateMachine(this); base.SetActor("coffeeCup", actor); base.BeginCommodityUpdates(); base.AnimateSim("Make One Drink"); base.EndCommodityUpdates(true); CarrySystem.VerifyAnimationParent(actor, base.Actor); } finally { actor.RemoveFromUseList(base.Actor); } //pay for drink CommonMethods.PayForCoffee(base.Actor, base.Target.LotCurrent); CarrySystem.EnterWhileHolding(base.Actor, actor); actor.PushDrinkAsContinuation(base.Actor); if (parent.IsCleanable) { parent.Cleanable.DirtyInc(base.Actor); } base.mCurrentStateMachine.Dispose(); actor.StartEffects(); base.StandardExit(); return(true); }
public override bool Run() { Counter parent = base.Target.Parent as Counter; if (parent == null) { return(false); } if (!SurfaceUtil.RouteToObjectOnSurface(parent, base.Actor, base.Target)) { return(false); } base.StandardEntry(); this.Cup = this.MakeCup() as HotBeverageMachine.Cup; this.Cup.SetHiddenFlags(HiddenFlags.Model); this.BarTray = GlobalFunctions.CreateObject("barTray", (base.Target.Parent ?? base.Target).Position, base.Target.Level, Vector3.UnitZ) as BarTray; this.BarTray.SetHiddenFlags(HiddenFlags.Model); this.BarTray.AddInteraction(CallForCoffee.Singleton); base.Target.mLastCreatedTrayOfDrinksId = this.BarTray.ObjectId; HotBeverageMachine.EnterStateMachine(this); base.AddOneShotScriptEventHandler(100, new SacsEventHandler(this.FillTray)); base.SetActor("coffeeCup", this.Cup); base.SetActor("barTray", this.BarTray); base.BeginCommodityUpdates(); base.AnimateSim("Make Many Drinks"); base.EndCommodityUpdates(true); base.StandardExit(); CarrySystem.VerifyAnimationParent(this.BarTray, base.Actor); CarrySystem.EnterWhileHolding(base.Actor, this.BarTray); CarrySystem.PutDown(base.Actor, SurfaceType.Normal, true); //if ((!base.Autonomous || !base.Actor.HasBuffsToPreventSleepiness()) && CarrySystem.PickUp(base.Actor, this.Cup)) //{ // this.Cup.PushDrinkAsContinuation(base.Actor); //} base.mCurrentStateMachine.Dispose(); this.Cup.StartEffects(); if (parent.IsCleanable) { parent.Cleanable.DirtyInc(base.Actor); } return(true); }