Beispiel #1
0
        private bool CustomProcessClick(ScenePickArgs eventArgs)
        {
            switch (eventArgs.mObjectType)
            {
            case ScenePickObjectType.Terrain:
            case ScenePickObjectType.Floor:
            case ScenePickObjectType.RoadStreet:
            case ScenePickObjectType.RoadSidewalk:
            case ScenePickObjectType.WaterPond:
            case ScenePickObjectType.WaterSea:
            case ScenePickObjectType.WaterPool:
            case ScenePickObjectType.WaterFountain:
                if ((Bin.PlacementHousehold == null) && (Bin.PlacementLot == null))
                {
                    return(GameObjectEx.OnPick(Terrain.Singleton, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                }
                break;

            case ScenePickObjectType.Object:
            case ScenePickObjectType.Sim:
            case ScenePickObjectType.Wall:
                ObjectGuid guid = ObjectGuid.InvalidObjectGuid;
                if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                {
                    guid = new ObjectGuid(eventArgs.mObjectId);
                }
                else if (eventArgs.mObjectType == ScenePickObjectType.Wall)
                {
                    guid = LotManager.GetLotObjectGuid(eventArgs.mObjectId);
                }

                IScriptProxy proxy = Simulator.GetProxy(guid);
                if (proxy != null)
                {
                    IObjectUI target = proxy.Target as IObjectUI;
                    if (target != null)
                    {
                        Lot lot = target as Lot;
                        if (lot != null)
                        {
                            return(OnPickLot(lot, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                        }
                        else
                        {
                            GameObject obj = target as GameObject;
                            if (obj != null)
                            {
                                return(GameObjectEx.OnPick(obj, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                            }
                        }
                    }
                }
                break;
            }

            return(false);
        }
Beispiel #2
0
        public override void ProcessClick(ScenePickArgs eventArgs)
        {
            try
            {
                if (((eventArgs.mObjectType != ScenePickObjectType.None) && !WasMouseDragged(eventArgs)) && ((eventArgs.mMouseEvent.MouseKey != MouseKeys.kMouseRight) || ((eventArgs.mMouseEvent.Modifiers & Modifiers.kModifierMaskControl) == Modifiers.kModifierMaskNone)))
                {
                    bool flag = false;
                    if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                    {
                        ObjectGuid   objectId = new ObjectGuid(eventArgs.mObjectId);
                        IScriptProxy proxy    = Simulator.GetProxy(objectId);
                        if (proxy != null)
                        {
                            IObjectUI target = proxy.Target as IObjectUI;
                            if (target != null)
                            {
                                Vehicle vehicle = target as Vehicle;
                                if (vehicle != null)
                                {
                                    flag = OnSelect(vehicle, eventArgs.mMouseEvent);
                                }
                                else if (target is Sim)
                                {
                                    flag = OnSelect(target as Sim, eventArgs.mMouseEvent);
                                }
                                else
                                {
                                    flag = target.OnSelect(eventArgs.mMouseEvent);
                                }
                            }
                        }
                    }

                    if (!flag)
                    {
                        CameraController.RequestLerpToTarget(eventArgs.mDisplayPos, 1.5f, false);
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception("ProcessClick", e);
            }
        }