public void LoadArt(CardArt artData) { if (string.IsNullOrEmpty(artData.imageDir)) { print("no dir"); art.color = Color.clear; } else if (!File.Exists(Path.Combine(CardLoader.GetSavePath(""), artData.imageDir))) { print("dir doesn't exist"); art.color = Color.clear; } else { LoadArt(CastleTools.LoadImage(Path.Combine(CardLoader.GetSavePath(""), artData.imageDir))); art.color = Color.white; } if (string.IsNullOrEmpty(artData.lightingDir)) { print("no dir"); lighting.color = Color.clear; } else if (!File.Exists(Path.Combine(CardLoader.GetSavePath(""), artData.lightingDir))) { print("dir doesn't exist"); lighting.color = Color.clear; } else { LoadLighting(CastleTools.LoadImage(Path.Combine(CardLoader.GetSavePath(""), artData.lightingDir))); lighting.color = Color.white; } ApplyMask(artData.masked); }
static void CreateButton() { Object prefabObject = AssetDatabase.LoadAssetAtPath <Object>("Assets/CastleFramework/Primitives/CastleButton.prefab"); CastleButton castleButton = ((GameObject)PrefabUtility.InstantiatePrefab(prefabObject)).GetComponent <CastleButton>(); string basePath = "Assets/Animations/Buttons/Button"; string _path = CastleTools.FindNonConflictingDir(basePath, ".controller"); AnimatorController control = AnimatorController.CreateAnimatorControllerAtPath(_path); AnimatorState spawn = AddState(control, "Spawn", false, false, true); AnimatorState normal = AddState(control, "Normal", true); AddExit(spawn, normal); AnimatorState enterHover = AddState(control, "EnterHover", false); AddParam(control, "EnterHover"); AddTransition(normal, enterHover, "ExitHover"); AnimatorState hover = AddState(control, "Hover"); AddExit(enterHover, hover); AnimatorState exitHover = AddState(control, "ExitHover", false); AddParam(control, "ExitHover"); AddTransition(hover, exitHover, "ExitHover"); AddExit(exitHover, normal); AnimatorState tap = AddState(control, "Tap", false, true); AnimatorState hold = AddState(control, "Hold"); AnimatorState release = AddState(control, "Release", false, true); AddExit(tap, hold); AddExit(release, normal); castleButton.anim.runtimeAnimatorController = control; Selection.activeGameObject = castleButton.gameObject; }
public override void Apply(CharacterData characterData) { Vector3 pivot = CastleTools.CenterOfVectors(characterData.vertexPos.modifiedPositions); for (int i = 0; i < 4; i++) { characterData.vertexPos.modifiedPositions[i] = CastleTools.RotatePointAroundPivot(characterData.vertexPos.modifiedPositions[i], pivot, Quaternion.Euler(0, 0, curve.Evaluate(characterData.Progress))); } }
public static void Drag(this CastleObject _object, float dragDelay = 10, bool instant = false) { if (instant) { _object.transform.position = CastleTools.Vec3RepZ(tapPosition, _object.transform.position.z); } else { _object.transform.position = Vector3.Lerp(_object.transform.position, CastleTools.Vec3RepZ(tapPosition, _object.transform.position.z), Time.deltaTime * dragDelay); } }
// Update is called once per frame void Update() { if (toggleObj.isOn) { fillImage.color = Color.Lerp(fillImage.color, CastleTools.Full(fillImage.color), Time.deltaTime * 15); textObj.color = Color.Lerp(textObj.color, Color.white, Time.deltaTime * 15); } else { fillImage.color = Color.Lerp(fillImage.color, CastleTools.Clear(fillImage.color), Time.deltaTime * 15); textObj.color = Color.Lerp(textObj.color, CastleTools.Full(fillImage.color), Time.deltaTime * 15); } }
public void EndTurn() { //SaveVision(); if (selectedObject) { selectedObject.Unselect(); } currentPlayer++; if (currentPlayer >= players.Length) { currentPlayer = 0; } //LoadVision(); turnDisplay.text = "PLAYER " + CastleTools.NumberWords(currentPlayer + 1); endTurn.Dispatch(); }
public void Init() { Texture2D artTex = null; artTex = CastleTools.LoadImage(GetArtPath()); if (art == null || art.Length == 0) { art = new SpriteBounds[1] { new SpriteBounds(0, 0, artTex.width, artTex.height) }; } for (int i = 0; i < art.Length; i++) { art[i].Init(artTex); } }
public static void Select(CastleObject _object, bool _override = false) { if (!selectedObject && !_object) { return; } if (_override) { if (selectedObject) { selectedObject.Release(); } selectedObject = _object; selectedObject.Tap(); return; } if (Input.GetMouseButtonDown(0)) { selectedObject = _object; selectedObject.Tap(); } else if (Input.GetMouseButton(0)) { if (selectedObject) { if (CheckObject(selectedObject.coll)) { selectedObject.Hold(); } else { selectedObject.DragOff(); } } } else if (Input.GetMouseButtonUp(0)) { if (selectedObject) { selectedObject.Release(); selectedObject = null; } } if (editingText) { if (Input.GetKeyDown(KeyCode.Return) || Input.GetMouseButtonDown(0)) { editingText = false; focusedText = null; } foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKeyDown(vKey)) { if (vKey == KeyCode.Backspace || vKey == KeyCode.Delete) { Debug.Log("delete"); focusedText.text = CastleTools.StripBack(focusedText.text, 1); } else if (vKey == KeyCode.Space) { focusedText.text += " "; } else if (CastleTools.ValidateText(vKey.ToString())) { focusedText.text += vKey.ToString(); } } } } }
// Updated OnPopulateMesh to user VertexHelper instead of mesh protected override void OnPopulateMesh(VertexHelper vh) { var pivot = rectTransform.pivot; var outer = -pivot.x * radius; var inner = -pivot.x * radius - thickness; var corners = new Vector2[4]; var rect = rectTransform.rect; corners[0] = new Vector2(rect.xMin, rect.yMin); corners[1] = new Vector2(rect.xMax, rect.yMin); corners[2] = new Vector2(rect.xMin, rect.yMax); corners[3] = new Vector2(rect.xMax, rect.yMax); var degrees = 360f / segments; var fa = (int)((segments + 1) * this.fillAmount); // Updated to new vertexhelper vh.Clear(); if (radius <= 0) { return; } // Changed initial values so the first polygon is correct when circle isn't filled var x = outer * Mathf.Cos(0); var y = outer * Mathf.Sin(0); var prevX = new Vector2(x, y) + offset; // Changed initial values so the first polygon is correct when circle isn't filled x = inner * Mathf.Cos(0); y = inner * Mathf.Sin(0); var prevY = new Vector2(x, y) + offset; var ifInvert = invert ? 3 : 0; for (var i = 0; i < fa - 1 + ifInvert; i++) { // Changed so there isn't a stray polygon at the beginning of the arc var rad = Mathf.Deg2Rad * ((i + 1) * degrees); var c = Mathf.Cos(rad); var s = Mathf.Sin(rad); //float x = outer * c; //float y = inner * c; if (!invert) { pos[0] = prevX; pos[1] = new Vector2(outer * c, outer * s) + offset; if (fill) { pos[2] = offset; pos[3] = offset; } else { pos[2] = new Vector2(inner * c, inner * s) + offset; pos[3] = prevY; } // Set values for uiVertices for (var j = 0; j < 4; j++) { uiVertices[j].color = color; uiVertices[j].position = pos[j]; uiVertices[j].uv0 = uvs[j]; } // Get the current vertex count var vCount = vh.currentVertCount; // If filled, we only need to create one triangle vh.AddVert(uiVertices[0]); vh.AddVert(uiVertices[1]); vh.AddVert(uiVertices[2]); // Create triangle from added vertices vh.AddTriangle(vCount, vCount + 2, vCount + 1); // If not filled we need to add the 4th vertex and another triangle if (!fill) { vh.AddVert(uiVertices[3]); vh.AddTriangle(vCount, vCount + 3, vCount + 2); } prevX = pos[1]; prevY = pos[2]; // Removed so we can just use a single triangle when not filled //vh.AddUIVertexQuad(SetVbo(new[] { pos0, pos1, pos2, pos3 }, new[] { uv0, uv1, uv2, uv3 })); } else { if (i /*SEGMENTS*/ < step) { pos[0] = prevX; pos[1] = new Vector2(outer * c, outer * s); var distVec = prevX - pos[1]; if (pos[0].x < rectTransform.rect.xMin) { if (distVec.x != 0) { distVec = distVec / distVec.x; } pos[0] = pos[1] + distVec * (rectTransform.rect.xMin - pos[1].x); } else if (pos[0].x > rectTransform.rect.xMax) { if (distVec.x != 0) { distVec = distVec / distVec.x; } pos[0] = pos[1] + distVec * (rectTransform.rect.xMax - pos[1].x); } else if (pos[0].y < rectTransform.rect.yMin) { if (distVec.y != 0) { distVec = distVec / distVec.y; } pos[0] = pos[1] + distVec * (rectTransform.rect.yMin - pos[1].y); } else if (pos[0].y > rectTransform.rect.yMax) { if (distVec.y != 0) { distVec = distVec / distVec.y; } pos[0] = pos[1] + distVec * (rectTransform.rect.yMax - pos[1].y); } distVec = pos[1] - prevX; if (pos[1].x < rectTransform.rect.xMin) { if (distVec.x != 0) { distVec = distVec / distVec.x; } pos[1] = pos[0] + distVec * (rectTransform.rect.xMin - pos[0].x); } else if (pos[1].x > rectTransform.rect.xMax) { if (distVec.x != 0) { distVec = distVec / distVec.x; } pos[1] = pos[0] + distVec * (rectTransform.rect.xMax - pos[0].x); } else if (pos[1].y < rectTransform.rect.yMin) { if (distVec.y != 0) { distVec = distVec / distVec.y; } pos[1] = pos[0] + distVec * (rectTransform.rect.yMin - pos[0].y); } else if (pos[1].y > rectTransform.rect.yMax) { if (distVec.y != 0) { distVec = distVec / distVec.y; } pos[1] = pos[0] + distVec * (rectTransform.rect.yMax - pos[0].y); } if (VectorOutOfBounds(pos[0]) || VectorOutOfBounds(pos[1])) { } else { pos[2] = CastleTools.CenterOfVectors(pos[0], pos[1]).ClosestVector(corners); for (var j = 0; j < 3; j++) { uiVertices[j].color = color; uiVertices[j].position = pos[j]; uiVertices[j].uv0 = uvs[j]; if (j < 2) { uiVertices[j].position += (Vector3)offset; } } var vCount = vh.currentVertCount; // If filled, we only need to create one triangle vh.AddVert(uiVertices[0]); vh.AddVert(uiVertices[1]); vh.AddVert(uiVertices[2]); // Create triangle from added vertices vh.AddTriangle(vCount, vCount + 2, vCount + 1); if (prevY != pos[2] && !VectorOutOfBounds(prevX)) { pos[0] = prevY; pos[1] = prevX; for (var j = 0; j < 3; j++) { uiVertices[j].color = color; uiVertices[j].position = pos[j]; uiVertices[j].uv0 = uvs[j]; if (j == 1 && i < (fa - 3)) { uiVertices[j].position += (Vector3)offset; } } vCount = vh.currentVertCount; // If filled, we only need to create one triangle vh.AddVert(uiVertices[0]); vh.AddVert(uiVertices[1]); vh.AddVert(uiVertices[2]); // Create triangle from added vertices vh.AddTriangle(vCount, vCount + 2, vCount + 1); } } prevX = new Vector2(outer * c, outer * s); prevY = pos[2]; } } } }