//public int ActiveCount //{ // get // { // int cnt = 0; // for (int i = 0; i < groupList.Length; i++) // if (groupList[i].active == 1) // cnt++; // return cnt; // } //} //========================================================================================= /// <summary> /// 拘束の解決 /// </summary> /// <param name="dtime"></param> /// <param name="jobHandle"></param> /// <returns></returns> public override JobHandle SolverConstraint(float dtime, float updatePower, int iteration, JobHandle jobHandle) { //if (ActiveCount == 0) if (groupList.Count == 0) { return(jobHandle); } // スプリング拘束(パーティクルごとに実行する) var job1 = new SpringJob() { updatePower = updatePower, groupList = groupList.ToJobArray(), teamDataList = Manager.Team.teamDataList.ToJobArray(), teamIdList = Manager.Particle.teamIdList.ToJobArray(), flagList = Manager.Particle.flagList.ToJobArray(), basePosList = Manager.Particle.basePosList.ToJobArray(), nextPosList = Manager.Particle.InNextPosList.ToJobArray() }; jobHandle = job1.Schedule(Manager.Particle.Length, 64, jobHandle); return(jobHandle); }
//========================================================================================= public override JobHandle PostUpdate(JobHandle jobHandle) { if (springMap.Count == 0) { return(jobHandle); } var job = new SpringJob() { springVertexList = springVertexList.ToJobArray(), springMap = springMap.Map, flagList = Manager.Particle.flagList.ToJobArray(), particlePosList = Manager.Particle.posList.ToJobArray(), particleRotList = Manager.Particle.rotList.ToJobArray(), particleBasePosList = Manager.Particle.basePosList.ToJobArray(), particleBaseRotList = Manager.Particle.baseRotList.ToJobArray(), virtualPosList = Manager.Mesh.virtualPosList.ToJobArray(), virtualVertexFlagList = Manager.Mesh.virtualVertexFlagList.ToJobArray(), }; jobHandle = job.Schedule(springVertexList.Length, 64, jobHandle); return(jobHandle); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { /* * if (!HasSingleton<PlayerInput>()) * return inputDeps; * * var emitDustJob = new EmitDust * { * deltaTime = Time.deltaTime, * CommandBuffer = endSimulationEntityCommandBufferSystem.CreateCommandBuffer().ToConcurrent(), * PlayerInput = GetSingleton<PlayerInput>(), * random = (uint)Random.Range(0,12345) * }; * var emitDustHandle = emitDustJob.Schedule(this, inputDeps); * endSimulationEntityCommandBufferSystem.AddJobHandleForProducer(emitDustHandle); * * var eyeJob = new AlignEyes * { * LocalToWorldDataFromEntity = GetComponentDataFromEntity<LocalToWorld>(), * }; * var eyeHandle = eyeJob.Schedule(this, emitDustHandle); */ var springRotationJob = new SpringJob { deltaTime = Time.deltaTime, time = Time.time, Spring = GetComponentDataFromEntity <Spring>(), Agent = GetComponentDataFromEntity <Agent>(true) }; var springRotationJobHandle = springRotationJob.Schedule(this, inputDeps); var scaleBodyJob = new ScaleBodyJob { deltaTime = Time.deltaTime, time = Time.time }; return(scaleBodyJob.Schedule(this, springRotationJobHandle)); }