Example #1
0
func main() {

	fmt.Println("starting")
	GT.EngineStart()

	s, _ := Graphics.NewBasicScene()

	// create text rendering components
	textRend := Components.NewTextRenderer()
	textRend.SetFont("Raleway")
	textRend.SetText("Hello World From GT!?")
	textRend.SetSize(14)
	textRend.SetColor(1, .2, .1, 1)

	textRend2 := Components.NewTextRenderer()
	textRend2.SetFont("Fantasque Sans Mono Regular")
	textRend2.SetSize(60)
	textRend2.SetText("Hello World Pt.2")

	// create nodes for them so we can apply transformation
	node1 := Components.NewNode("Text1")
	node1.Transform().Translate(100, 100, 0)
	node1.AddComponent(textRend)

	node2 := Components.NewNode("Text2")
	node2.Transform().Rotate(.3, 0, 0, 1)
	node2.Transform().Translate(150, 150, 0)
	node2.AddComponent(textRend2)

	s.RootNode.AddNode(node1)
	s.RootNode.AddNode(node2)

	s.Start()

}
Example #2
0
func main() {

	fmt.Println("starting")
	GT.EngineStart()

	simpleScene, _ := Graphics.New3DScene()

	node := Components.NewNode("new_image")
	node.AddComponent(&Spin{})
	node.Transform().Translate(-4, -3, 0)
	// create a model based on obj file
	rend := Components.NewModelRenderer()
	rend.SetModel(GT.AssetsModels+"textured_box.obj", GT.AssetsModels+"textured_box.mtl")
	node.AddComponent(rend)

	node2 := Components.NewNode("new_image2")
	// node2.AddComponent(&Spin{})
	// create a model based on obj file
	rend2 := Components.NewModelRenderer()
	rend2.SetModel(GT.AssetsModels+"walk.obj", GT.AssetsModels+"walk.mtl")
	node2.AddComponent(rend2)
	node2.Transform().Translate(4, -3, 0)
	node2.Transform().Rotate(.3, 0, 1, 0)

	node3 := Components.NewNode("new_image3")
	node3.AddComponent(&Spin{})
	// node2.AddComponent(&Spin{})
	// create a model based on obj file
	rend3 := Components.NewModelRenderer()
	rend3.SetModel(GT.AssetsModels+"test.obj", GT.AssetsModels+"test.mtl")
	node3.AddComponent(rend3)
	node3.Transform().Translate(4, 3, 0)
	node3.Transform().Rotate(.3, 0, 1, 0)

	node4 := Components.NewNode("new_image4")
	node4.AddComponent(&Spin{})
	rend4 := Components.NewModelRenderer()
	node4.AddComponent(rend4)
	// node2.AddComponent(&Spin{})
	// create a model based on obj file
	//node4.Transform().Translate(0, 0, 0)
	node4.Transform().Rotate(.3, 0, 1, 0)
	anim := Components.OBJAnimation(GT.AssetsModels + "SimpleAnimation")

	rend4.AnimationManager.AddAnimation(anim, "anim1")
	rend4.AnimationManager.SetCurrentAnimation("anim1")

	// attach the node to our scene
	simpleScene.RootNode.AddNode(node)
	simpleScene.RootNode.AddNode(node2)
	simpleScene.RootNode.AddNode(node3)
	simpleScene.RootNode.AddNode(node4)

	// start the scene to render our setup
	simpleScene.Start()
}
Example #3
0
func main() {

	fmt.Println("starting")
	GT.EngineStart()

	simpleScene, _ := Graphics.NewBasicScene()
	node := Components.NewNode("new_image")

	// create a png based sprite
	rend := Components.NewSpriteRenderer()
	// myImagePath, _ := filepath.Abs("../Assets/Images/test.png")
	rend.SetImage(GT.AssetsImages + "test.png")

	// attach the sprite to our node, and transform if desired
	node.AddComponent(rend)

	node.Transform().Translate(400, 400, 0)
	node.Transform().Scale(.7, .7, 0)

	// attach the node to our scene
	simpleScene.RootNode.AddNode(node)

	// start the scene to render our setup
	simpleScene.Start()
}
Example #4
0
func main() {

	fmt.Println("starting")

	// create the foundation: a new window, basic scene, and game component (node)
	GT.EngineStart()
	simpleScene, _ := Graphics.NewBasicScene()
	node := Components.NewNode("new_image")

	// create our renderer and our animation objects
	rend := Components.NewSpriteRenderer()

	manager := rend.AnimationManager // will be replaced by GetComponent(AnimationManager) when scripting etc.

	anim := Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 4, 1)

	// you can append other animations or images
	anim.AppendAnimation(Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 6, 2))
	anim.AppendAnimation(Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 5, 3))
	anim.AppendAnimation(Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 4, 4))
	anim.AppendAnimation(Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 3, 5))
	anim.AppendAnimation(Components.SpliceSpriteSheetAnimation(GT.AssetsImages+"Dog.png", 90, 58, 4, 6))

	anim.Append(GT.AssetsImages + "test.png")

	// if you can make use of a full sprite sheet for one animation, then use the SpliceFullSpriteSheetAnimation method
	//anim2.SpliceFullSpriteSheetAnimation(GT.AssetsImages+"tomatohead1.png", 12, 12)

	anim.SetFrequency(0.25, false) // set frequency of toggle to every 1/4 second
	// anim.SetFrequency(10, true) // set frequency of toggle to every 10 frames

	// you can swap images in the animation, or remove them by number in the list
	anim.Reorder(1, 27) // one-based input
	anim.Remove(1)      // remove test.png...

	manager.AddAnimation(anim, "dog_left_facing")
	manager.SetCurrentAnimation("dog_left_facing") // script components can make use of this...

	// animations can be retrieved for further configuration if desired
	anim = manager.GetAnimation("dog_left_facing")
	anim.SetAsOneTimeOnly(true)
	simpleScene.SetFPS(30)

	// attach the sprite to our node, and transform if desired
	node.AddComponent(rend)
	node.AddComponent(&RunLeft{}) // TODO: remove this for a scripting example
	//node.Transform().Scale(3, 3) // NOTE: scaling doesn't seem perfect for sub images/animations?
	node.Transform().Translate(400, 400, 0)

	// attach the node to our scene
	simpleScene.RootNode.AddNode(node)

	// start the scene to render our setup
	simpleScene.Start()

}
Example #5
0
// New3DScene : start a new simple 3D scene of orthographic orientation
func New3DScene() (BaseScene, error) {

	s := BaseScene{RootNode: Components.NewNode("RootNode"), window: &Window.MainWindow}
	s.fps = 0
	s.timestart = int32(time.Now().Unix())
	s.update = true

	Opengl.SetViewPort(int32(s.window.Width), int32(s.window.Height))
	Opengl.SetPerspective(s.window.Width, s.window.Height)

	return s, nil
}
Example #6
0
func main() {

	fmt.Println("starting")
	GT.EngineStart()

	s, _ := Graphics.NewBasicScene()

	nodebak := Components.NewNode("Person")
	nodebak.Transform().Translate(100, 100)

	node := Components.NewNode("Person2")

	textRend := Components.NewTextRenderer()
	textRend.SetFont("Raleway")
	textRend.SetText("Hello World From GT!?")

	textRend.SetSize(14)
	textRend.SetColor(1, .2, .1, 1)
	node.Transform().Translate(150, 100)

	textRend2 := Components.NewTextRenderer()
	textRend2.SetFont("Fantasque Sans Mono Regular")
	textRend2.SetSize(60)
	textRend2.SetText("This is Second Font Fantasque Bold")

	rend := Components.NewSpriteRenderer()
	rend.SetImage(GT.AssetsImages + "test.png")
	nodebak.Transform().Scale(.5, .5)
	nodebak.Transform().Rotate(1.2)
	nodebak.AddComponent(rend)
	nodebak.AddComponent(textRend2)
	node.AddComponent(textRend)
	s.RootNode.AddNode(node)
	s.RootNode.AddNode(nodebak)

	s.Start()

}
Example #7
0
func main() {

	fmt.Println("starting")
	// // defer profile.Start(profile.CPUProfile).Stop()
	// w := Window.NewWindowedWindow("test", 600, 800)
	GT.EngineStart()
	s, _ := Graphics.NewBasicScene()
	g := TestGame{BaseScene: &s}

	// 500 sprites does about 38 fps on my laptop
	for i := 0; i < 500; i++ {
		nodebak := Components.NewNode("Person")
		nodebak.Transform().Translate(400, 400, 0)
		node := Components.NewNode("Person2")

		node.Transform().Translate(100, 100, 0)
		node.AddNode(nodebak)
		rend := Components.NewSpriteRenderer()
		rend.SetImage(GT.AssetsImages + "test.png")
		nodebak.Transform().Rotate(20, 0, 0, 1)
		nodebak.AddComponent(rend)

		rend2 := Components.NewSpriteRenderer()
		rend2.SetSubImage(GT.AssetsImages+"smiley.png", image.Rectangle{image.Point{30, 30}, image.Point{50, 50}})
		nodebak2 := Components.NewNode("Person")
		nodebak2.Transform().Translate(50, 50, 0)
		nodebak2.AddComponent(rend2)
		// sr := nodebak2.GetComponent("SpriteRenderer")
		// fmt.Println(sr)

		node.AddNode(nodebak2)

		g.BaseScene.RootNode.AddNode(node)
	}
	g.Start()

}