Exemplo n.º 1
0
 private void DrawMesh(Mesh trailMesh, Material trailMaterial)
 {
     Graphics.DrawMesh(trailMesh, Matrix4x4.identity, trailMaterial, gameObject.layer);
     EffectUtily.DispatchMesh(trailMesh, Matrix4x4.identity, trailMaterial, gameObject.layer);
 }
    public void ApplyPlayData(EffectResHandlePlayData data)
    {
        if (null == data)
        {
            return;
        }

        if (!Valid)
        {
            return;
        }

        if (isCached)
        {
            data.ClearDirtyData();
            return;
        }
        if (!m_effectNode)
        {
            return;
        }
        if (data.ParentDirty)
        {
            m_effectPrefab.SetActive(false);
            data.parent.gameObject.name = m_effectPrefab.name + "-Agent";
            m_effectPrefabTransform.SetParent(data.parent);
            m_effectPrefabTransform.localPosition = Vector3.zero;
            m_effectPrefabTransform.localRotation = Quaternion.identity;
            m_effectPrefab.SetActive(true);
        }
        //暂不支持
        //if (data.SpeedDirty)
        //{
        //    m_effectNode.SetParticleSpeed(data.Speed);
        //}
        if (data.SizeScaleDirty)
        {
            m_effectNode.SetScale(data.SizeScale);
        }

        if (data.effectColliderLayerDirty)
        {
            EffectUtily.SetEffectColliderLayer(data.effectColliderLayer, m_effectNode.effectColliders);
        }
        if (data.broadcastfuncNameDirty)
        {
            m_effectPrefab.BroadcastMessage(data.broadcastfuncName, SendMessageOptions.DontRequireReceiver);
        }
        if (data.AddhitEventDirty)
        {
            m_effectNode.hitEvent += data.AddhitEvent;
        }
        if (data.ReducehitEventDirty)
        {
            m_effectNode.hitEvent -= data.ReducehitEvent;
        }

        if (data.AddAttackCollisionHandleDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.collisionEvent += data.AddAttackCollisionHandle;
            }
        }

        if (data.ReduceAttackCollisionHandleDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.collisionEvent -= data.ReduceAttackCollisionHandle;
            }
        }
        if (data.Attack_nFeedBackIDDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.nFeedBackID = data.Attack_nFeedBackID;
            }
        }
        if (data.Attack_nAttackEntityIDDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.nAttackEntityID = data.Attack_nAttackEntityID;
            }
        }
        if (data.Attack_bEnableCollisionDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.bEnableCollision = data.Attack_bEnableCollision;
            }
        }

        if (data.Attack_eventHandlerCountDirty)
        {
            if (m_AttackGroup)
            {
                m_AttackGroup.eventHandlerCount = data.Attack_eventHandlerCount;
            }
        }



        if (data.bPlayDirty || data.isEnemyDirty || data.entityIDDirty || data.SrcTransformDirty || data.DstTransformDirty || data.playMaskDirty || data.bRePlayDirty)
        {
            if (data.bRePlay)
            {
                m_effectNode.StopEffect();
            }

            if (data.bPlay || data.bRePlay)
            {
                m_effectNode.PlayEffect(data.isEnemy, data.entityID, data.SrcTransform, data.DstTransform, data.playMask);
            }
            else
            {
                m_effectNode.StopEffect();
            }
        }
        data.ClearDirtyData();
    }