public override void InitializeAcademy() { FloatProperties.RegisterCallback("gridSize", f => { MainCamera.transform.position = new Vector3(-(f - 1) / 2f, f * 1.25f, -(f - 1) / 2f); MainCamera.orthographicSize = (f + 5f) / 2f; }); }
public override void InitializeAcademy() { if (spawnManager == null) { spawnManager = FindObjectOfType <SpawnManager>(); } FloatProperties.RegisterCallback("bullet_speed", f => { spawnManager.bulletSpeed = 20; }); }
public override void InitializeAcademy() { Monitor.verticalOffset = 1f; // We increase the Physics solver iterations in order to // make walker joint calculations more accurate. Physics.defaultSolverIterations = 12; Physics.defaultSolverVelocityIterations = 12; Time.fixedDeltaTime = 0.01333f; //(75fps). default is .2 (60fps) Time.maximumDeltaTime = .15f; // Default is .33 FloatProperties.RegisterCallback("gravity", f => { Physics.gravity = new Vector3(0, -f, 0); }); }
//This function is called when the academy first gets initialized public override void InitializeAcademy() { FishSpeed = 0f; FeedRadius = 0f; //setup code to be called every time fish-speed parameter changes //during curriculum learning FloatProperties.RegisterCallback("fish_speed", f => { FishSpeed = f; }); //setup code to be called every time feed-radius parameter changes //during curriculum learning FloatProperties.RegisterCallback("feed_radius", f => { FeedRadius = f; }); }
public override void InitializeAcademy() { FishSpeed = 0f; FeedRadius = 0f; FloatProperties.RegisterCallback("fish_speed", f => { FishSpeed = f; }); FloatProperties.RegisterCallback("feed_radius", f => { FeedRadius = f; }); }
//Academy gets vars from .json file that can increase the difficulty for the paddle //training as the paddle gets better and getting rewards public override void InitializeAcademy() { //default values paddleXScale = 1f; ballSpeed = 20f; FloatProperties.RegisterCallback("paddleXScale", f => { paddleXScale = f; }); FloatProperties.RegisterCallback("ballSpeed", f => { ballSpeed = f; }); }
public override void AcademyReset() { //get the tank areas if (tankAreas == null) { tankAreas = FindObjectsOfType <TankArea>(); } //set up areas foreach (TankArea tankArea in tankAreas) { //set up values from curriculum FloatProperties.RegisterCallback("spawn_radius", f => { tankArea.spawnRadius = f; }); //reset objects inside the area tankArea.ResetArea(); } }
public override void InitializeAcademy() { FloatProperties.RegisterCallback("gravity", f => { Physics.gravity = new Vector3(0, -f, 0); }); }
protected override void OnSceneLoad(SceneOperationKind operation, ReadOnlyDictionary <int, ObjectCtrlInfo> loadedItems) { var data = GetExtendedData(); if (operation == SceneOperationKind.Clear || operation == SceneOperationKind.Load) { RendererPropertyList.Clear(); MaterialFloatPropertyList.Clear(); MaterialColorPropertyList.Clear(); MaterialTexturePropertyList.Clear(); TextureDictionary.Clear(); } if (data == null) { return; } var importDictionary = new Dictionary <int, int>(); if (operation == SceneOperationKind.Load) { if (data.data.TryGetValue(nameof(TextureDictionary), out var texDic) && texDic != null) { TextureDictionary = MessagePackSerializer.Deserialize <Dictionary <int, byte[]> >((byte[])texDic); } } else if (operation == SceneOperationKind.Import) { if (data.data.TryGetValue(nameof(TextureDictionary), out var texDic) && texDic != null) { Dictionary <int, byte[]> importTextureDictionary = MessagePackSerializer.Deserialize <Dictionary <int, byte[]> >((byte[])texDic); foreach (var x in importTextureDictionary) { importDictionary[x.Key] = SetAndGetTextureID(x.Value); } } } else if (operation == SceneOperationKind.Clear) { return; } if (data.data.TryGetValue(nameof(RendererPropertyList), out var rendererProperties) && rendererProperties != null) { var loadedRendererProperties = MessagePackSerializer.Deserialize <List <RendererProperty> >((byte[])rendererProperties); foreach (var loadedRendererProperty in loadedRendererProperties) { if (loadedItems.TryGetValue(loadedRendererProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var renderer in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { if (renderer.NameFormatted() == loadedRendererProperty.RendererName) { RendererPropertyList.Add(new RendererProperty(GetObjectID(objectCtrlInfo), loadedRendererProperty.RendererName, loadedRendererProperty.Property, loadedRendererProperty.Value, loadedRendererProperty.ValueOriginal)); SetRendererProperty(renderer, loadedRendererProperty.Property, int.Parse(loadedRendererProperty.Value)); } } } } } if (data.data.TryGetValue(nameof(MaterialFloatPropertyList), out var materialFloatProperties) && materialFloatProperties != null) { var loadedMaterialFloatProperties = MessagePackSerializer.Deserialize <List <MaterialFloatProperty> >((byte[])materialFloatProperties); foreach (var loadedMaterialFloatProperty in loadedMaterialFloatProperties) { if (loadedItems.TryGetValue(loadedMaterialFloatProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var rend in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { foreach (var mat in rend.materials) { if (mat.NameFormatted() == loadedMaterialFloatProperty.MaterialName && mat.HasProperty($"_{loadedMaterialFloatProperty.Property}") && FloatProperties.Contains(loadedMaterialFloatProperty.Property)) { var valueOriginal = mat.GetFloat($"_{loadedMaterialFloatProperty.Property}").ToString(); MaterialFloatPropertyList.Add(new MaterialFloatProperty(GetObjectID(objectCtrlInfo), loadedMaterialFloatProperty.MaterialName, loadedMaterialFloatProperty.Property, loadedMaterialFloatProperty.Value, valueOriginal)); SetFloatProperty(ociItem.objectItem, mat, loadedMaterialFloatProperty.Property, loadedMaterialFloatProperty.Value, ObjectType.StudioItem); } } } } } } if (data.data.TryGetValue(nameof(MaterialColorPropertyList), out var materialColorProperties) && materialColorProperties != null) { var loadedMaterialColorProperties = MessagePackSerializer.Deserialize <List <MaterialColorProperty> >((byte[])materialColorProperties); foreach (var loadedMaterialColorProperty in loadedMaterialColorProperties) { if (loadedItems.TryGetValue(loadedMaterialColorProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var rend in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { foreach (var mat in rend.materials) { if (mat.NameFormatted() == loadedMaterialColorProperty.MaterialName && mat.HasProperty($"_{loadedMaterialColorProperty.Property}") && ColorProperties.Contains(loadedMaterialColorProperty.Property)) { var valueOriginal = mat.GetColor($"_{loadedMaterialColorProperty.Property}"); MaterialColorPropertyList.Add(new MaterialColorProperty(GetObjectID(objectCtrlInfo), loadedMaterialColorProperty.MaterialName, loadedMaterialColorProperty.Property, loadedMaterialColorProperty.Value, valueOriginal)); SetColorProperty(ociItem.objectItem, mat, loadedMaterialColorProperty.Property, loadedMaterialColorProperty.Value, ObjectType.StudioItem); } } } } } } if (data.data.TryGetValue(nameof(MaterialTexturePropertyList), out var materialTextureProperties) && materialTextureProperties != null) { var loadedMaterialTextureProperties = MessagePackSerializer.Deserialize <List <MaterialTextureProperty> >((byte[])materialTextureProperties); foreach (var loadedMaterialTextureProperty in loadedMaterialTextureProperties) { if (loadedItems.TryGetValue(loadedMaterialTextureProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var rend in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { foreach (var mat in rend.materials) { if (mat.NameFormatted() == loadedMaterialTextureProperty.MaterialName && mat.HasProperty($"_{loadedMaterialTextureProperty.Property}") && TextureProperties.Contains(loadedMaterialTextureProperty.Property)) { int texID = operation == SceneOperationKind.Import ? importDictionary[loadedMaterialTextureProperty.TexID] : loadedMaterialTextureProperty.TexID; MaterialTextureProperty newTextureProperty = new MaterialTextureProperty(GetObjectID(objectCtrlInfo), loadedMaterialTextureProperty.MaterialName, loadedMaterialTextureProperty.Property, texID); MaterialTexturePropertyList.Add(newTextureProperty); SetTextureProperty(ociItem.objectItem, mat, newTextureProperty.Property, newTextureProperty.Texture, ObjectType.StudioItem); } } } } } } }
protected override void OnSceneLoad(SceneOperationKind operation, ReadOnlyDictionary <int, ObjectCtrlInfo> loadedItems) { var data = GetExtendedData(); if (operation == SceneOperationKind.Clear || operation == SceneOperationKind.Load) { StudioItemRendererPropertyList.Clear(); StudioItemMaterialFloatPropertyList.Clear(); StudioItemMaterialColorPropertyList.Clear(); } if (data == null) { return; } if (data.data.TryGetValue("RendererProperties", out var rendererProperties) && rendererProperties != null) { var loadedRendererProperties = MessagePackSerializer.Deserialize <List <RendererProperty> >((byte[])rendererProperties); foreach (var loadedRendererProperty in loadedRendererProperties) { if (loadedItems.TryGetValue(loadedRendererProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var renderer in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { if (renderer.NameFormatted() == loadedRendererProperty.RendererName) { StudioItemRendererPropertyList.Add(new RendererProperty(GetObjectID(objectCtrlInfo), loadedRendererProperty.RendererName, loadedRendererProperty.Property, loadedRendererProperty.Value, loadedRendererProperty.ValueOriginal)); SetRendererProperty(renderer, loadedRendererProperty.Property, int.Parse(loadedRendererProperty.Value)); } } } } } if (data.data.TryGetValue("MaterialFloatProperties", out var materialFloatProperties) && materialFloatProperties != null) { var loadedMaterialFloatProperties = MessagePackSerializer.Deserialize <List <MaterialFloatProperty> >((byte[])materialFloatProperties); foreach (var loadedMaterialFloatProperty in loadedMaterialFloatProperties) { if (loadedItems.TryGetValue(loadedMaterialFloatProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var rend in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { foreach (var mat in rend.materials) { if (mat.HasProperty($"_{loadedMaterialFloatProperty.Property}") && FloatProperties.Contains(loadedMaterialFloatProperty.Property)) { var valueOriginal = mat.GetFloat($"_{loadedMaterialFloatProperty.Property}").ToString(); StudioItemMaterialFloatPropertyList.Add(new MaterialFloatProperty(GetObjectID(objectCtrlInfo), loadedMaterialFloatProperty.MaterialName, loadedMaterialFloatProperty.Property, loadedMaterialFloatProperty.Value, valueOriginal)); SetFloatProperty(ociItem.objectItem, mat, loadedMaterialFloatProperty.Property, loadedMaterialFloatProperty.Value); } } } } } } if (data.data.TryGetValue("MaterialColorProperties", out var materialColorProperties) && materialColorProperties != null) { var loadedMaterialColorProperties = MessagePackSerializer.Deserialize <List <MaterialColorProperty> >((byte[])materialColorProperties); foreach (var loadedMaterialColorProperty in loadedMaterialColorProperties) { if (loadedItems.TryGetValue(loadedMaterialColorProperty.ID, out ObjectCtrlInfo objectCtrlInfo) && objectCtrlInfo is OCIItem ociItem) { foreach (var rend in ociItem.objectItem.GetComponentsInChildren <Renderer>()) { foreach (var mat in rend.materials) { if (mat.HasProperty($"_{loadedMaterialColorProperty.Property}") && ColorProperties.Contains(loadedMaterialColorProperty.Property)) { var valueOriginal = mat.GetColor($"_{loadedMaterialColorProperty.Property}"); StudioItemMaterialColorPropertyList.Add(new MaterialColorProperty(GetObjectID(objectCtrlInfo), loadedMaterialColorProperty.MaterialName, loadedMaterialColorProperty.Property, loadedMaterialColorProperty.Value, valueOriginal)); SetColorProperty(ociItem.objectItem, mat, loadedMaterialColorProperty.Property, loadedMaterialColorProperty.Value); } } } } } } }
private ControlProperties CreateProperties(PropertyType type, PropertyInfo info, ExposePropertyAttribute attribute) { ControlProperties control = null; switch (type) { case PropertyType.AnimationCurve: control = new AnimationCurveProperties(this, info, attribute); break; case PropertyType.Boolean: control = new BooleanProperties(this, info, attribute); break; case PropertyType.Bounds: control = new BoundsProperties(this, info, attribute); break; case PropertyType.Color: control = new ColorProperties(this, info, attribute); break; case PropertyType.Enum: control = new EnumProperties(this, info, attribute); break; case PropertyType.Float: control = new FloatProperties(this, info, attribute); break; case PropertyType.Integer: control = new IntegerProperties(this, info, attribute); break; case PropertyType.LayerMask: control = new LayerMaskProperties(this, info, attribute); break; case PropertyType.ObjectReference: control = new UnityObjectProperties(this, info, attribute); break; case PropertyType.Quaternion: control = new QuaternionProperties(this, info, attribute); break; case PropertyType.Rect: control = new RectProperties(this, info, attribute); break; case PropertyType.String: control = new StringProperties(this, info, attribute); break; case PropertyType.Vector2: control = new Vector2Properties(this, info, attribute); break; case PropertyType.Vector3: control = new Vector3Properties(this, info, attribute); break; case PropertyType.Vector4: control = new Vector4Properties(this, info, attribute); break; case PropertyType.SerializableObject: control = new SerializableObjectProperties(this, info, attribute); break; case PropertyType.Array: control = new ArrayProperties(this, info, attribute); break; } if (control != null) { var margin = control.Control.Margin; margin.Left += 2; margin.Top += 2; margin.Bottom += 2; control.Control.Margin = margin; } return(control); }