public Renderer(IntPtr mapHwnd, Rectangle initialViewport) { layerStates = new Dictionary <Layers, bool> { { Layers.Floor, true }, { Layers.Guide, false }, { Layers.Object, true }, { Layers.Physics, true }, { Layers.Vision, true }, { Layers.Selection, true }, }; var presentParams = new PresentParameters { BackBufferWidth = initialViewport.Width, BackBufferHeight = initialViewport.Height, Windowed = true, SwapEffect = SwapEffect.Flip, }; direct3D = new Direct3D(); device = new Device(direct3D, 0, DeviceType.Hardware, mapHwnd, CreateFlags.HardwareVertexProcessing, presentParams); viewport = initialViewport; floors = new FloorRenderer(device, new Size(initialViewport.Width, initialViewport.Height)); guides = new GuideRenderer(device, initialViewport, DefaultGuideColor, DefaultGuideColumnInterval, DefaultGuideRowInterval, DefaultGuideTransparency); selection = new SelectionRenderer(device); grid = new Grid(2048, 2048); }
void CheckIfNeedsRefresh() { if (needsRefresh) { if (InstanceManager.instances.Count > 0) { FloorRenderer.SetVisibleFloors(refreshHeight, true); needsRefresh = false; } } }
static void load(string path) { Map map; XmlSerializer serializer = new XmlSerializer(typeof(Map)); using (FileStream stream = new FileStream(path, FileMode.Open)) map = serializer.Deserialize(stream) as Map; foreach (var mapObject in map.data) { Prefab prefab = PrefabManager.prefabCollection.GetPrefab(mapObject.id); InstanceManager.Instantiate(prefab, new Vector3(mapObject.x, mapObject.y, mapObject.z)); } FloorRenderer.SetVisibleFloors(floorHeight, fullFloors); }
void CheckIfUnderSomething() { if (playerCamera != null) { var currentPos = this.transform.position; var checkPos = currentPos.South(); Rect r = new Rect(checkPos.x, checkPos.y, 1f, 1f); DebugExtensions.DrawRect(r, -8f); var result = InstanceManager.instances.Within(r).Where(p => p.Value.transform.position.z < currentPos.z); if (result.Count() > 0) { bool isCovered = false; float coverHeight = -100f; foreach (var res in result) { Vector3 compare = new Vector3(currentPos.x, currentPos.y, res.Value.transform.position.z); if (res.Value.spriteRenderer.bounds.Contains(compare)) { isCovered = true; if (compare.z > coverHeight) { coverHeight = compare.z; } } } if (isCovered) { isCovered = false; FloorRenderer.SetVisibleFloors(coverHeight + 1, true); coverHeight = -100f; } } else { FloorRenderer.SetVisibleFloors(refreshHeight, true); } } }