Esempio n. 1
0
 public override void TransitionFired(PetrinetTransition transition)
 {
     foreach (var a in ChangeOnFired)
     {
         a.SetActive(!a.activeSelf);
     }
 }
 private void Fired(PetrinetTransition transition, bool successfully)
 {
     if (successfully && Transitions.Contains(transition))
     {
         TransitionFired(transition);
     }
 }
Esempio n. 3
0
        private void Colorize(PetrinetTransition transition, List <Renderer> rends)
        {
            var firstPlaceIn = transition.In.FirstOrDefault(i => i.Type == PetrinetCondition.ConditionType.Place);

            if (firstPlaceIn != null)
            {
                var houseLinker = firstPlaceIn.GetComponent <HouseLinker>();
                if (houseLinker != null)
                {
                    houseLinker.ColorizeThis(rends);
                }
            }
        }
Esempio n. 4
0
        protected bool CanTriggerFirstAble(out PetrinetTransition first)
        {
            var ret = false;

            first = null;
            if (GlobalTriggerAreaForAllTransitions == null)
            {
            }
            else if (GlobalTriggerAreaForAllTransitions.bounds.Contains(Controller.transform.position))
            {
                ret = true;
            }
            else
            {
                var forward = Controller.transform.forward;
                switch (TransitionTrigger)
                {
                case Trigger.Point:
                    RaycastHit info;
                    if (GlobalTriggerAreaForAllTransitions.Raycast(new Ray(Controller.transform.position, forward), out info, 10f))
                    {
                        ret = true;
                    }
                    break;

                case Trigger.Proximity:
                    var distance = GlobalTriggerAreaForAllTransitions.bounds.Contains(Controller.transform.position) ?
                                   0f :
                                   Vector3.Distance(Controller.transform.position, GlobalTriggerAreaForAllTransitions.ClosestPointOnBounds(Controller.transform.position));
                    if (distance < TriggerDistance)
                    {
                        ret = true;
                    }
                    break;
                }
            }

            if (!ret)
            {
                return(false);
            }
            first = Transitions.FirstOrDefault(t => t.GetConditionsFulfilled().Values.Any(v => v));
            if (first == null)
            {
                ret = false;
            }
            return(ret);
        }
Esempio n. 5
0
        protected bool CanTriggerClosest(out PetrinetTransition closest)
        {
            var forward         = Controller.transform.forward;
            var distanceClosest = float.MaxValue;

            closest = null;
            for (var i = 0; i < TriggerAreasPerTransition.Count; i++)
            {
                if (!TriggerAreasPerTransition[i].gameObject.activeSelf)
                {
                    continue;
                }
                switch (TransitionTrigger)
                {
                case Trigger.Point:
                    RaycastHit info;
                    if (TriggerAreasPerTransition[i].bounds.Contains(Controller.transform.position))
                    {
                        distanceClosest = 0f;
                        closest         = Transitions[i];
                    }
                    if (TriggerAreasPerTransition[i].Raycast(new Ray(Controller.transform.position, forward), out info, 10f))
                    {
                        if (info.distance < distanceClosest)
                        {
                            distanceClosest = info.distance;
                            closest         = Transitions[i];
                        }
                    }
                    break;

                case Trigger.Proximity:
                    var distance = TriggerAreasPerTransition[i].bounds.Contains(Controller.transform.position) ?
                                   0f :
                                   Vector3.Distance(Controller.transform.position, TriggerAreasPerTransition[i].ClosestPointOnBounds(Controller.transform.position));
                    if (distance < distanceClosest)
                    {
                        distanceClosest = distance;
                        closest         = Transitions[i];
                    }
                    break;
                }
            }
            return(distanceClosest < TriggerDistance);
        }
 public abstract void TransitionFired(PetrinetTransition transition);
