public void Awake()
    {
        if (!target)
         return;
          // obtain entity state data
          entityState = target.GetComponent<EntityStateData>();
          // Obtain entity state
          if (!entityState)
         Debug.LogError("No EntitySataeData has been assigned to " + target.name);

          // obtain transform of this entity
          eTransform = this.transform;

          noiseDetectionCtrl = GameObject.FindGameObjectWithTag("Player").GetComponent<NoiseLevelCtrl>();

          curPlayerStatus = PlayerStatus.Undetected;

          if (target == null)
          {
         if (EditorUtility.DisplayDialog("FOV_Ctrl: Detection Target not assigned!",
         "Assign the object with tag 'Player' by default?", "Assign", "Cancel"))
         {
            target = GameObject.FindGameObjectWithTag("Player");
         }
         else
         {
            // target not assigned
         }
          }
          else
         // assign target Transform
         tTransform = target.transform;
    }
Exemple #2
0
 // Use this for initialization
 void Start()
 {
     // obtain state
       state = this.GetComponent<EntityStateData>();
       agent = this.GetComponent<NavMeshAgent>();
       // Enter current state
       if (currentState)
      currentState.Enter(this);
 }
        public void BlobStreamUriRefresh()
        {
            string xml = FeedStart +
                         MediaEntry(
                id: "http://localhost/eset(1)",
                editLink: "eset(1)",
                readStreamUrl: "http://media-entry/v1/",
                mediaType: "text/plain",
                properties: "<d:ID>1</d:ID>",
                editStreamUrl: "http://edit-media-link/v1/") +
                         "</feed>";

            string xmlV2 = xml.Replace("/v1/", "/v2/");
            CombinatorialEngine engine = CombinatorialEngine.FromDimensions(
                new Dimension("StartingState", EntityStateData.Values),
                new Dimension("MergeOption", MergeOptionData.Values));

            TestUtil.RunCombinatorialEngineFail(engine, (values) =>
            {
                this.ClearContext();

                EntityStateData startingState = (EntityStateData)values["StartingState"];
                MergeOptionData option        = (MergeOptionData)values["MergeOption"];

                // Set up the entity to match the identity on the sample XML.
                Photo entity = new Photo();
                entity.ID    = 1;
                startingState.ApplyToObject(this.context, entity, "eset");
                if (startingState.State != EntityStates.Detached)
                {
                    Uri identity = this.context.Entities.Single().Identity;
                    Trace.WriteLine("Identity: " + (identity == null ? String.Empty : identity.AbsoluteUri));
                }

                this.context.MergeOption = option.Option;
                var response             = QueryResponse(xml, this.context.CreateQuery <Photo>("eset"));
                foreach (var item in response)
                {
                    Assert.IsNotNull(item);
                    Assert.AreEqual(1, item.ID, "item.ID");
                }

                if (option.IsTracking)
                {
                    // If we started off detached, then the context created its own copy.
                    if (startingState.State == EntityStates.Detached)
                    {
                        entity = (Photo)this.context.Entities.Single().Entity;
                    }

                    EntityStates expectedState = startingState.ExpectedStateAfterRefresh(option.Option);
                    EntityStates actualState   = EntityStateData.GetStateForEntity(this.context, entity);
                    Assert.AreEqual(expectedState, actualState, "state of entity after reading");
                    if (startingState.State != EntityStates.Added)
                    {
                        AssertEntityCount(1, "single tracked entity at this point");
                    }
                    else
                    {
                        AssertEntityCount(2, "two tracked entities at this point");

                        // Get the entity that was loaded, not the one that we originally created.
                        entity = (Photo)this.context.Entities.Where(o => o.Entity != entity).Single().Entity;
                    }
                }
                else
                {
                    if (startingState.State == EntityStates.Detached)
                    {
                        // Nothing else to do in this test, as effectively nothing changes.
                        AssertEntityCount(0, "nothing tracked, nothing attached.");
                        return;
                    }
                    else
                    {
                        AssertEntityCount(1, "nothing tracked, but we did attach something during test setup.");
                    }
                }

                Uri readStreamUri           = this.context.GetReadStreamUri(entity);
                EntityDescriptor descriptor = this.context.GetEntityDescriptor(entity);
                if (option.IsTracking)
                {
                    Assert.IsNotNull(readStreamUri, "readStreamUri");
                    Assert.AreEqual("http://media-entry/v1/", readStreamUri.OriginalString, "readStreamUri.OriginalString");

                    Assert.IsNotNull(descriptor.EditLink, "descriptor.EditLink");
                    Assert.AreEqual("http://localhost/eset(1)", descriptor.EditLink.OriginalString, "descriptor.EditLink.OriginalString");

                    Assert.IsNotNull(descriptor.EditStreamUri, "descriptor.EditStreamUri");
                    Assert.AreEqual("http://edit-media-link/v1/", descriptor.EditStreamUri.OriginalString, "descriptor.EditStreamUri.OriginalString");

                    Assert.IsNotNull(descriptor.ReadStreamUri, "descriptor.ReadStreamUri");
                    Assert.AreEqual(readStreamUri, descriptor.ReadStreamUri, "GetReadStreamUri and descriptor.ReadStreamUri");
                }
                else
                {
                    Assert.AreEqual(startingState.State, descriptor.State, "descriptor.State");
                    AssertDescriptorForNonTrackedRefresh(readStreamUri, descriptor);
                }

                response = QueryResponse(xmlV2, this.context.CreateQuery <Photo>("eset"));
                foreach (var item in response)
                {
                    Assert.IsNotNull(item);
                    Assert.AreEqual(1, item.ID, "item.ID");
                }

                readStreamUri = this.context.GetReadStreamUri(entity);
                descriptor    = this.context.GetEntityDescriptor(entity);
                if (option.IsTracking)
                {
                    Assert.IsNotNull(readStreamUri, "readStreamUri");
                    Assert.AreEqual("http://media-entry/v2/", readStreamUri.OriginalString, "readStreamUri.OriginalString");

                    Assert.IsNotNull(descriptor.EditLink, "descriptor.EditLink");
                    Assert.AreEqual("http://localhost/eset(1)", descriptor.EditLink.OriginalString, "descriptor.EditLink.OriginalString");

                    Assert.IsNotNull(descriptor.EditStreamUri, "descriptor.EditStreamUri");
                    Assert.AreEqual("http://edit-media-link/v2/", descriptor.EditStreamUri.OriginalString, "descriptor.EditStreamUri.OriginalString");

                    Assert.IsNotNull(descriptor.ReadStreamUri, "descriptor.ReadStreamUri");
                    Assert.AreEqual(readStreamUri, descriptor.ReadStreamUri, "GetReadStreamUri and descriptor.ReadStreamUri");
                }
                else
                {
                    AssertDescriptorForNonTrackedRefresh(readStreamUri, descriptor);
                }
            });
        }
 /// =========================
 /// START
 /// <summary>
 /// Start this instance.
 /// </summary>
 /// =========================
 public virtual void Start()
 {
     // Assign Health
     Health = MaxHealthPoints;
     // initialize HealthRatio
     HealthRatio = 1.0f;
     // obtain state
     state = this.GetComponent<EntityStateData>();
 }
 /// ====================
 /// INIT
 /// <summary>
 /// Initialize this State
 /// </summary>
 /// ====================
 public virtual void Init()
 {
     // obtain navMeshAgent
       if (!agent)
      agent = GetComponent<NavMeshAgent>();
       // obtain playerStateData
       if (!state)
      state = GetComponent<EntityStateData>();
       // Create new NavMeshPath
       path = new NavMeshPath();
 }