Пример #1
0
        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);
        }
Пример #2
0
 void CheckIfNeedsRefresh()
 {
     if (needsRefresh)
     {
         if (InstanceManager.instances.Count > 0)
         {
             FloorRenderer.SetVisibleFloors(refreshHeight, true);
             needsRefresh = false;
         }
     }
 }
Пример #3
0
    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);
    }
Пример #4
0
    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);
            }
        }
    }