فهرست منبع

Added Vec2.Within and maybe found a bug

I'm not sure why, but our main.go doesn't save the change to our
User.Loc ... Translate works, but not Assign? Huh?
Apollo 10 ماه پیش
والد
کامیت
67b165ee67
2فایلهای تغییر یافته به همراه44 افزوده شده و 8 حذف شده
  1. 17 2
      main.go
  2. 27 6
      vec2.go

+ 17 - 2
main.go

@@ -1,12 +1,15 @@
 package main
 
-import "fmt"
+import (
+	"fmt"
+	"path"
+)
 
 func main() {
 	// The UserDB would be run on the server
 	// But since most/100% of this is examples, we'll setup one up
 	db := &UserDB{}
-	err := db.Open("test_users.db3")
+	err := db.Open(path.Join("test_data", "test_users.db3"))
 	if err != nil {
 		fmt.Println("Err:", err)
 		return
@@ -38,4 +41,16 @@ func main() {
 	} else {
 		fmt.Printf("Yay, %s has logged in\r\n", dummy.Name)
 	}
+	fmt.Printf("%s is at %s\r\n", dummy.Name, dummy.Loc.String())
+	r := dummy.Loc.Assign(0, 0)
+	if r == nil {
+		fmt.Println("Assign returns nil?")
+	} else {
+		fmt.Printf("Now %s\r\n", r.String())
+	}
+	err = db.SaveUser(dummy)
+	if err != nil {
+		fmt.Println("Err:", err)
+		return
+	}
 }

+ 27 - 6
vec2.go

@@ -164,9 +164,20 @@ func SortVec2(v1, v2 *Vec2) (*Vec2, *Vec2) {
 	return v1, v2
 }
 
+func (v *Vec2) Within(v1, v2 *Vec2) bool {
+	if v == nil || v1 == nil || v2 == nil {
+		return false
+	}
+	if v1.EqualTo(v2) && !v.EqualTo(v1) {
+		return false
+	}
+	v1, v2 = SortVec2(v1, v2)
+	return v.GreaterThan(v1) && v.LessThan(v2)
+}
+
 func (v *Vec2) Distance(axis ...int64) int64 {
 	if v == nil {
-		return 0
+		return -1
 	}
 	if len(axis) == 0 {
 		return v.X + v.Y
@@ -194,11 +205,8 @@ func (v *Vec2) Distance(axis ...int64) int64 {
 }
 
 func (v *Vec2) DistanceTo(o *Vec2) int64 {
-	if v == nil {
-		return 0
-	}
-	if o == nil {
-		return v.Distance()
+	if v == nil || o == nil {
+		return -1
 	}
 	x := v.X - o.X
 	y := v.Y - o.Y
@@ -224,6 +232,19 @@ func (v *Vec2) Abs() *Vec2 {
 	return v
 }
 
+func (v *Vec2) NegAbs() *Vec2 {
+	if v == nil {
+		return nil
+	}
+	if v.X > 0 {
+		v.X = -v.X
+	}
+	if v.Y > 0 {
+		v.Y = -v.Y
+	}
+	return v
+}
+
 func (v *Vec2) Negate() *Vec2 {
 	if v == nil {
 		return nil