void TopToolbar(Rect rect) { GUILayout.BeginArea(rect); using (new EditorGUILayout.HorizontalScope()) { GenericMenu menu = new GenericMenu(); if (EditorGUILayout.DropdownButton(new GUIContent("Add Behavior"), FocusType.Passive)) { menu.CreateTypeMenu <BehaviorTreeElement>(OnTypeSelected); menu.ShowAsContext(); } if (GUILayout.Button("Remove Behavior")) { var selection = _TreeView.GetSelection(); _TreeView.treeModel.RemoveElements(selection); } FilePath = GUILayout.TextField(FilePath); if (GUILayout.Button("Save Tree")) { FilePath = EditorUtility.SaveFilePanel("", FileDir, "New Behavior Tree", "asset"); BehaviorExtensions.SaveBehaviorAsset(null, FilePath, _BehaviorTreeManagerAsset, (Merge)_TreeView.treeModel.Root); } } GUILayout.EndArea(); }
void CreateNewTree() { CustomAssetUtility.CreateAsset <BehaviorTreeManagerAsset>(); _BehaviorTreeManagerAsset = (BehaviorTreeManagerAsset)Selection.activeObject; var root = new Merge("root", -1, -1); BehaviorExtensions.SaveBehaviorAsset(null, AssetDatabase.GetAssetPath(_BehaviorTreeManagerAsset), _BehaviorTreeManagerAsset, (Merge)root); }
private Sprite MakeSprite( JsonSprite def, Dictionary <string, JsonSpriteStaticDefinition> defs, SpriteForm xResource) { var sprite = new Sprite(xResource); var staticDef = defs[def.Type]; sprite.Body.BodyType = FarseerPhysics.Dynamics.BodyType.Static; sprite.Name = def.Type; sprite.Frames = staticDef.Frames; sprite.Position = new Vector2(def.Position[0], def.Position[1]); sprite.Center = new Vector2(staticDef.Center[0], staticDef.Center[1]); sprite.Rotation = MathUtil.DegreesToRadians(def.Angle); sprite.Alpha = def.Alpha; // Shapes sprite.SetShapes(staticDef.Shapes .Select(x => x.Create(sprite.Center)) .ToArray()); sprite.Children.AddRange( staticDef.Children.Select(child => MakeSprite(child, defs, xResource))); sprite.Children.AddRange( def.Children.Select(child => MakeSprite(child, defs, xResource))); // Behaviors //sprite.Behaviors["default"] = new AutoFrameBehavior(sprite); #if DEBUG sprite.AddBehavior(new AutoBorderBehavior()); #endif var finalBehaviors = new Dictionary <string, Dictionary <string, object> >(); foreach (var behavior in staticDef.Behaviors) { finalBehaviors.Add(behavior.Key, behavior.Value); } foreach (var behavior in def.Behaviors) { finalBehaviors[behavior.Key] = behavior.Value; } foreach (var behavior in finalBehaviors) { sprite.AddBehavior(BehaviorExtensions.Create(behavior.Key, behavior.Value)); } return(sprite); }
void InitializeBehaviorExtensionsDefault() { BehaviorExtensions.Add(new ExtensionElement("callbackDebug", typeof(CallbackDebugElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("callbackTimeouts", typeof(CallbackTimeoutsElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("clientCredentials", typeof(ClientCredentialsElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("clientVia", typeof(ClientViaElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("dataContractSerializer", typeof(DataContractSerializerElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceAuthorization", typeof(ServiceAuthorizationElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceCredentials", typeof(ServiceCredentialsElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceDebug", typeof(ServiceDebugElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceMetadata", typeof(ServiceMetadataPublishingElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceSecurityAudit", typeof(ServiceSecurityAuditElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceThrottling", typeof(ServiceThrottlingElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("serviceTimeouts", typeof(ServiceTimeoutsElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("synchronousReceive", typeof(SynchronousReceiveElement).AssemblyQualifiedName)); BehaviorExtensions.Add(new ExtensionElement("transactedBatching", typeof(TransactedBatchingElement).AssemblyQualifiedName)); }