Exemplo n.º 1
0
 public void LookUpForDepends(
     IsoScreenSolver screen_solver, IsoObject iso_object)
 {
     _isoObject = iso_object;
     if (iso_object.Internal.QTItem != null)
     {
         screen_solver._quadTree.VisitItemsByItem(
             iso_object.Internal.QTItem, this);
     }
     _isoObject = null;
 }
Exemplo n.º 2
0
        // ---------------------------------------------------------------------
        //
        // PlaceVisibles
        //
        // ---------------------------------------------------------------------

        void PlaceVisibles(IsoWorld iso_world, IsoScreenSolver screen_solver)
        {
            var step_depth   = iso_world.stepDepth;
            var start_depth  = iso_world.startDepth;
            var cur_visibles = screen_solver.curVisibles;

            for (int i = 0, e = cur_visibles.Count; i < e; ++i)
            {
                start_depth = RecursivePlaceIsoObject(
                    cur_visibles[i], step_depth, start_depth);
            }
        }
Exemplo n.º 3
0
        // ---------------------------------------------------------------------
        //
        // Functions
        //
        // ---------------------------------------------------------------------

        public bool StepSortingAction(IsoWorld iso_world, IsoScreenSolver screen_solver)
        {
            Profiler.BeginSample("IsoSortingSolver.ResolveVisibles");
            var dirty = ResolveVisibles(screen_solver);

            Profiler.EndSample();
            if (dirty)
            {
                Profiler.BeginSample("IsoSortingSolver.PlaceVisibles");
                PlaceVisibles(iso_world, screen_solver);
                Profiler.EndSample();
            }
            return(dirty);
        }
Exemplo n.º 4
0
            public void LookUpForVisibility(IsoScreenSolver screen_solver, bool include_scene_view)
            {
                _screenSolver = screen_solver;
                _screenSolver._oldVisibles.Clear();
                var cam_count = FillLookUpCameras(include_scene_view);

                for (var i = 0; i < cam_count; ++i)
                {
                    var tmp_cam = _tmpCameras[i];
                    var vp_rect = tmp_cam.rect;
                    var wrl_min = tmp_cam.ViewportToWorldPoint(new Vector3(vp_rect.xMin, vp_rect.yMin));
                    var wrl_max = tmp_cam.ViewportToWorldPoint(new Vector3(vp_rect.xMax, vp_rect.yMax));
                    _screenSolver._quadTree.VisitItemsByBounds(new IsoRect(wrl_min, wrl_max), this);
                }
                ResetLookUpCameras();
                _screenSolver = null;
            }
Exemplo n.º 5
0
        // ---------------------------------------------------------------------
        //
        // ResolveVisibles
        //
        // ---------------------------------------------------------------------

        bool ResolveVisibles(IsoScreenSolver screen_solver)
        {
            var mark_dirty   = false;
            var old_visibles = screen_solver.oldVisibles;
            var cur_visibles = screen_solver.curVisibles;

            for (int i = 0, e = cur_visibles.Count; i < e; ++i)
            {
                var iso_object = cur_visibles[i];
                if (iso_object.Internal.Dirty)
                {
                    screen_solver.SetupIsoObjectDepends(iso_object);
                    iso_object.Internal.Dirty = false;
                    mark_dirty = true;
                }
                if (iso_object.renderersMode == IsoObject.RenderersMode.Mode3d)
                {
                    if (UpdateIsoObjectBounds3d(iso_object))
                    {
                        mark_dirty = true;
                    }
                }
            }

            for (int i = 0, e = old_visibles.Count; i < e; ++i)
            {
                var iso_object = old_visibles[i];
                if (!cur_visibles.Contains(iso_object))
                {
                    screen_solver.ClearIsoObjectDepends(iso_object);
                    iso_object.Internal.Dirty = true;
                    mark_dirty = true;
                }
            }

            _tmpRenderers.Clear();
            return(mark_dirty);
        }