public bool TryActivateObjectByPhase(ref PhaseEnabler phaseEnabler, ref ActivatableObject activatableObject) { int phase = phaseConfig.phase; bool enabled = phase == phaseEnabler.enabledPhase; if (activatableObject.linkedObjectActive == enabled) { return(false); } activatableObject.linkedObjectActive = enabled; activatableObject.synchronized = false; return(true); }
void Awake() { _sourceAndTarget = GetComponent <ActivatableObjectSource>() != null; _sources = new List <ActivatableObjectSource>(); _activatableObject = GetComponent <ActivatableObject>(); GameObject[] sourceArr = GameObject.FindGameObjectsWithTag("AO"); if (AO_ID <= 0) { return; } //Get all the targets that have the same ID foreach (GameObject source in sourceArr) { ActivatableObjectSource[] aosource = source.GetComponents <ActivatableObjectSource>(); foreach (ActivatableObjectSource aos in aosource) { if (aos.AO_ID == AO_ID) { _sources.Add(aos); } } } //Flip delegate calls if inverse if (inverse) { Activate = DeactivateObject; } else { Activate = ActivateObject; } if (inverse) { Deactivate = ActivateObject; } else { Deactivate = DeactivateObject; } }
protected override void OnUpdate() { EntityManager.GetAllUniqueSharedComponentData(m_UniqueTypes); for (int sharedIndex = 0, numShared = m_UniqueTypes.Count; sharedIndex < numShared; ++sharedIndex) { ActivatableObject activatableObject = m_UniqueTypes[sharedIndex]; m_MainGroup.SetFilter(activatableObject); if (m_MainGroup.CalculateLength() == 0) { continue; } UpdateGameObjectActive(ref activatableObject); } }
private static void UpdateGameObjectActive(ref ActivatableObject activatableObject) { if (activatableObject.synchronized) { return; } GameObject linkedObject = activatableObject.linkedObject; if (linkedObject == null) { return; } activatableObject.synchronized = true; linkedObject.SetActive(activatableObject.linkedObjectActive); }
public void ExecuteEach(EntityManager entityManager, ComponentGroup phaseEnablerGroup) { NativeArray <Entity> entities = phaseEnablerGroup.ToEntityArray(Allocator.TempJob); for (int entityIndex = 0, numEntities = entities.Length; entityIndex < numEntities; ++entityIndex) { Entity entity = entities[entityIndex]; PhaseEnabler phaseEnabler = entityManager.GetComponentData <PhaseEnabler>(entity); ActivatableObject activatableObject = entityManager.GetSharedComponentData <ActivatableObject>(entity); if (!TryActivateObjectByPhase(ref phaseEnabler, ref activatableObject)) { continue; } entityManager.SetSharedComponentData <ActivatableObject>(entity, activatableObject); } entities.Dispose(); }
// Update is called once per frame void Update() { if (Input.GetButton("Tap")) { //RaycastHit hit; //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); /*if (Physics.Raycast(ray, out hit)) { Transform objectHit = hit.transform; this.GetComponent<Renderer>().material = mat2;*/ Debug.DrawLine(Camera.main.transform.position, Camera.main.transform.forward * 100); //Check if there is an object directly ahead and that it has the activate script. RaycastHit hitInfo; Physics.Raycast(transform.position, transform.forward, out hitInfo, 1000); if (Physics.Raycast(transform.position, transform.forward, out hitInfo, 1000) && hitInfo.transform.gameObject.GetComponent<ActivatableObject>() != null) { if (hitInfo.transform.gameObject != activatedObject && activatedObject != null) { activatedObject.Deactivate(); } hitInfo.transform.gameObject.GetComponent<ActivatableObject>().Activate(); activatedObject = hitInfo.transform.gameObject.GetComponent<ActivatableObject>(); } /*else if (activatedObject != null) { activatedObject.Deactivate(); activatedObject = null; }*/ } else if (activatedObject != null) { activatedObject.Deactivate(); activatedObject = null; } }
public ActivatableObjectTests() { Obj = new ActivatableObject <TestParams>(); }