private IE OnStart() { //初始化 viewHistory = new LinkedList <MapViewData>(); //开始加载地图 yield return(new WaitTaskCompletedCoroutine(LoadMap())); //添加视图状态 this.viewData = new MapViewData() { MapID = mapData?.ID ?? -1, Portal = "sp" }; if (this.mapData != null) { yield return(cm.Yield(OnSceneEnter())); } else { //添加提示语 this.ui.ChatBox.AppendTextSystem("MapRender加载失败,没有地图数据。"); this.opacity = 1; yield return(cm.Yield(OnSceneRunning())); } }
private IE OnSwitchMap() { //记录历史 if (this.viewData.MapID != this.viewData.ToMapID && this.viewData.ToMapID != null) { viewHistory.AddLast(this.viewData); var toViewData = new MapViewData() { MapID = this.viewData.ToMapID.Value, Portal = this.viewData.ToPortal ?? "sp" }; this.viewData = toViewData; } else { this.viewData.ToMapID = null; this.viewData.Portal = this.viewData.ToPortal; this.viewData.ToPortal = null; } yield return(new WaitTaskCompletedCoroutine(LoadMap())); if (this.mapData != null) { yield return(cm.Yield(OnSceneEnter())); } }
public void SetupVisuals(MapViewData mapViewData, MapCreator mapCreator) { for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { mapCreator.CreateCombatMapSprite(transform, x, y); } } visualsParent.transform.position += new Vector3(0, 0, -200); }
protected override void InitializeInner() { _effect = DeviceContextHolder.GetEffect <EffectSpecialTrackOutline>(); _maps = _mapFilenames.Select((x, i) => { var data = new MapViewData(DeviceContextHolder, x, UseAiLanes); if (i == 0) { Scale *= (data.MapSize.X / data.MapSize.Y).Clamp(1f, 2f); } return(data); }).ToArray(); if (LoadPreview) { if (File.Exists(_previewFilename)) { using (var preview = Texture2D.FromFile(Device, _previewFilename)) { _previewSize = new Vector2(preview.Description.Width, preview.Description.Height); _previewView = new ShaderResourceView(Device, preview); } } else { AcToolsLogging.Write("Not found: " + _previewFilename); } } _f0Buffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _f1Buffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _fBlendBuffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _fSummBuffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _a0Buffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _a1Buffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _aSummBuffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm); _combineBlendState = Device.CreateBlendState(new RenderTargetBlendDescription { BlendEnable = true, SourceBlend = BlendOption.SourceAlpha, DestinationBlend = BlendOption.InverseSourceAlpha, BlendOperation = BlendOperation.Add, SourceBlendAlpha = BlendOption.One, DestinationBlendAlpha = BlendOption.One, BlendOperationAlpha = BlendOperation.Maximum, RenderTargetWriteMask = ColorWriteMaskFlags.All }); }
private IE OnStart() { //初始化 viewHistory = new LinkedList <MapViewData>(); //开始加载地图 yield return(new WaitTaskCompletedCoroutine(LoadMap())); if (this.mapData != null) { //添加视图状态 viewData = new MapViewData() { MapID = mapData?.ID ?? -1, Portal = "sp" }; yield return(cm.Yield(OnSceneEnter())); } }
public Task <BotDetailedViewModel> method_3(int int_0, bool bool_0) { MapViewData spacemap = GClass891.smethod_24(this.Context, bool_0 | this.Context.Map.MapId != int_0); BotSummaryViewModel summary = new BotSummaryViewModel(this.Context.Hero, this.Context.Stats, this.Context.Stats.RunTime); BotDetailedViewModel botDetailedViewModel = new BotDetailedViewModel(); botDetailedViewModel.Spacemap = spacemap; GClass890 context = this.Context; string botId; if (context == null) { botId = null; } else { AccountSettings account = context.Account; botId = ((account != null) ? account.BotId : null); } botDetailedViewModel.BotId = botId; botDetailedViewModel.Summary = summary; return(Task.FromResult <BotDetailedViewModel>(botDetailedViewModel)); }
private void DrawMap(MapViewData map, MapViewData max, Matrix global) { // is the main map? var isMain = FileUtils.ArePathsEqual(map.Filename, CurrentMapFilename); // reset states DeviceContext.OutputMerger.BlendState = null; DeviceContext.Rasterizer.SetViewports(Viewport); // clear buffers just in case DeviceContext.ClearRenderTargetView(_f0Buffer.TargetView, new Color4(0f, 0f, 0f, 0f)); DeviceContext.ClearRenderTargetView(_f1Buffer.TargetView, new Color4(0f, 0f, 0f, 0f)); DeviceContext.ClearRenderTargetView(_a0Buffer.TargetView, new Color4(0f, 0f, 0f, 0f)); DeviceContext.ClearRenderTargetView(_a1Buffer.TargetView, new Color4(0f, 0f, 0f, 0f)); // set width to ai lanes if (UseAiLanes) { map.AiLaneWidth = 25f * ((isMain ? ExtraWidth : ExtraWidth * DimmedWidthMultipler) * 0.7f + 0.15f); } // draw map DeviceContext.OutputMerger.SetTargets(_f0Buffer.TargetView); map.Draw(DeviceContextHolder, _effect, global, max); // pp var current = _f0Buffer; // expand its width if needed if (!UseAiLanes) { var extraWidth = isMain ? ExtraWidth : ExtraWidth * DimmedWidthMultipler; for (var i = 0; i < extraWidth; i++) { var next = current == _f0Buffer ? _f1Buffer : _f0Buffer; DeviceContext.OutputMerger.SetTargets(next.TargetView); _effect.FxInputMap.SetResource(current.View); if (i < extraWidth - 1) { _effect.FxExtraWidth.Set(3f); } else { var last = extraWidth % 1f; _effect.FxExtraWidth.Set(last < 0.0001f ? 3f : last * 3f); } _effect.TechExtraWidth.DrawAllPasses(DeviceContext, 6); current = next; } } // fxaa if needed if (UseFxaa) { var next = current == _f0Buffer ? _f1Buffer : _f0Buffer; DeviceContextHolder.GetHelper <FxaaHelper>().Draw(DeviceContextHolder, current.View, next.TargetView); current = next; } // shadow if needed if (ShadowDistance > 0f && ShadowOpacity > 0f) { var next = current == _f0Buffer ? _f1Buffer : _f0Buffer; DeviceContext.OutputMerger.SetTargets(next.TargetView); _effect.FxInputMap.SetResource(current.View); _effect.TechShadow.DrawAllPasses(DeviceContext, 6); CustomBlending(_aSummBuffer, next, _a1Buffer, new Color4((isMain ? 1f : DimmedOpacity) * ShadowOpacity, 0f, 0f, 0f)); } CustomBlending(_aSummBuffer, current, _a1Buffer, new Color4(isMain ? 1f : DimmedOpacity, 1f, 1f, 1f)); }
public void Draw(DeviceContextHolder holder, EffectSpecialTrackOutline effect, Matrix mapMatrix, MapViewData max) { if (_dirty) { Initialize(holder); } if (AiLaneMode) { Kn5MaterialTrackOutline.Matrix = mapMatrix; if (!_materialsSet) { _materialsSet = true; if (holder.TryToGet <IMaterialsFactory>() == null) { holder.Set <IMaterialsFactory>(new TrackOutlineMaterialsFactory()); } } _obj.Draw(holder, max?.GetCamera(holder) ?? GetCamera(holder), SpecialRenderMode.Simple); // revert quad holder.PrepareQuad(effect.LayoutPT); } else { // local transformation matrix: global×local offset (calculated from map.ini)×local scale var localScale = Matrix.Transformation2D(Vector2.Zero, 0f, new Vector2(max.DataSize.X / DataSize.X, max.DataSize.Y / DataSize.Y) / DataScale, Vector2.Zero, 0f, Vector2.Zero); var localOffset = Matrix.AffineTransformation2D(1f, Vector2.Zero, 0f, new Vector2( (DataOffset.X - max.DataOffset.X) / max.DataSize.X, (DataOffset.Y - max.DataOffset.Y) / max.DataSize.Y)); effect.FxMatrix.SetMatrix(mapMatrix * localOffset * localScale); effect.FxInputMap.SetResource(_view); effect.TechFirstStep.DrawAllPasses(holder.DeviceContext, 6); } }
public static MapViewData smethod_24(GClass839 gclass839_0, bool bool_0) { Map map = gclass839_0.Map; MapViewData mapViewData = new MapViewData(); mapViewData.Background = GClass840.smethod_0(Color.Black); mapViewData.MapId = map.MapId; List <EntityDataRoot> entities = mapViewData.Entities; entities.Add(GClass840.smethod_17(map)); if (bool_0) { List <EntityDataRoot> list = mapViewData.CachableEntities = new List <EntityDataRoot>(); mapViewData.IncludesCache = true; foreach (KeyValuePair <string, ICollidable> keyValuePair in map.Collidables) { CollidableRect collidableRect = keyValuePair.Value as CollidableRect; if (collidableRect != null && collidableRect.imethod_0(map) != CollidableType.None) { list.Add(GClass840.smethod_22(map, collidableRect)); } } foreach (KeyValuePair <int, Asset> keyValuePair2 in map.Assets) { list.Add(GClass840.smethod_23(map, keyValuePair2.Value)); } } foreach (KeyValuePair <int, Gate> keyValuePair3 in map.Gates) { entities.Add(GClass840.smethod_14(map, keyValuePair3.Value)); } foreach (KeyValuePair <string, Collectible> keyValuePair4 in map.Collectibles) { entities.Add(GClass840.smethod_13(map, keyValuePair4.Value)); } Ship selectedShip = map.SelectedShip; foreach (KeyValuePair <int, Ship> keyValuePair5 in map.Ships) { if (keyValuePair5.Value != selectedShip) { entities.Add(GClass840.smethod_12(gclass839_0, map, keyValuePair5.Value)); } } if (selectedShip != null) { entities.Add(GClass840.smethod_12(gclass839_0, map, selectedShip)); } entities.Add(GClass840.smethod_21(map)); EntityDataRoot entityDataRoot = GClass840.smethod_18(gclass839_0, map); if (entityDataRoot != null) { entities.Add(entityDataRoot); } entities.Add(GClass840.smethod_20(map, map.Hero)); if (selectedShip != null) { entities.Add(GClass840.smethod_20(map, selectedShip)); } entities.Add(GClass840.smethod_19(gclass839_0)); return(mapViewData); }