sync changes
This commit is contained in:
parent
857b08a39a
commit
1cbad2da04
|
@ -10,8 +10,8 @@ enum ElemType {
|
|||
water oil lava
|
||||
// Gas(?)
|
||||
vapour methane
|
||||
// Extra(?)
|
||||
soil biomass silt
|
||||
// Extra(?) / Compounds
|
||||
soil biomass silt grass
|
||||
|
||||
//// Secondary form
|
||||
glass concrete brick steel plastic cement
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
module bits
|
||||
|
||||
// Material Elem Record
|
||||
struct MaterialElem {
|
||||
mut:
|
||||
// n_bits
|
||||
bits_size int
|
||||
elem &Elem
|
||||
}
|
||||
|
||||
|
||||
// Many objects can share the same material
|
||||
// Can be compound / multiple elements per material
|
||||
// XXX TODO: ? bits amount values / calculations in percentages?
|
||||
// XXX like 20% wood 80% grass?
|
||||
// XXX how to calculate the amount of material/bits?
|
||||
// XXX via object mass/weight (must be specified)?
|
||||
|
||||
// XXX or 10% glass 90% concrete?
|
||||
// XXX do we really need such materials?
|
||||
|
||||
struct Material {
|
||||
mut:
|
||||
name string
|
||||
|
||||
//elems map[string]&Elem
|
||||
elems map[string]&MaterialElem
|
||||
}
|
||||
|
||||
fn new_material() &Material {
|
||||
m := &Material{}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// Add elem record
|
||||
fn (mut m Material) add_elem(bits_size int, elem &Elem) {
|
||||
|
||||
me := &MaterialElem{bits_size, elem}
|
||||
m.elems[elem.name] = me
|
||||
}
|
||||
|
||||
// Get elem record by name
|
||||
fn (m &Material) get_elem_name(elem_name string) &MaterialElem {
|
||||
|
||||
me := m.elems[elem_name]
|
||||
|
||||
//if isnil(me) {
|
||||
// panic(2)
|
||||
//}
|
||||
|
||||
return me
|
||||
}
|
|
@ -20,7 +20,8 @@ mut:
|
|||
// XXX use volume to calculate object bounds.
|
||||
|
||||
// Material/Elem
|
||||
elem &Elem // XXX use id/enum
|
||||
//elem &Elem // XXX use id/enum
|
||||
mat &Material
|
||||
|
||||
// Position in the world
|
||||
// XXX in map cells/coords?
|
||||
|
@ -34,7 +35,7 @@ mut:
|
|||
|
||||
// Object size/volume in bits
|
||||
// amount of bits
|
||||
bits_size int
|
||||
//bits_size int
|
||||
|
||||
// Bits of object's voxel model
|
||||
//bits [10][10]ObjectBit
|
||||
|
@ -42,7 +43,8 @@ mut:
|
|||
|
||||
fn new_object() &Object {
|
||||
o := &Object{
|
||||
elem: &Elem(0),
|
||||
//elem: &Elem(0),
|
||||
mat: &Material(0),
|
||||
//transform: new_transform(),
|
||||
}
|
||||
return o
|
||||
|
@ -59,14 +61,22 @@ fn (o &Object) volume() f32 {
|
|||
return bits_to_m3(o.bits_volume())
|
||||
}
|
||||
|
||||
// Calc mass in kg
|
||||
// Calc total mass in kg
|
||||
fn (o &Object) mass() f32 {
|
||||
mat_density := o.elem.density
|
||||
mat_volume := o.volume()
|
||||
|
||||
ret := mat_density * mat_volume
|
||||
mut total_mass := 0
|
||||
|
||||
return ret
|
||||
for _, me in o.mat.elems {
|
||||
|
||||
mat_density := me.elem.density
|
||||
mat_volume := me.bits_size
|
||||
|
||||
mass := mat_density * mat_volume
|
||||
|
||||
total_mass += mass
|
||||
}
|
||||
|
||||
return total_mass
|
||||
}
|
||||
|
||||
// Set size in meters
|
||||
|
|
Loading…
Reference in New Issue