| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // Copyright 2016 The G3N Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package util
- import (
- "github.com/g3n/engine/geometry"
- "github.com/g3n/engine/gls"
- "github.com/g3n/engine/graphic"
- "github.com/g3n/engine/material"
- "github.com/g3n/engine/math32"
- )
- // AxisHelper is a visual representation of the three axes.
- type AxisHelper struct {
- graphic.Lines
- }
- // NewAxisHelper returns a pointer to a new AxisHelper object.
- func NewAxisHelper(size float32) *AxisHelper {
- axis := new(AxisHelper)
- // Create geometry with three orthogonal lines starting at the origin
- geom := geometry.NewGeometry()
- positions := math32.NewArrayF32(0, 18)
- positions.Append(
- 0, 0, 0, size, 0, 0,
- 0, 0, 0, 0, size, 0,
- 0, 0, 0, 0, 0, size,
- )
- colors := math32.NewArrayF32(0, 18)
- colors.Append(
- 1, 0, 0, 1, 0.6, 0,
- 0, 1, 0, 0.6, 1, 0,
- 0, 0, 1, 0, 0.6, 1,
- )
- geom.AddVBO(gls.NewVBO(positions).AddAttrib(gls.VertexPosition))
- geom.AddVBO(gls.NewVBO(colors).AddAttrib(gls.VertexColor))
- // Creates line material
- mat := material.NewBasic()
- // Initialize lines with the specified geometry and material
- axis.Lines.Init(geom, mat)
- return axis
- }
|