/// <summary> /// Gets the visual sensor position. /// </summary> /// <returns>The visual sensor position.</returns> public Vector3 GetVisualSensorPosition() { if (Owner == null) { return(Vector3.zero); } Vector3 _position = Vector3.zero; if (UseDynamicVisualSensorPosition) { if (m_VisualSensorTransform == null) { m_VisualSensorTransform = SystemTools.FindChildByName(VisualSensorName, Owner.transform); } } else { m_VisualSensorTransform = null; } if (m_VisualSensorTransform != null) { _position = m_VisualSensorTransform.position; } else { _position = PositionTools.FixTransformPoint(Owner.transform, VisualSensorOffset); } return(_position); }
/// <summary> /// Sends the message. /// </summary> /// <param name="_method">Method.</param> protected virtual void SendMessage(BehaviourEvent _event) { if (Owner == null || _event == null || string.IsNullOrEmpty(_event.FunctionName)) { return; } if (m_Receiver == null) { m_Receiver = Owner; } if (m_ReceiverTransform == null) { m_ReceiverTransform = SystemTools.FindChildByName(_event.ComponentName, m_Receiver.transform); } if (m_ReceiverTransform != null) { GameObject _receiver = m_ReceiverTransform.gameObject; switch (_event.ParameterType) { case BehaviourEventParameterType.Boolean: _receiver.SendMessage(_event.FunctionName, _event.ParameterBoolean, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Integer: _receiver.SendMessage(_event.FunctionName, _event.ParameterInteger, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Float: _receiver.SendMessage(_event.FunctionName, _event.ParameterFloat, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.String: _receiver.SendMessage(_event.FunctionName, _event.ParameterString, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Sender: _receiver.SendMessage(_event.FunctionName, Owner, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.SenderComponent: _receiver.SendMessage(_event.FunctionName, OwnerComponent, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.SenderTransform: _receiver.SendMessage(_event.FunctionName, Owner.transform, SendMessageOptions.DontRequireReceiver); break; default: _receiver.SendMessage(_event.FunctionName, null, SendMessageOptions.DontRequireReceiver); break; } if (DebugLogIsEnabled) { PrintDebugLog(this, "Send Message '" + _event.FunctionName + "' with " + _event.ParameterType.ToString() + " parameter to " + _receiver.name + " (" + _receiver.GetInstanceID() + ")"); } } else { switch (_event.ParameterType) { case BehaviourEventParameterType.Boolean: m_Receiver.BroadcastMessage(_event.FunctionName, _event.ParameterBoolean, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Integer: m_Receiver.BroadcastMessage(_event.FunctionName, _event.ParameterInteger, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Float: m_Receiver.BroadcastMessage(_event.FunctionName, _event.ParameterFloat, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.String: m_Receiver.BroadcastMessage(_event.FunctionName, _event.ParameterString, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.Sender: m_Receiver.BroadcastMessage(_event.FunctionName, Owner, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.SenderComponent: m_Receiver.BroadcastMessage(_event.FunctionName, OwnerComponent, SendMessageOptions.DontRequireReceiver); break; case BehaviourEventParameterType.SenderTransform: m_Receiver.BroadcastMessage(_event.FunctionName, Owner.transform, SendMessageOptions.DontRequireReceiver); break; default: m_Receiver.BroadcastMessage(_event.FunctionName, null, SendMessageOptions.DontRequireReceiver); break; } if (DebugLogIsEnabled) { PrintDebugLog(this, "Broadcast Message '" + _event.FunctionName + "' with " + _event.ParameterType.ToString() + " parameter to " + m_Receiver.name + " (" + m_Receiver.GetInstanceID() + ")"); } } }
private GameObject InstantiateNewEffect() { if (Owner == null) { return(null); } if (!string.IsNullOrEmpty(MountPointName.Trim()) && (m_MountPointTransform == null || m_MountPointTransform.name != MountPointName.Trim())) { m_MountPointTransform = SystemTools.FindChildByName(MountPointName, Owner.transform); } if (m_MountPointTransform == null) { m_MountPointTransform = Owner.transform; } Vector3 _position = m_MountPointTransform.position; Vector3 _offset = Vector3.zero; if (OffsetType == RandomOffsetType.EXACT) { _offset = Offset; } else if (OffsetRadius > 0) { Vector2 _pos = Random.insideUnitCircle * OffsetRadius; _offset.x = _pos.x; _offset.z = _pos.y; if (OffsetType == RandomOffsetType.HEMISPHERE) { _offset.y = Random.Range(0, OffsetRadius); } else if (OffsetType == RandomOffsetType.SPHERE) { _offset.y = Random.Range(-OffsetRadius, OffsetRadius); } } _position = PositionTools.FixTransformPoint(m_MountPointTransform, _offset); GameObject _effect = (GameObject)Object.Instantiate(ReferenceObject, _position, Quaternion.identity); if (_effect != null) { _effect.name = ReferenceObject.name; if (m_MountPointTransform != null) { _effect.transform.rotation = m_MountPointTransform.rotation * Rotation; } else { _effect.transform.rotation = Rotation; } if (Detach == false) { _effect.transform.SetParent(m_MountPointTransform, true); } _effect.SetActive(true); } return(_effect); }
private GameObject InstantiateEffect() { if (Owner == null || !Enabled || ReferenceObject == null) { return(null); } if (!string.IsNullOrEmpty(MountPointName.Trim()) && (m_MountPointTransform == null || m_MountPointTransform.name != MountPointName.Trim())) { m_MountPointTransform = SystemTools.FindChildByName(MountPointName, Owner.transform); } if (m_MountPointTransform == null) { m_MountPointTransform = Owner.transform; } Vector3 _position = m_MountPointTransform.position; Vector3 _offset = Vector3.zero; if (OffsetType == RandomOffsetType.EXACT) { _offset = Offset; } else if (OffsetRadius > 0) { Vector2 _pos = Random.insideUnitCircle * OffsetRadius; _offset.x = _pos.x; _offset.z = _pos.y; if (OffsetType == RandomOffsetType.HEMISPHERE) { _offset.y = Random.Range(0, OffsetRadius); } else if (OffsetType == RandomOffsetType.SPHERE) { _offset.y = Random.Range(-OffsetRadius, OffsetRadius); } } _position = PositionTools.FixTransformPoint(m_MountPointTransform, _offset); GameObject _effect = WorldManager.Instantiate(ReferenceObject, _position, Rotation); if (_effect != null) { _effect.name = ReferenceObject.name; if (m_MountPointTransform != null) { _effect.transform.rotation = m_MountPointTransform.rotation * Rotation; } else { _effect.transform.rotation = Rotation; } _effect.SetActive(true); if (Attached == true && m_MountPointTransform != null && Owner.activeInHierarchy) { _effect.transform.SetParent(m_MountPointTransform, true); } else if (Attached == false && Lifetime > 0) { WorldManager.Destroy(_effect, Lifetime); _effect = null; } } return(_effect); }