Пример #1
0
        protected override void CreateHeadSegment(ArcRaw arc, int groupID)
        {
            Entity headEntity = em.Instantiate(headArcNoteEntityPrefab);

            RenderMesh renderMesh = PlayManager.ArcheadRenderMeshes[arc.color];

            em.SetSharedComponentData(headEntity, renderMesh);

            float floorpos = PlayManager.Conductor.GetFloorPositionFromTiming(arc.timing, arc.timingGroup);

            float       x = Conversion.GetWorldX(arc.startX);
            float       y = Conversion.GetWorldY(arc.startY);
            const float z = 0;

            int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos + Constants.RenderFloorPositionRange, arc.timingGroup);
            int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos - Constants.RenderFloorPositionRange, arc.timingGroup);
            int appearTime = (t1 < t2) ? t1 : t2;

            em.SetComponentData(headEntity, new Translation()
            {
                Value = math.float3(x, y, z)
            });
            em.SetComponentData(headEntity, new FloorPosition(floorpos));
            em.SetComponentData(headEntity, new TimingGroup(arc.timingGroup));
            em.SetComponentData(headEntity, new AppearTime(appearTime));
            em.SetComponentData(headEntity, new DestroyOnTiming(arc.timing));
            em.SetComponentData(headEntity, new ArcGroupID(groupID));
        }
Пример #2
0
        protected override void CreateSegment(ArcRaw arc, float3 start, float3 end, int time, int endTime, int groupID)
        {
            Entity traceEntity = em.Instantiate(traceNoteEntityPrefab);

            float dx = start.x - end.x;
            float dy = start.y - end.y;
            float dz = start.z - end.z;

            int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(start.z + Constants.RenderFloorPositionRange, arc.timingGroup);
            int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(end.z - Constants.RenderFloorPositionRange, arc.timingGroup);
            int appearTime = (t1 < t2) ? t1 : t2;

            //Shear along xy + scale along z matrix
            em.SetComponentData(traceEntity, new LocalToWorld()
            {
                Value = new float4x4(
                    1, 0, dx, start.x,
                    0, 1, dy, start.y,
                    0, 0, dz, 0,
                    0, 0, 0, 1
                    )
            });
            em.SetComponentData(traceEntity, new FloorPosition(start.z));
            em.SetComponentData(traceEntity, new TimingGroup(arc.timingGroup));
            em.SetComponentData(traceEntity, new BaseOffset(new float4(start.x, start.y, 0, 0)));
            em.SetComponentData(traceEntity, new BaseShear(new float4(dx, dy, dz, 0)));
            em.SetComponentData(traceEntity, new Cutoff(true));
            em.SetComponentData(traceEntity, new AppearTime(appearTime));
            em.SetComponentData(traceEntity, new DestroyOnTiming(endTime));
            em.SetComponentData(traceEntity, new ChartTime(time));
            em.SetComponentData(traceEntity, new ChartEndTime(endTime));
            em.SetComponentData(traceEntity, new ArcGroupID(groupID));

            if (time < endTime)
            {
                Entity traceShadowEntity = em.Instantiate(traceShadowEntityPrefab);

                em.SetComponentData(traceShadowEntity, new FloorPosition()
                {
                    value = start.z
                });
                em.SetComponentData(traceShadowEntity, new LocalToWorld()
                {
                    Value = new float4x4(
                        1, 0, dx, start.x,
                        0, 1, 0, 0,
                        0, 0, dz, 0,
                        0, 0, 0, 1
                        )
                });
                em.SetComponentData(traceShadowEntity, new BaseOffset(new float4(start.x, 0, 0, 0)));
                em.SetComponentData(traceShadowEntity, new BaseShear(new float4(dx, 0, dz, 0)));
                em.SetComponentData(traceShadowEntity, new Cutoff(true));
                em.SetComponentData(traceShadowEntity, new TimingGroup(arc.timingGroup));
                em.SetComponentData(traceShadowEntity, new AppearTime(appearTime));
                em.SetComponentData(traceShadowEntity, new DestroyOnTiming(endTime));
                em.SetComponentData(traceShadowEntity, new ChartTime(time));
            }
        }
