| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Jobs;
- using UnityEngine.UI;
- namespace SingularityGroup.HotReload.Demo {
- public class HotReloadBurstJobsDemo : MonoBehaviour {
- public Transform[] cubes;
- public Text informationText;
- public Button openWindowButton;
- public Button openScriptButton;
- public TextAsset thisScript;
-
- TransformAccessArray cubeTransforms;
- CubeJob job;
- void Awake() {
- cubeTransforms = new TransformAccessArray(cubes);
- if(Application.isEditor) {
- openWindowButton.onClick.AddListener(Demo.I.OpenHotReloadWindow);
- openScriptButton.onClick.AddListener(() => Demo.I.OpenScriptFile(thisScript, 49, 17));
- } else {
- openWindowButton.gameObject.SetActive(false);
- openScriptButton.gameObject.SetActive(false);
- }
- informationText.gameObject.SetActive(true);
- }
- void Update() {
- job.deltaTime = Time.deltaTime;
- job.time = Time.time;
- var handle = job.Schedule(cubeTransforms);
- handle.Complete();
-
- if (Demo.I.IsServerRunning()) {
- informationText.text = "Hot Reload is running";
- } else {
- informationText.text = "Hot Reload is not running";
- }
- }
-
- struct CubeJob : IJobParallelForTransform {
- public float deltaTime;
- public float time;
- public void Execute(int index, TransformAccess transform) {
- transform.localRotation *= Quaternion.Euler(50 * deltaTime, 0, 0);
-
- // Uncomment this code to scale the cubes
- // var scale = Mathf.Abs(Mathf.Sin(time));
- // transform.localScale = new Vector3(scale, scale, scale);
-
- // Uncomment this code to make the cube move from left to right and back
- // transform.position += (transform.localScale.x < 0.5 ? Vector3.left : Vector3.right) * deltaTime;
- }
- }
-
- void OnDestroy() {
- cubeTransforms.Dispose();
- }
- }
- }
- #endif
|