Esempio n. 7
0
        //public bool sadfsadf;
        //new void Update()
        //{
        //    base.Update();
        //    Debug.Log("1 " + Transitions[0].Name);
        //    if (sadfsadf)
        //    {
        //        Debug.Log("2 " + Transitions[0].Name);
        //        sadfsadf = false;
        //        var transitionsReady = Transitions.Where(r => r.GetConditionsFulfilled().All(v => v.Value));
        //        var firstReady = transitionsReady.FirstOrDefault();
        //        if (firstReady == null)
        //            return;

        //        Colorize(firstReady, OutsideRenderer);
        //    }
        //}

        public override void TransitionFired(PetrinetTransition transition)
        {
            base.TransitionFired(transition);
            HideStuff();
        }
Esempio n. 8
0
        public void TryTakePicture(Vector2 size, PetrinetTransition transition, bool forceRadius, bool takeNewPhoto)
        {
            if (_picturesTaken == null)
            {
                _picturesTaken = new Dictionary <PetrinetTransition, Texture2D>();
            }
            if (!_picturesTaken.ContainsKey(transition) || takeNewPhoto)
            {
                var go = transition.PreviewObject;

                var oldPos = go.transform.localPosition;
                // var oldRot = go.transform.localRotation;
                var oldActive = go.activeSelf;

                go.transform.position = transform.position;
                // go.transform.rotation = transition.GetPreviewRotation();
                go.SetActive(true);

                Cam.transform.position = transition.PhotoFrom.position; ////localPosition = -transition.GetPreviewPosition();// new Vector3(-size.x, Height, -size.y);// * (1f + transition.PreviewExtraDistance);
                Cam.transform.LookAt(transition.PhotoTo);               //transform.position);//transform.position + Vector3.up * 0.5f);
                //Cam.transform.localPosition = Cam.transform.localPosition - Cam.transform.forward * 1.0f;
                Cam.Render();

                go.transform.localPosition = oldPos;
                //  go.transform.localRotation = oldRot;
                go.SetActive(oldActive);

                var was = RenderTexture.active;
                RenderTexture.active = _renderTex;
                // width and height, chosen to match the source r.t.
                var tex = new Texture2D(_renderTex.width, _renderTex.height, TextureFormat.ARGB32, false);
                // Grab everything
                tex.ReadPixels(new Rect(0f, 0f, _renderTex.width, _renderTex.height), 0, 0);
                tex.Apply();
                RenderTexture.active = was;

                //PhotoMaterial

                var rend = transition.Preview.GetComponentInChildren <Renderer>();
                //rend.texture = null;
                var mat = new Material(PhotoMaterial);
                mat.SetTexture("_MainTex", tex);
                //mat.SetTexture("_Mask", tex);
                var scale  = new Vector2(1f, 1f);//new Rect(0f, 0f, 1f, 1f));
                var offset = new Vector2(0f, 0f);
                if (!forceRadius)
                {
                    var h = transition.GetComponent <HardwareRequirements>();
                    offset = h.Requirement.x < h.Requirement.y
                        ? new Vector2((1f - h.Requirement.x / h.Requirement.y) / 2f, 0f)
                        : new Vector2(0f, (1f - h.Requirement.y / h.Requirement.x) / 2f);
                    scale = h.Requirement.x < h.Requirement.y
                        ? new Vector2(h.Requirement.x / h.Requirement.y, 1f)
                        : new Vector2(1f, h.Requirement.y / h.Requirement.x);
                }
                mat.SetTextureOffset("_MainTex", offset);
                mat.SetTextureScale("_MainTex", scale);
                rend.material = mat;

                if (_picturesTaken.ContainsKey(transition))
                {
                    _picturesTaken.Remove(transition);
                }
                _picturesTaken.Add(transition, tex);
            }
        }
Esempio n. 9
0
 protected virtual bool CanTrigger(out PetrinetTransition transition)
 {
     transition = null;
     return(InsideTriggerField() && (CanTriggerFirstAble(out transition) || CanTriggerClosest(out transition)));
 }
 public override void TransitionFired(PetrinetTransition transition)
 {
 }
Esempio n. 11
0
 public void RegisterInteraction(PetrinetTransition obj, bool valid)
 {
     _nextInteraction.Add(obj);
     _nextInteractionsValid.Add(valid);
 }