Пример #3
0
 public ArcData(ArcRaw arc)
 {
     this.start       = Conversion.GetWorldPos(math.float2(arc.startX, arc.startY));
     this.end         = Conversion.GetWorldPos(math.float2(arc.endX, arc.endY));
     this.easing      = arc.easing;
     this.startTiming = arc.timing;
     this.endTiming   = arc.endTiming;
 }
Пример #4
0
        protected override void CreateJudgeEntity(ArcRaw arc, int groupId, float startBpm)
        {
            Entity en = em.CreateEntity(arcJudgeArchetype);

            //very stupid
            em.SetComponentData(en, new ChartTime(arc.timing + Constants.LostWindow));
            em.SetSharedComponentData(en, new ArcColorID(arc.color));
            em.SetComponentData(en, new ArcData(arc));
            em.SetComponentData(en, new ArcGroupID(groupId));
            em.SetComponentData(en, new DestroyOnTiming(arc.endTiming + Constants.HoldLostWindow));

            em.SetComponentData(en, ChartIncrTime.FromBpm(arc.timing, arc.endTiming, startBpm, out int comboCount));

            PlayManager.ScoreHandler.tracker.noteCount += comboCount;
        }
Пример #5
0
        protected override void CreateHeadSegment(ArcRaw trace, int _)
        {
            Entity headEntity = em.Instantiate(headTraceNoteEntityPrefab);

            float floorpos = PlayManager.Conductor.GetFloorPositionFromTiming(trace.timing, trace.timingGroup);

            float       x = Conversion.GetWorldX(trace.startX);
            float       y = Conversion.GetWorldY(trace.startY);
            const float z = 0;

            int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos + Constants.RenderFloorPositionRange, 0);
            int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos - Constants.RenderFloorPositionRange, 0);
            int appearTime = (t1 < t2) ? t1 : t2;

            em.SetComponentData(headEntity, new FloorPosition(floorpos));
            em.SetComponentData(headEntity, new Translation()
            {
                Value = new float3(x, y, z)
            });
            em.SetComponentData(headEntity, new TimingGroup(trace.timingGroup));
            em.SetComponentData(headEntity, new AppearTime(appearTime));
        }
Пример #6
0
        protected override void CreateHeightIndicator(ArcRaw arc)
        {
            Entity heightEntity = em.Instantiate(heightIndicatorEntityPrefab);

            RenderMesh renderMesh = PlayManager.ArcHeightRenderMeshes[arc.color];

            em.SetSharedComponentData(heightEntity, renderMesh);

            float floorpos = PlayManager.Conductor.GetFloorPositionFromTiming(arc.timing, arc.timingGroup);

            float height = Conversion.GetWorldY(arc.startY) - 0.45f;

            float       x = Conversion.GetWorldX(arc.startX);
            float       y = height / 2;
            const float z = 0;

            const float scaleX = 2.34f;
            float       scaleY = height;
            const float scaleZ = 1;

            int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos + Constants.RenderFloorPositionRange, arc.timingGroup);
            int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(floorpos - Constants.RenderFloorPositionRange, arc.timingGroup);
            int appearTime = (t1 < t2) ? t1 : t2;

            em.SetComponentData(heightEntity, new Translation()
            {
                Value = new float3(x, y, z)
            });
            em.AddComponentData(heightEntity, new NonUniformScale()
            {
                Value = new float3(scaleX, scaleY, scaleZ)
            });
            em.AddComponentData(heightEntity, new FloorPosition(floorpos));
            em.SetComponentData(heightEntity, new TimingGroup(arc.timingGroup));
            em.SetComponentData(heightEntity, new AppearTime(appearTime));
            em.SetComponentData(heightEntity, new DestroyOnTiming(arc.timing));
        }
Пример #7
0
 protected override void CreateJudgeEntity(ArcRaw arc, int groupId, float startBpm)
 {
 }
