public void LaunchArrow(float3 startPos, float scale,
                            ProjectileLaunshSetupComponentData launchData, SpriteSheetAnimationComponentData animaionData,
                            SpriteRendererComponentData spriteData,
                            RenderSharedComponentData renderData, ProjectileCollisionComponentData collisionData,
                            RenderScaleComponentdata renderScale,
                            bool castShadows, CastSpritesShadowComponentData shadowSettings, bool calcShadowShifts)
    {
        var arrow = manager.CreateEntity(arrowArchetype);

        manager.SetComponentData(arrow, new Translation()
        {
            Value = startPos
        });
        manager.SetComponentData(arrow, launchData);
        manager.SetComponentData(arrow, new Scale()
        {
            Value = scale
        });
        manager.SetComponentData(arrow, new Rotation()
        {
            Value = quaternion.identity
        });
        manager.SetComponentData(arrow, spriteData);
        if (animaionData.frameCount > 1)
        {
            manager.AddComponentData(arrow, animaionData);
        }
        manager.SetComponentData(arrow, renderScale);
        manager.SetComponentData(arrow, collisionData);
        manager.SetSharedComponentData(arrow, renderData);

        if (castShadows)
        {
            manager.AddComponentData(arrow, shadowSettings);
            if (calcShadowShifts)
            {
                manager.AddComponentData(arrow, new CastProjectileShadowsTagComponentData()
                {
                    defaultAlpha                   = shadowSettings.color.a,
                    alphaMultiplier                = 0f,
                    scaleMultiplier                = 1,
                    startPositionOffset            = new float2(0, -1),
                    maxYOffsetForLerpScaleAndAlpha = 5f
                });
            }
        }
    }
示例#2
0
 private void CacheLastData(ProjectileLaunshSetupComponentData data)
 {
     lastOnParticleStops   = data.effectOnParticleStops;
     lastOnParticleRemoves = data.effectOnParticleRemoves;
 }