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 }); } } }
private void CacheLastData(ProjectileLaunshSetupComponentData data) { lastOnParticleStops = data.effectOnParticleStops; lastOnParticleRemoves = data.effectOnParticleRemoves; }