Пример #8
0
 protected override void CreateHeightIndicator(ArcRaw arc)
 {
 }
Пример #9
0
        protected override void CreateSegment(ArcRaw arc, float3 start, float3 end, int timing, int endTiming, int groupId)
        {
            Entity arcInstEntity = em.Instantiate(arcNoteEntityPrefab);

            RenderMesh renderMesh = PlayManager.ArcInitialRenderMeshes[arc.color];

            em.SetSharedComponentData <RenderMesh>(arcInstEntity, renderMesh);

            float dx = start.x - end.x;
            float dy = start.y - end.y;
            float dz = start.z - end.z;

            int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(start.z + Constants.RenderFloorPositionRange, arc.timingGroup);
            int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(end.z - Constants.RenderFloorPositionRange, arc.timingGroup);
            int appearTime = (t1 < t2) ? t1 : t2;

            //Shear along xy + scale along z matrix
            LocalToWorld ltwArc = new LocalToWorld()
            {
                Value = new float4x4(
                    1, 0, dx, start.x,
                    0, 1, dy, start.y,
                    0, 0, dz, 0,
                    0, 0, 0, 1
                    )
            };

            em.SetComponentData(arcInstEntity, ltwArc);

            em.SetComponentData(arcInstEntity, new FloorPosition(start.z));
            em.SetComponentData(arcInstEntity, new TimingGroup(arc.timingGroup));
            em.SetComponentData(arcInstEntity, new BaseOffset(new float4(start.x, start.y, 0, 0)));
            em.SetComponentData(arcInstEntity, new BaseShear(new float4(dx, dy, dz, 0)));
            em.SetComponentData(arcInstEntity, new Cutoff(false));
            em.SetComponentData(arcInstEntity, new AppearTime(appearTime));
            em.SetComponentData(arcInstEntity, new DestroyOnTiming(endTiming + Constants.HoldLostWindow));
            em.SetComponentData(arcInstEntity, new ArcGroupID(groupId));
            em.SetComponentData(arcInstEntity, new ChartTime(timing));
            em.SetComponentData(arcInstEntity, new ChartEndTime(endTiming));

            if (timing < endTiming)
            {
                Entity arcShadowEntity = em.Instantiate(arcShadowEntityPrefab);
                em.SetSharedComponentData <RenderMesh>(arcShadowEntity, PlayManager.ArcShadowRenderMesh);
                LocalToWorld ltwShadow = new LocalToWorld()
                {
                    Value = new float4x4(
                        1, 0, dx, start.x,
                        0, 1, 0, 0,
                        0, 0, dz, 0,
                        0, 0, 0, 1
                        )
                };
                em.SetComponentData(arcShadowEntity, ltwShadow);

                em.SetComponentData(arcShadowEntity, new FloorPosition(start.z));
                em.SetComponentData(arcShadowEntity, new TimingGroup(arc.timingGroup));
                em.SetComponentData(arcShadowEntity, new BaseOffset(new float4(start.x, 0, 0, 0)));
                em.SetComponentData(arcShadowEntity, new BaseShear(new float4(dx, 0, dz, 0)));
                em.SetComponentData(arcShadowEntity, new Cutoff(false));
                em.SetComponentData(arcShadowEntity, new AppearTime(appearTime));
                em.SetComponentData(arcShadowEntity, new DestroyOnTiming(endTiming + Constants.HoldLostWindow));
                em.SetComponentData(arcShadowEntity, new ArcGroupID(groupId));
                em.SetComponentData(arcShadowEntity, new ChartTime(timing));
            }
        }
Пример #10
0
 protected abstract void CreateJudgeEntity(ArcRaw arc, int groupId, float startBpm);
Пример #11
0
 protected abstract void CreateHeadSegment(ArcRaw arc, int groupID);
Пример #12
0
 protected abstract void CreateHeightIndicator(ArcRaw arc);
Пример #13
0
 protected abstract void CreateSegment(ArcRaw arc, float3 start, float3 end, int timing, int endTiming, int groupId);